Basis
简要描述
3×3矩阵数据类型。
描述
用于3D旋转和缩放的3×3矩阵。
对于这种用途,它由缩放比例和旋转矩阵按该顺序(M = R.S)组成。
成员
类型 | 属性名 | 默认值 |
---|---|---|
Vector3 | x | Vector3( 1, 0, 0 ) |
Vector3 | y | Vector3( 0, 1, 0 ) |
Vector3 | z | Vector3( 0, 0, 1 ) |
方法
返回值类型 | 方法名称 |
---|---|
Basis | Basis(#method-Basis)(from: Quat) |
Basis | Basis(#method-Basis)(from: Vector3) |
Basis | Basis(#method-Basis)(axis: Vector3, phi: float) |
Basis | Basis(#method-Basis)(x_axis: Vector3, y_axis: Vector3, z_axis: Vector3) |
float | determinant() |
Vector3 | get_euler() |
int | get_orthogonal_index() |
Quat | get_rotation_quat() |
Vector3 | get_scale() |
Basis | inverse() |
bool | is_equal_approx(b: Basis, epsilon: float = 1e-05) |
Basis | orthonormalized() |
Basis | rotated(axis: Vector3, phi: float) |
Basis | scaled(scale: Vector3) |
Basis | slerp(b: Basis, t: float) |
float | tdotx(with: Vector3) |
float | tdoty(with: Vector3) |
float | tdotz(with: Vector3) |
Basis | transposed() |
Vector3 | xform(v: Vector3) |
Vector3 | xform_inv(v: Vector3) |
常量
- **IDENTITY = Basis( 1, 0, 0, 0, 1, 0, 0, 0, 1 )**
单位基轴,直接调用Basis()
即可。
- **FLIP_X = Basis( -1, 0, 0, 0, 1, 0, 0, 0, 1 )**
在转换中使用时,将物体沿X轴翻转。
- **FLIP_Y = Basis( 1, 0, 0, 0, -1, 0, 0, 0, 1 )**
在转换中使用时,将物体沿Y轴翻转。
- **FLIP_Z = Basis( 1, 0, 0, 0, 1, 0, 0, 0, -1 )**
在转换中使用时,将物体沿Z轴翻转。
成员说明
- Vector3 x
Default | Vector3( 1, 0, 0 ) |
---|---|
getter | **** |
- Vector3 y
Default | Vector3( 0, 1, 0 ) |
---|---|
getter | **** |
- Vector3 z
Default | Vector3( 0, 0, 1 ) |
---|---|
getter | **** |
方法说明
- Basis Basis(from: Quat)
从给定的四元数创建旋转矩阵。
- Basis Basis(from: Vector3)
从指定的欧拉角创建旋转矩阵(按照YXZ约定:首先是Z,然后是X,最后是Y),以矢量格式给出(X角,Y角,Z角)。
- Basis Basis(axis: Vector3, phi: float)
创建一个旋转矩阵,该矩阵绕给定轴旋转指定角度(弧度)。
- Basis Basis(x_axis: Vector3, y_axis: Vector3, z_axis: Vector3)
从3个轴向量创建一个矩阵。
- determinant determinant()
返回矩阵的行列式。
- get_euler get_euler()
以欧拉角的形式返回基体的旋转(按照YXZ约定:第一个Z,然后X,最后一个Y)。
- get_orthogonal_index get_orthogonal_index()
此函数考虑将旋转离散化为沿矢量(x,y,z)分布在单位球面上的24个点,每个分量为-1、0或1,并返回最能代表该点方向的点的索引
- get_rotation_quat get_rotation_quat()
以四元数的形式返回基准的旋转。
- get_scale get_scale()
假设矩阵是旋转和缩放的组合,则返回沿每个轴的缩放因子的绝对值。
- inverse inverse()
返回矩阵的逆。
- is_equal_approx is_equal_approx(b: Basis, epsilon: float = 1e-05)
如果此基础和b
大致相等,则通过在每个组件上调用is_equal_approx
来返回true
。
- orthonormalized orthonormalized()
返回矩阵的正交化版本(用于不时调用以避免正交矩阵的舍入误差)。
- rotated rotated(axis: Vector3, phi: float)
通过phi(弧度)围绕给定轴引入额外的旋转。
- scaled scaled(scale: Vector3)
引入由给定的3D缩放因子指定的其他缩放。
- slerp slerp(b: Basis, t: float)
假设矩阵是一个适当的旋转矩阵,则slerp用另一个旋转矩阵执行球面线性插值。
- tdotx tdotx(with: Vector3)
与矩阵X轴的转置点积。
- tdoty tdoty(with: Vector3)
与矩阵Y轴的转置点积。
- tdotz tdotz(with: Vector3)
与矩阵Z轴的转置点积。
- transposed transposed()
返回矩阵的转置版本。
- xform xform(v: Vector3)
返回由矩阵转换(相乘)的向量。
- xform_inv xform_inv(v: Vector3)
返回由转置矩阵转换(乘)的向量。
注意:仅当它表示旋转反射时,才乘以矩阵的逆。