数学

向量和矩阵操作等和一些数学类。

class vec2

vec2.length() -> float

得到二维向量的长度
返回值
- float类型的长度值

vec2.length2() -> float

得到二维向量长度的平方
返回值
- float类型长度的平方

vec2.normalize() -> Type[vec2]

得到经过归一化的向量
返回值
- 归一化的向量

class vec3

vec3.length() -> float

得到三维向量的长度
返回值
- float类型的长度值

vec3.length2() -> float

得到三维向量长度的平方
返回值
- float类型长度的平方

vec3.normalize() -> Type[vec3]

得到经过归一化的向量
返回值
- 归一化的向量

class vec4

vec4.length() -> float

得到四维向量的长度
返回值
- float类型的长度值

vec4.length2() -> float

得到四维向量长度的平方
返回值
- float类型长度的平方

vec4.normalize() -> Type[vec4]

得到经过归一化的向量,这里对x、y、z、w都归一化
返回值
- 归一化的向量

vec4.normalize3() -> Type[vec4]

得到经过归一化的向量,这里仅对x、y、z归一化
返回值
- 归一化的向量

class quat

quat.quat(x: float, y: float, z: float, angle: float)

x, y, z表示绕轴旋转,angle表示旋转的角度

quat.quat(x: float, y: float, z: float)

x, y, z表示分别绕轴旋转的角度

quat.getMat3() -> Type[mat3]

四元组转换为矩阵
返回值
- 经过转换后的矩阵

quat.getAngle(axis: Type[vec3]) -> float

得到指定轴上的旋转角度
参数
- 指定轴数值,如x轴为(1, 0, 0)
返回值
- 旋转角度float

quat.normalize() -> quat

得到经过归一化的向量,这里对x、y、z、w都归一化
返回值
- 归一化的向量

quat.getEule() -> Type[vec3]

得到欧拉角 返回值
- 欧拉角为vec3类型

class mat3

mat3.setRow(row: int, v: Type[vec3])

设置矩阵的行数值
参数
- row表示第row行
- v表示一行的数值

mat3.getRow(row: int) -> Type[vec3]

得到矩阵的行数值
参数
- 指定行数值
返回值
- 获取vec3的行数值

mat3.setColumn(column: int, v: Type[vec3])

设置矩阵的列数值
参数
- column表示第column列
- v表示要输入指定列的数值

mat3.getColumn(column: int) -> Type[vec3]

得到矩阵的列数值
参数
- 指定列数值
返回值
- 获取vec3的列数值

mat3.setDiagonal(v: Type[vec3])

设置矩阵对角上的数值,m00、m11、m22
参数
- 指定vec3数值

mat3.getDiagonal() -> Type[vec3]

得到矩阵的对角上数值,vec3(m00, m11, m22)
返回值
- 获取vec3的对角数值

mat3.setZero()

将矩阵所有的值置为0

mat3.setIdentity()

将矩阵初始化为单位矩阵

mat3.setSkewSymmetric(v: Type[vec3])

设置斜对称矩阵
参数
- m01 = -v.z; m02 = v.y; m12 = -v.x; m10 = v.z; m20 = -v.y; m21 = v.x

mat3.setRotate(axis: Type[vec3], angle: float)

设置矩阵的旋转量
参数
- axis表示旋转轴,如x轴为(1, 0, 0)
- angle表示旋转的角度

mat3.setRotateX(angle: float)

设置矩阵旋转X轴的角度
参数
- angle表示旋转的角度

mat3.setRotateY(angle: float)

设置矩阵旋转Y轴的角度
参数
- angle表示旋转的角度

mat3.setRotateZ(angle: float)

设置矩阵旋转Z轴的角度
参数
- angle表示旋转的角度

mat3.setScale(v: Type[vec3])

设置矩阵的缩放值
参数
- v表示在三个方向上的缩放

mat3.getQuat() -> quat

矩阵转换为四元组
返回值
- 获取转换后的四元组quat

class mat4

mat4.setRow(row: int, v: Type[vec4])

设置矩阵的行数值
参数
- row表示第row行
- v表示一行的数值

mat4.setRow3(row: int, v: Type[vec3])

设置矩阵的行数值
参数
- row表示第row行
- v表示一行的前三个数值

