Basis
3×3矩阵数据类型。
描述
用于三维旋转和缩放的 3×3 矩阵。几乎总是用作变换的正交基础。
包含 3 个向量字段 X、Y 和 Z 作为其列,通常被解释为变换的局部基础向量。对于这种用途,它由一个缩放矩阵和一个旋转矩阵组成,依次为 (M=R.S)。
也可以作为三维向量的数组来访问。这些向量通常是相互正交的,但不一定是归一化的(由于缩放)。
更多信息请阅读文档中的《矩阵和变换》一文。
教程
属性
| ||
| ||
|
方法
determinant ( ) | |
get_euler ( ) | |
get_scale ( ) | |
inverse ( ) | |
is_equal_approx ( Basis b, float epsilon=1e-05 ) | |
orthonormalized ( ) | |
transposed ( ) | |
常量
- IDENTITY = Basis( 1, 0, 0, 0, 1, 0, 0, 0, 1 ) —- 无旋转或缩放的单位基底。
这与调用Basis()
而不使用任何参数是一样的。这个常量可以用来让你的代码更清晰,并与C#保持一致。
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 |
|
基本矩阵的X向量(第0列)。等效于数组索引0
。
- Vector3 y
Default |
|
基础矩阵的Y向量(第1列)。相当于数组索引1
。
- Vector3 z
Default |
|
基础矩阵的Z向量(第2列)。相当于数组索引2
。
方法说明
根据给定的四元数构造一个纯旋转基矩阵。
根据给定的欧拉角构造一个纯旋转基础矩阵(按照 YXZ 惯例:当*合成时,先 Y,然后 X,最后 Z),向量格式为(X 角,Y 角,Z 角)。
可以考虑使用Quat构造函数代替,它使用四元组代替欧拉角。
构造一个纯旋转基阵,以弧度为单位,围绕给定的 axis
旋转 phi
个弧度。轴必须是归一化向量。
从 3 个轴向量(矩阵列)构造一个基础矩阵。
- float determinant ( )
返回基数矩阵的行列式。如果基数是均匀缩放的,它的行列式是缩放的平方。
负的行列式意味着基数的比例是负的。负的行列式意味着基数不可逆,通常被认为无效。
- Vector3 get_euler ( )
以欧拉角的形式返回基础的旋转角度(按照 YXZ 惯例:分解时,先 Z、再 X、最后 Y)。返回的向量包含格式为(X角、Y角、Z角)的旋转角。
可以考虑使用 get_rotation_quat 代替,该方法返回的是Quat四元组而不是欧拉角。
- int get_orthogonal_index ( )
这个函数考虑将单位球面上的旋转分解成24个点,沿向量(x,y,z)放置,每个分量为-1、0或1,并返回最能代表物体方向的点的索引。它主要由 GridMap 编辑器使用。更多细节请参考Godot源码。
- Quat get_rotation_quat ( )
以四元数的形式返回基础的旋转。如果你需要欧拉角,请参阅 get_euler 方法,但通常首选四元数而不是欧拉角。
- Vector3 get_scale ( )
假设矩阵是旋转和缩放的组合,返回沿各轴缩放系数的绝对值。
- Basis inverse ( )
返回矩阵的逆值。
如果这个 basis 和b
近似相等,返回true
,是通过对每个分量调用is_equal_approx
。
注意: 由于复杂的原因,epsilon参数总是被丢弃,不要使用它,它没有任何作用。
- Basis orthonormalized ( )
返回矩阵的正交归一化版本(对于正交矩阵来说,偶尔调用以避免四舍五入错误是有用的)。这将在矩阵的基础上执行 Gram-Schmidt 正交化。
围绕给定轴线引入一个额外的旋转phi(弧度)。该轴必须是一个归一化的向量。
引入一个由给定的3D缩放因子指定的附加缩放。
假设该矩阵是一个合适的旋转矩阵,slerp与另一个旋转矩阵进行球面直线插值。
矩阵X轴的转置点积。
与矩阵Y轴的转置点积。
与矩阵Z轴的转置点积。
- Basis transposed ( )
返回矩阵的转置版本。
返回一个被矩阵转换(乘法)的向量。
返回一个由转置基数矩阵变换(乘法)的向量。
注意:只有当矩阵代表旋转反射时,才会产生矩阵的反相乘法。