跳转至

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