mat4.getRow(row: int) -> Type[vec4]

得到矩阵的行数值
参数
- 指定行数值
返回值
- 获取vec4的行数值

mat4.getRow3(row: int) -> Type[vec3]

得到矩阵的行数值
参数
- 指定行数值
返回值
- 获取vec3的行数值

mat4.setColumn(column: int, v: Type[vec4])

设置矩阵的列数值
参数
- column表示第column列
- v表示要输入指定列的数值

mat4.setColumn3(column: int, v: Type[vec3])

设置矩阵的列数值
参数
- column表示第column列
- v表示一列的前三个数值

mat4.getColumn(column: int) -> Type[vec4]

得到矩阵的列数值
参数
- 指定列数值
返回值
- 获取vec4的列数值

mat4.getColumn3(column: int) -> Type[vec3]

得到矩阵的列数值
参数
- 指定列数值
返回值
- 获取vec3的列数值

mat4.setDiagonal(v: Type[vec4])

设置矩阵对角上的数值,m00、m11、m22、m33
参数
- 指定vec4数值

mat4.getDiagonal() -> Type[vec4]

得到矩阵的对角上数值,vec4(m00, m11, m22, m33)
返回值
- 获取vec4的对角数值

mat4.setZero()

将矩阵所有的值置为0

mat4.setIdentity()

将矩阵初始化为单位矩阵

mat4.setTranslate(v: Type[vec3])

设置矩阵的平移量
参数
- 平移v

mat4.setRotate(axis: Type[vec3], angle: float)

设置矩阵的旋转量
参数
- axis表示旋转轴,如x轴为(1, 0, 0)
- angle表示旋转的角度

mat4.setRotateX(angle: float)

设置矩阵旋转X轴的角度
参数
- angle表示旋转的角度

mat4.setRotateY(angle: float)

设置矩阵旋转Y轴的角度
参数
- angle表示旋转的角度

mat4.setRotateZ(angle: float)

设置矩阵旋转Z轴的角度
参数
- angle表示旋转的角度

mat4.setScale(v: Type[vec3])

设置矩阵的缩放值
参数
- v表示在三个方向上的缩放 -

全局函数

PI() -> float

获取3.1415....
返回值
- 返回3.1415....

LOG2() -> float

获取Log2
返回值
- 返回Log2

SQRT2() -> float

获取根号2
返回值
- 根号2

DEG2RAD() -> float

角度转弧度
返回值
- 弧度值

RAD2DEG() -> float

弧度转角度
返回值
- 角度值

sign(v: float) -> float

判断v的正负值
返回值
- 如果v >= 0.0则返回1,如果v < 0.0则返回-1.0

abs(v: int) -> int

得到绝对值
返回值
- 返回v的绝对值

abs(v: int) -> int

得到绝对值
返回值
- 返回v的绝对值

abs(v: float) -> float

得到绝对值
返回值
- 返回v的绝对值

abs(v: float) -> float

得到绝对值
返回值
- 返回v的绝对值

ceil(v: float) -> float

返回上限值
返回值
- 返回v的上限值,如 3.0 = ceil(2.3)

ceil(v: float) -> float

返回上限值
返回值
- 返回v的上限值,如 3.0 = ceil(2.3)

floor(v: float) -> float

返回下限值
返回值
- 返回v的下限值,如 2.0 = floor(2.3)

floor(v: float) -> float

返回下限值
返回值
- 返回v的下限值,如 2.0 = floor(2.3)

frac(v: float) -> float

得到浮点数部分
返回值
- 返回v的下限值,如 0.3 = frac(2.3)

frac(v: float) -> float

得到浮点数部分
返回值
- 返回v的下限值,如 0.3 = frac(2.3)

sqrt(v: float) -> float

计算平方根
返回值
- 返回v的平方根

sqrt(v: float) -> float

计算平方根
返回值
- 返回v的平方根

pow(x: float, y: float) -> float

计算x的y次方
返回值
- 返回x的y次方

pow(v: float) -> float

计算x的y次方
返回值
- 返回x的y次方

exp(v: float) -> float

计算v的指数
返回值
- 返回v的指数

exp(v: float) -> float

计算v的指数
返回值
- 返回v的指数

