Quat
四元数.
描述
一个用于表示 3D 旋转的单位四元数。四元数需要经过归一化才能用于旋转。
它类似于 Basis,后者实现了旋转的矩阵表示,并且可以使用轴-角对或欧拉角进行参数化。Basis 可以存储旋转、缩放和错切,而 Quat 只存储旋转。
由于它的紧凑性和在内存中的存储方式,某些操作(特别是获得轴角和执行 SLERP)更加有效,并且对浮点错误有很强的抵抗力。
教程
属性
| ||
| ||
| ||
|
方法
cubic_slerp ( Quat b, Quat pre_a, Quat post_b, float weight ) | |
get_euler ( ) | |
inverse ( ) | |
is_equal_approx ( Quat quat ) | |
is_normalized ( ) | |
length ( ) | |
length_squared ( ) | |
normalized ( ) | |
void | set_axis_angle ( Vector3 axis, float angle ) |
void | |
常量
- IDENTITY = Quat( 0, 0, 0, 1 ) —- 单位四元数,代表无旋转。等效于单位 Basis 矩阵。如果一个向量被一个单位四元数变换,它不会改变。
属性说明
- float w
Default |
|
四元数的W分量(实数部分)。
四元数分量通常不应该被直接操作。
- float x
Default |
|
四元数的X分量(虚轴i
部分)。
四元数分量通常不应直接操作。
- float y
Default |
|
四元数的Y分量(虚轴j
部分)。
四元数分量通常不应直接操作。
- float z
Default |
|
四元数的Z分量(虚轴k
部分)。
四元数分量通常不应该被直接操作。
方法说明
从给定的 Basis 构造一个四元数。
构造一个四元数,该四元数将执行由欧拉角指定的旋转(按照YXZ惯例:分解时,首先是Z,然后是X,最后是Y),以向量格式给出(X角,Y角,Z角)。
构造一个四元数,它将围绕给定的轴旋转指定的角度。轴必须是一个归一化的向量。
构建一个由给定值定义的四元数。
返回此四元数与 to
之间的角度。这是从一个到另一个旋转所需的角度大小。
注意:该方法的浮点错误率异常高,因此@GDScript.is_zero_approx等方法结果不可靠。
在四元数 pre_a
、该向量 b
和 post_b
之间执行三次球面插值,按给定的 weight
。
返回两个四元数的点积。
- Vector3 get_euler ( )
返回与单位四元数所代表的旋转相对应的欧拉角(按照YXZ惯例:分解时,先Z后X,最后是Y)。返回的向量包含格式为(X角、Y角、Z角)的旋转角。
- Quat inverse ( )
返回四元数的取逆。(译注:即xyz的值分别取反).
通过在每个分量上进行 @GDScript.is_equal_approx,如果此四元数和 quat
近似相等,则返回 true
。
- bool is_normalized ( )
返回四元数是否被归一化。
- float length ( )
返回四元数的长度。
- float length_squared ( )
返回四元数的长度的平方。
- Quat normalized ( )
返回四元数的副本,归一化为单位长度。
将四元数设置为绕轴旋转指定角度(以弧度为单位)的旋转。轴必须是归一化向量。
- void set_euler ( Vector3 euler )
将四元数设置为由欧拉角指定的旋转(按照惯例:分解时,首先是 Z,然后是 X,最后是 Y),以向量格式给出(X 角、Y 角、Z 角)。
返回四元数 to
和 weight
值的球面线性插值的结果。
注意: 四元数必须被归一化。
以weight
值为权重,返回这个四元数和to
之间的球面线性插值的结果,但不会检查旋转路径是否不大于90度。
返回一个由该四元数转换(相乘)的向量。