Quat
简要描述
四元数。
描述
用于表示3D旋转的单位四元数。
它类似于Basis,它实现旋转的矩阵表示,并且可以使用轴角对或Euler角进行参数化。
四元数需要(重新)规范化。
成员
类型 | 属性名 | 默认值 |
---|---|---|
float | w | 1.0 |
float | x | 0.0 |
float | y | 0.0 |
float | z | 0.0 |
方法
返回值类型 | 方法名称 |
---|---|
Quat | Quat(#method-Quat)(from: Basis) |
Quat | Quat(#method-Quat)(euler: Vector3) |
Quat | Quat(#method-Quat)(axis: Vector3, angle: float) |
Quat | Quat(#method-Quat)(x: float, y: float, z: float, w: float) |
Quat | cubic_slerp(b: Quat, pre_a: Quat, post_b: Quat, t: float) |
float | dot(b: Quat) |
Vector3 | get_euler() |
Quat | inverse() |
bool | is_equal_approx(quat: Quat) |
bool | is_normalized() |
float | length() |
float | length_squared() |
Quat | normalized() |
set_axis_angle(axis: Vector3, angle: float) | |
set_euler(euler: Vector3) | |
Quat | slerp(b: Quat, t: float) |
Quat | slerpni(b: Quat, t: float) |
Vector3 | xform(v: Vector3) |
常量
- **IDENTITY = Quat( 0, 0, 0, 1 )**
单位四元数。等同于一个单位矩阵。如果一个向量由单位四元数变换,则它不会改变。
成员说明
- float w
Default | 1.0 |
---|---|
getter | **** |
- float x
Default | 0.0 |
---|---|
getter | **** |
- float y
Default | 0.0 |
---|---|
getter | **** |
- float z
Default | 0.0 |
---|---|
getter | **** |
方法说明
- Quat Quat(from: Basis)
返回对应于给定四元数的旋转矩阵。
- Quat Quat(euler: Vector3)
返回一个四元数,该四元数将执行由欧拉角指定的旋转(按照YXZ约定:第一个Z,然后X,最后一个Y),矢量格式为(X角,Y角,Z角)。
- Quat Quat(axis: Vector3, angle: float)
返回将围绕给定轴旋转指定角度的四元数。
- Quat Quat(x: float, y: float, z: float, w: float)
返回由这些值定义的四元数。
- cubic_slerp cubic_slerp(b: Quat, pre_a: Quat, post_b: Quat, t: float)
用另一个四元数执行三次球面线性插值。
- dot dot(b: Quat)
返回两个四元数的点积。
- get_euler get_euler()
返回与单位四元数表示的旋转相对应的欧拉角(按照YXZ约定:第一个Z,然后是X,最后是Y)。
- inverse inverse()
返回四元数的倒数。
- is_equal_approx is_equal_approx(quat: Quat)
通过在每个组件上运行[@],如果此四分位数和quat
近似相等,则返回true
。
- is_normalized is_normalized()
返回四元数是否已规范化。
- length length()
返回四元数的长度。
- length_squared length_squared()
返回四元数的长度,平方。
- normalized normalized()
返回四元数的副本,将其标准化为单位长度。
- set_axis_angle set_axis_angle(axis: Vector3, angle: float)
将四元数设置为以弧度为单位围绕轴旋转指定角度的旋转。
- set_euler set_euler(euler: Vector3)
将四元数设置为由Euler角指定的旋转(在YXZ约定中:首先是Z,然后是X,最后是Y),以矢量格式给出(X角,Y角,Z角)。
- slerp slerp(b: Quat, t: float)
用另一个四元数执行球面线性插值。
- slerpni slerpni(b: Quat, t: float)
使用另一个四元数执行球面线性插值,而不检查旋转路径是否不大于90°。
- xform xform(v: Vector3)
通过此四元数变换向量v
。