数学
向量和矩阵操作等和一些数学类。
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)
返回值
- 旋转角度floatquat.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.xmat3.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])
设置矩阵的平移量
参数
- 平移vmat4.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