log(v: float) -> float

计算v的对数
返回值
- 返回v的对数

log(v: float) -> float

计算v的对数
返回值
- 返回v的对数

sin(v: float) -> float

计算v的sin值
返回值
- 返回v的sin值

sin(v: float) -> float

计算v的sin值
返回值
- 返回v的sin值

cos(v: float) -> float

计算v的cos值
返回值
- 返回v的cos值

cos(v: float) -> float

计算v的cos值
返回值
- 返回v的cos值

tan(v: float) -> float

计算v的tan值
返回值
- 返回v的tan值

tan(v: float) -> float

计算v的tan值
返回值
- 返回v的tan值

asin(v: float) -> float

计算v的asin值
返回值
- 返回v的asin值

asin(v: float) -> float

计算v的asin值
返回值
- 返回v的asin值

acos(v: float) -> float

计算v的acos值
返回值
- 返回v的acos值

acos(v: float) -> float

计算v的acos值
返回值
- 返回v的acos值

atan(v: float) -> float

计算v的atan值
返回值
- 返回v的atan值

atan(v: float) -> float

计算v的atan值
返回值
- 返回v的atan值

vec2Zero() -> Type[vec2]

获取vec2(0, 0)
返回值
- 返回vec2(0, 0)

vec2One() -> Type[vec2]

获取vec2(1, 1)
返回值
- 返回vec2(1, 1)

vec2Epsilon() -> Type[vec2]

获取vec2(1e-6f, 1e-6f)
返回值
- 返回vec2(1e-6f, 1e-6f)

vec2Infinity() -> Type[vec2]

获取vec2(1e+9f, 1e+9f)
返回值
- 返回vec2(1e+9f, 1e+9f)

dot(v0: Type[vec2], v1: Type[vec2]) -> float

两个向量点乘
返回值
- 点乘的值

lerp(v0: Type[vec2], v1: Type[vec2], k: float) -> Type[vec2]

求vec2的插值
参数
- v0代表起始值
- v1代表终点值
- k代表插值的百分比,范围从0-1
返回值
- 返回插值的结果

cross(v0: Type[vec2], v1: Type[vec2]) -> float

求v0和v1的叉乘结果
返回值
- 返回插值的结果

min(v0: Type[vec2], v1: Type[vec2]) -> Type[vec2]

比较v0和v1的值
返回值
- 返回更小的值

max(v0: Type[vec2], v1: Type[vec2]) -> Type[vec2]

比较v0和v1的值
返回值
- 返回更大的值

clamp(v: Type[vec2], v0: Type[vec2], v1: Type[vec2]) -> Type[vec2]

输入一个值v,返回一个范围在v0到v1之间的值

saturate(v: Type[vec2]) -> Type[vec2]

输入一个值v,返回一个范围在0到1之间的值

vec3Zero() -> Type[vec3]

获取vec3(0, 0, 0)
返回值
- 返回vec3(0, 0, 0)

vec3One() -> Type[vec3]

获取vec3(1, 1, 1)
返回值
- 返回vec3(1, 1, 1)

vec3Epsilon() -> Type[vec3]

获取vec3(1e-6f, 1e-6f, 1e-6f)
返回值
- 返回vec3(1e-6f, 1e-6f, 1e-6f)

vec3Infinity() -> Type[vec3]

获取vec3(1e+9f, 1e+9f, 1e+9f)
返回值
- 返回vec3(1e+9f, 1e+9f, 1e+9f)

dot(v0: Type[vec3], v1: Type[vec3]) -> float

两个向量点乘
返回值
- 点乘的值

lerp(v0: Type[vec3], v1: Type[vec3], k: float) -> Type[vec3]

求vec3的插值
参数
- v0代表起始值
- v1代表终点值
- k代表插值的百分比,范围从0-1
返回值
- 返回插值的结果

cross(v0: Type[vec3], v1: Type[vec3]) -> Type[vec3]

求v0和v1的叉乘结果
返回值
- 返回插值的结果

reflect(v0: Type[vec3], v1: Type[vec3]) -> Type[vec3]

求v0基于v1的反射向量
返回值
- 返回反射向量

min(v0: Type[vec3], v1: Type[vec3]) -> Type[vec3]

