Basis

3×3矩阵数据类型。

描述

用于三维旋转和缩放的 3×3 矩阵。几乎总是用作变换的正交基础。

包含 3 个向量字段 X、Y 和 Z 作为其列,通常被解释为变换的局部基础向量。对于这种用途,它由一个缩放矩阵和一个旋转矩阵组成,依次为 (M=R.S)。

也可以作为三维向量的数组来访问。这些向量通常是相互正交的,但不一定是归一化的(由于缩放)。

更多信息请阅读文档中的《矩阵和变换》一文。

教程

属性

Vector3

x

Vector3( 1, 0, 0 )

Vector3

y

Vector3( 0, 1, 0 )

Vector3

z

Vector3( 0, 0, 1 )

方法

Basis

Basis ( Quat from )

Basis

Basis ( Vector3 from )

Basis

Basis ( Vector3 axis, float phi )

Basis

Basis ( Vector3 x_axis, Vector3 y_axis, Vector3 z_axis )

float

determinant ( )

Vector3

get_euler ( )

int

get_orthogonal_index ( )

Quat

get_rotation_quat ( )

Vector3

get_scale ( )

Basis

inverse ( )

bool

is_equal_approx ( Basis b, float epsilon=1e-05 )

Basis

orthonormalized ( )

Basis

rotated ( Vector3 axis, float phi )

Basis

scaled ( Vector3 scale )

Basis

slerp ( Basis to, float weight )

float

tdotx ( Vector3 with )

float

tdoty ( Vector3 with )

float

tdotz ( Vector3 with )

Basis

transposed ( )

Vector3

xform ( Vector3 v )

Vector3

xform_inv ( Vector3 v )

常量

  • IDENTITY = Basis( 1, 0, 0, 0, 1, 0, 0, 0, 1 ) —- 无旋转或缩放的单位基底。

这与调用Basis()而不使用任何参数是一样的。这个常量可以用来让你的代码更清晰,并与C#保持一致。

  • 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 轴翻转某物的基础。

属性说明

Default

Vector3( 1, 0, 0 )

基本矩阵的X向量(第0列)。等效于数组索引0


Default

Vector3( 0, 1, 0 )

基础矩阵的Y向量(第1列)。相当于数组索引1


Default

Vector3( 0, 0, 1 )

基础矩阵的Z向量(第2列)。相当于数组索引2

方法说明

根据给定的四元数构造一个纯旋转基矩阵。


根据给定的欧拉角构造一个纯旋转基础矩阵(按照 YXZ 惯例:当*合成时,先 Y,然后 X,最后 Z),向量格式为(X 角,Y 角,Z 角)。

可以考虑使用Quat构造函数代替,它使用四元组代替欧拉角。


构造一个纯旋转基阵,以弧度为单位,围绕给定的 axis 旋转 phi 个弧度。轴必须是归一化向量。


从 3 个轴向量(矩阵列)构造一个基础矩阵。


返回基数矩阵的行列式。如果基数是均匀缩放的,它的行列式是缩放的平方。

负的行列式意味着基数的比例是负的。负的行列式意味着基数不可逆,通常被认为无效。


以欧拉角的形式返回基础的旋转角度(按照 YXZ 惯例:分解时,先 Z、再 X、最后 Y)。返回的向量包含格式为(X角、Y角、Z角)的旋转角。

可以考虑使用 get_rotation_quat 代替,该方法返回的是Quat四元组而不是欧拉角。


  • int get_orthogonal_index ( )

这个函数考虑将单位球面上的旋转分解成24个点,沿向量(x,y,z)放置,每个分量为-1、0或1,并返回最能代表物体方向的点的索引。它主要由 GridMap 编辑器使用。更多细节请参考Godot源码。


  • Quat get_rotation_quat ( )

以四元数的形式返回基础的旋转。如果你需要欧拉角,请参阅 get_euler 方法,但通常首选四元数而不是欧拉角。


假设矩阵是旋转和缩放的组合,返回沿各轴缩放系数的绝对值。


返回矩阵的逆值。


如果这个 basis 和b近似相等,返回true,是通过对每个分量调用is_equal_approx

注意: 由于复杂的原因,epsilon参数总是被丢弃,不要使用它,它没有任何作用。


  • Basis orthonormalized ( )

返回矩阵的正交归一化版本(对于正交矩阵来说,偶尔调用以避免四舍五入错误是有用的)。这将在矩阵的基础上执行 Gram-Schmidt 正交化。


围绕给定轴线引入一个额外的旋转phi(弧度)。该轴必须是一个归一化的向量。


引入一个由给定的3D缩放因子指定的附加缩放。


假设该矩阵是一个合适的旋转矩阵,slerp与另一个旋转矩阵进行球面直线插值。


矩阵X轴的转置点积。


与矩阵Y轴的转置点积。


与矩阵Z轴的转置点积。


返回矩阵的转置版本。


返回一个被矩阵转换(乘法)的向量。


返回一个由转置基数矩阵变换(乘法)的向量。

注意:只有当矩阵代表旋转反射时,才会产生矩阵的反相乘法。