跳到主要内容

Basis

简要描述

3×3矩阵数据类型。

描述

用于3D旋转和缩放的3×3矩阵。

对于这种用途,它由缩放比例和旋转矩阵按该顺序(M = R.S)组成。

成员

类型属性名默认值
Vector3xVector3( 1, 0, 0 )
Vector3yVector3( 0, 1, 0 )
Vector3zVector3( 0, 0, 1 )

方法

返回值类型方法名称
BasisBasis(#method-Basis)(from: Quat)
BasisBasis(#method-Basis)(from: Vector3)
BasisBasis(#method-Basis)(axis: Vector3, phi: float)
BasisBasis(#method-Basis)(x_axis: Vector3, y_axis: Vector3, z_axis: Vector3)
floatdeterminant()
Vector3get_euler()
intget_orthogonal_index()
Quatget_rotation_quat()
Vector3get_scale()
Basisinverse()
boolis_equal_approx(b: Basis, epsilon: float = 1e-05)
Basisorthonormalized()
Basisrotated(axis: Vector3, phi: float)
Basisscaled(scale: Vector3)
Basisslerp(b: Basis, t: float)
floattdotx(with: Vector3)
floattdoty(with: Vector3)
floattdotz(with: Vector3)
Basistransposed()
Vector3xform(v: Vector3)
Vector3xform_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
DefaultVector3( 1, 0, 0 )
getter****
  • Vector3 y
DefaultVector3( 0, 1, 0 )
getter****
  • Vector3 z
DefaultVector3( 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)

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

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