比较v0和v1的值
返回值
- 返回更小的值

max(v0: Type[vec3], v1: Type[vec3]) -> Type[vec3]

比较v0和v1的值
返回值
- 返回更大的值

clamp(v: Type[vec3], v0: Type[vec3], v1: Type[vec3]) -> Type[vec3]

输入一个值v,返回一个范围在v0到v1之间的值

saturate(v: Type[vec3]) -> Type[vec3]

输入一个值v,返回一个范围在0到1之间的值

dot(v0: Type[vec4], v1: Type[vec4]) -> float

两个向量点乘
返回值
- 点乘的值

lerp(v0: Type[vec4], v1: Type[vec4], k: float) -> Type[vec4]

求vec4的插值
参数
- v0代表起始值
- v1代表终点值
- k代表插值的百分比,范围从0-1
返回值
- 返回插值的结果

min(v0: Type[vec4], v1: Type[vec4]) -> Type[vec4]

比较v0和v1的值
返回值
- 返回更小的值

max(v0: Type[vec4], v1: Type[vec4]) -> Type[vec4]

比较v0和v1的值
返回值
- 返回更大的值

clamp(v: Type[vec4], v0: Type[vec4], v1: Type[vec4]) -> Type[vec4]

输入一个值v,返回一个范围在v0到v1之间的值

saturate(v: Type[vec4]) -> Type[vec4]

输入一个值v,返回一个范围在0到1之间的值

vec4Zero() -> Type[vec4]

获取vec4(0, 0, 0, 0)
返回值
- 返回vec4(0, 0, 0, 0)

vec4One() -> Type[vec4]

获取vec4(1, 1, 1, 1)
返回值
- 返回vec4(1, 1, 1, 1)

vec4Epsilon() -> Type[vec4]

获取vec4(1e-6f, 1e-6f, 1e-6f, 1e-6f)
返回值
- 返回vec4(1e-6f, 1e-6f, 1e-6f, 1e-6f)

vec4Infinity() -> Type[vec4]

获取vec4(1e+9f, 1e+9f, 1e+9f, 1e+9f)
返回值
- 返回vec4(1e+9f, 1e+9f, 1e+9f, 1e+9f)

inverse(q: quat) -> quat

求四元组的逆,q.x = -q.x q.y = -q.y q.z = -q.z q.w = q.w

slerp(q0: quat, q1: quat, k: float) -> quat

求四元组的球形插值

decomposeTransform(m: Type[mat4], q0: quat, q1: quat)

将矩阵m分解两个四元组
参数
- m为WorldTransform

composeTransform(ret: Type[mat4], q0: quat, q1: quat) -> Type[mat4]

将两个四元组合成矩阵
参数
- ret为合成后的WorldTransform

mat3Zero() -> Type[mat3]

获取mat3(0)
返回值
- 返回mat3(0)

mat3One() -> Type[mat3]

获取mat3(1)
返回值
- 返回mat3(1)

mat3Identity() -> Type[mat3]

获取mat3的单位矩阵
返回值
- 返回mat3的单位矩阵

determinant(m: Type[mat3]) -> float

求矩阵3x3的行列式
返回值
- 返回行列式的值

orthonormalize(m: Type[mat3]) -> Type[mat3]

求矩阵4x4的行列式
返回值
- 返回经过正交化的矩阵

transpose(m: Type[mat3]) -> Type[mat3]

对m进行转置
返回值
- 返回转置矩阵

inverse(m: Type[mat3]) -> Type[mat3]

求m的逆矩阵
返回值
- 返回转置矩阵

rotateX3(angle: float) -> Type[mat3]

得到绕X的旋转矩阵
参数
- 绕X旋转的角度

rotateY3(angle: float) -> Type[mat3]

得到绕Y的旋转矩阵
参数
- 绕Y旋转的角度

rotateZ3(angle: float) -> Type[mat3]

得到绕Z的旋转矩阵
参数
- 绕Z旋转的角度

scale(v: Type[vec3]) -> Type[mat3]

根据vec3生成缩放矩阵
参数
-

mat4Zero() -> Type[mat4]

获取mat4(0)
返回值
- 返回mat4(0)

mat4One() -> Type[mat4]

获取mat4(1)
返回值
- 返回mat4(1)

