跳转至

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)

返回由转置矩阵转换(乘)的向量。

**注意:**仅当它表示旋转反射时,才乘以矩阵的逆。