mat4Identity() -> Type[mat4]

获取mat4的单位矩阵
返回值
- 返回mat4的单位矩阵

determinant(m: Type[mat4]) -> float

求矩阵4x4的行列式
返回值
- 返回行列式的值

orthonormalize(m: Type[mat4]) -> Type[mat4]

求矩阵4x4的行列式
返回值
- 返回经过正交化的矩阵

rotation(m: Type[mat4]) -> Type[mat4]

提取m中的旋转矩阵部分
返回值
- 返回旋转矩阵

transpose(m: Type[mat4]) -> Type[mat4]

对m进行转置
返回值
- 返回转置矩阵

inverse(m: Type[mat4]) -> Type[mat4]

求m的逆矩阵
返回值
- 返回转置矩阵

lerp(v0: Type[mat4], v1: Type[mat4], k: float) -> Type[mat4]

求mat4的插值
参数
- v0代表起始值
- v1代表终点值
- k代表插值的百分比,范围从0-1
返回值
- 返回插值的结果

translate(x: float, y: float, z: float) -> Type[mat4]

得到位移矩阵
参数
- 移动的x,y,z距离

scale(x: float, y: float, z: float) -> Type[mat4]

得到缩放矩阵
参数
- 缩放的x,y,z系数

translate(v: Type[vec3]) -> Type[mat4]

得到位移矩阵
参数
- 移动向量v距离

rotate(x: float, y: float, z: float, angle: float) -> Type[mat4]

生成旋转矩阵
参数
- 前三个参数表示表示旋转轴,如x轴为(1, 0, 0, angle)
- angle表示旋转的角度

rotate(q: quat) -> Type[mat4]

根据四元数生成旋转矩阵
参数
- 四元数

rotateX(angle: float) -> Type[mat4]

得到绕X的旋转矩阵
参数
- 绕X旋转的角度

rotateY(angle: float) -> Type[mat4]

得到绕Y的旋转矩阵
参数
- 绕Y旋转的角度

rotateZ(angle: float) -> Type[mat4]

得到绕Z的旋转矩阵
参数
- 绕Z旋转的角度

scale(v: Type[vec3]) -> Type[mat4]

根据vec3生成缩放矩阵
参数
-

ortho(left: float, right: float, bottom: float, top: float, znear: float, zfar: float) -> Type[mat4]

根据参数创建平行投影矩阵
返回值
- 返回平行投影矩阵

frustum(left: float, right: float, bottom: float, top: float, znear: float, zfar: float) -> Type[mat4]

根据参数创建透视投影矩阵
返回值
- 返回透视投影矩阵

perspective(fov: float, aspect: float, znear: float, zfar: float) -> Type[mat4]

根据参数创建透视投影矩阵
返回值
- 返回透视投影矩阵

setTo(position: Type[vec3], direction: Type[vec3], up: Type[vec3]) -> Type[mat4]

根据指定的位置创建矩阵
参数
- 位置
- 朝里的方向
- 向上的方向

lookAt(position: Type[vec3], direction: Type[vec3], up: Type[vec3]) -> Type[mat4]

返回一个朝向该位置该方向的矩阵
参数
- 位置
- 朝里的方向
- 向上的方向

cubeTransform(face: int) -> Type[mat4]

根据指定的位置创建矩阵
参数
- 位置

decomposeTransform(m: Type[mat4], position: Type[vec4], rot: quat)

将矩阵m分解得到位置和旋转信息
参数
- m为WorldTransform

decomposeTransform(m: Type[mat4], position: Type[vec3], rot: quat, scale: Type[vec3])

将矩阵m分解得到位置、旋转和缩放信息
参数
- m为WorldTransform

decomposeProjection(projection: Type[mat4], znear: float, zfar: float)

分解投影矩阵得到近裁剪和远裁剪
参数
- m为投影矩阵

composeTransform(ret: Type[mat4], position: Type[vec4], rot: quat) -> Type[mat4]

将位置、旋转信息合成为ret
参数
- ret为合成后的WorldTransform

composeTransform(ret: Type[mat4], position: Type[vec3], rot: quat, scale: Type[vec3]) -> Type[mat4]

将位置、旋转信息合成为ret
参数
- ret为合成后的WorldTransform