Transform2D
代表 2D 变换的 2×3 矩阵。
描述
用于 2D 线性变换的 2×3 矩阵(2 行 3 列),可以表示平移、旋转、缩放等变换,由三个 Vector2 值组成:x、y、origin。
更多信息请阅读文档文章《矩阵与变换》。
备注
通过 C# 使用这个 API 时有显著的不同。详见 C# API 与 GDScript 的差异。
教程
属性
| ||
| ||
|
构造函数
Transform2D ( ) | |
Transform2D ( Transform2D from ) | |
Transform2D ( float rotation, Vector2 position ) | |
Transform2D ( float rotation, Vector2 scale, float skew, Vector2 position ) | |
Transform2D ( Vector2 x_axis, Vector2 y_axis, Vector2 origin ) |
方法
affine_inverse ( ) const | |
basis_xform ( Vector2 v ) const | |
basis_xform_inv ( Vector2 v ) const | |
determinant ( ) const | |
get_origin ( ) const | |
get_rotation ( ) const | |
get_scale ( ) const | |
get_skew ( ) const | |
interpolate_with ( Transform2D xform, float weight ) const | |
inverse ( ) const | |
is_conformal ( ) const | |
is_equal_approx ( Transform2D xform ) const | |
is_finite ( ) const | |
looking_at ( Vector2 target=Vector2(0, 0) ) const | |
orthonormalized ( ) const | |
rotated_local ( float angle ) const | |
scaled_local ( Vector2 scale ) const | |
translated ( Vector2 offset ) const | |
translated_local ( Vector2 offset ) const |
操作符
operator != ( Transform2D right ) | |
operator ( PackedVector2Array right ) | |
operator ( Transform2D right ) | |
operator == ( Transform2D right ) | |
operator [] ( int index ) |
常量
IDENTITY = Transform2D(1, 0, 0, 1, 0, 0)
没有应用平移、旋转、缩放的恒等 Transform2D。当应用于其他数据结构时,IDENTITY 不执行变换。
FLIP_X = Transform2D(-1, 0, 0, 1, 0, 0)
将沿 X 轴翻转的 Transform2D。
FLIP_Y = Transform2D(1, 0, 0, -1, 0, 0)
将沿 Y 轴翻转的 Transform2D。
属性说明
Vector2 origin = Vector2(0, 0)
原点向量(2 号列,即第 3 列)。相当于使用 2
进行数组索引。原点向量代表平移。
Vector2 x = Vector2(1, 0)
基矩阵的 X 向量(第 0 列)。相当于数组索引 0
。
Vector2 y = Vector2(0, 1)
基矩阵的 Y 向量(第 1 列)。相当于数组索引 1
。
构造函数说明
Transform2D Transform2D ( )
构造默认初始化为 IDENTITY 的 Transform2D。
Transform2D Transform2D ( Transform2D from )
构造给定 Transform2D 的副本。
Transform2D Transform2D ( float rotation, Vector2 position )
从给定的角度(单位为弧度)和位置构造变换。
Transform2D Transform2D ( float rotation, Vector2 scale, float skew, Vector2 position )
从给定的角度(单位为弧度)、缩放、偏斜(单位为弧度)和位置构造变换。
Transform2D Transform2D ( Vector2 x_axis, Vector2 y_axis, Vector2 origin )
从表示 x、y、origin 的 3 个 Vector2(三个列向量)构建变换。
方法说明
Transform2D affine_inverse ( ) const
假设该基可逆(必须具有非零行列式),返回该变换的逆。
Vector2 basis_xform ( Vector2 v ) const
返回经过基矩阵变换(相乘)的向量。
该方法不考虑平移(origin 向量)。
Vector2 basis_xform_inv ( Vector2 v ) const
返回一个由逆基矩阵变换(乘以)的向量,假设该基是正交的(即旋转/反射可以,缩放/倾斜不行)。
该方法不考虑翻译(origin 向量)。
transform.basis_xform_inv(vector)
性当于 transform.inverse().basis_xform(vector)
。请参阅 inverse。
对于非正交变换(例如缩放),可以使用 transform.affine_inverse().basis_xform(vector)
代替。请参阅 affine_inverse。
float determinant ( ) const
返回基矩阵的行列式。如果基是均匀缩放的,则它的行列式是缩放系数的平方。
行列式为负意味着基发生了翻转,因此缩放中有一个分量是负的。行列式为零意味着基不可逆,通常认为是无效的基。
Vector2 get_origin ( ) const
返回该变换的原点(平移)。
float get_rotation ( ) const
返回该变换的旋转(单位为弧度)。
Vector2 get_scale ( ) const
返回缩放。
float get_skew ( ) const
返回该变换的偏斜(单位为弧度)。
Transform2D interpolate_with ( Transform2D xform, float weight ) const
返回将该变换与其他变换使用给定权重 weight
进行插值的结果(权重范围为 0.0 到 1.0)。
Transform2D inverse ( ) const
返回变换的逆,假设该变换的基是正交的(即旋转/反射可以,缩放/倾斜不行)。使用 affine_inverse 进行非正交变换(例如缩放)。
bool is_conformal ( ) const
如果该变换的基是共形的,则返回 true
,这意味着它保留角度和距离比率,并且只能由旋转和统一缩放组成。如果该变换的基具有不均匀的缩放或剪切/倾斜,则返回 false
。这可被用于验证该变换是否失真,这对于物理和其他用例很重要。
bool is_equal_approx ( Transform2D xform ) const
如果通过在每个分量上运行 @GlobalScope.is_equal_approx,该变换和 xform
近似相等,则返回 true
。
bool is_finite ( ) const
如果该变换是有限的,则返回 true
,判断方法是在每个分量上调用 @GlobalScope.is_finite。
Transform2D looking_at ( Vector2 target=Vector2(0, 0) ) const
返回一个旋转后的变换副本,使旋转后的 X 轴指向 target
位置。
操作发生在全局空间中。
Transform2D orthonormalized ( ) const
返回使用正交基(90 度)以及归一化的轴向量(缩放为 1 或 -1)的变换。
Transform2D rotated ( float angle ) const
返回该变换的副本,该副本进行了夹角为 angle
的旋转操作(单位为弧度)。
这个方法的结果和让 X
变换与相应的旋转变换 R
从左侧相乘一致,即 R * X
,但进行了优化。
可以视作在全局/父级坐标系中的变换。
Transform2D rotated_local ( float angle ) const
返回该变换的副本,该副本进行了夹角为 angle
的旋转操作(单位为弧度)。
这个方法的结果和让 X
变换与相应的旋转变换 R
从右侧相乘一致,即 X * R
,但进行了优化。
可以视作在局部坐标系中的变换。
Transform2D scaled ( Vector2 scale ) const
返回该变换的副本,该副本进行了系数为 scale
的缩放操作。
这个方法的结果和让 X
变换与相应的缩放变换 S
从左侧相乘一致,即 S * X
,但进行了优化。
可以视作在全局/父级坐标系中的变换。
Transform2D scaled_local ( Vector2 scale ) const
返回该变换的副本,该副本进行了系数为 scale
的缩放操作。
这个方法的结果和让 X
变换与相应的缩放变换 S
从右侧相乘一致,即 X * S
,但进行了优化。
可以视作在局部坐标系中的变换。
Transform2D translated ( Vector2 offset ) const
返回该变换的副本,该副本进行了偏移量为 offset
的平移操作。
这个方法的结果和让 X
变换与相应的平移变换 T
从左侧相乘一致,即 T * X
,但进行了优化。
可以视作在全局/父级坐标系中的变换。
Transform2D translated_local ( Vector2 offset ) const
返回该变换的副本,该副本进行了偏移量为 offset
的平移操作。
这个方法的结果和让 X
变换与相应的平移变换 T
从右侧相乘一致,即 X * T
,但进行了优化。
可以视作在局部坐标系中的变换。
操作符说明
bool operator != ( Transform2D right )
如果变换不相等,则返回 true
。
注意:由于浮点数精度误差,请考虑改用 is_equal_approx,会更可靠。
PackedVector2Array operator * ( PackedVector2Array right )
使用给定的 Transform2D 矩阵将该 Vector2 数组中的每个元素进行变换(相乘)。
Rect2 operator * ( Rect2 right )
使用给定的 Transform2D 矩阵将该 Rect2 进行变换(相乘)。
Transform2D operator * ( Transform2D right )
通过将这两个变换矩阵相乘来组合它们。这具有通过第一个变换(父项)来变换第二个变换(子项)的效果。
Vector2 operator * ( Vector2 right )
使用给定的 Transform2D 矩阵将该 Vector2 进行变换(相乘)。
Transform2D operator * ( float right )
该运算符将 Transform2D 的所有分量相乘,包括 origin 向量,从而对其进行统一缩放。
Transform2D operator * ( int right )
该运算符将 Transform2D 的所有分量相乘,包括 origin 向量,从而对其进行统一缩放。
bool operator == ( Transform2D right )
如果变换完全相等,则返回 true
。
注意:由于浮点数精度误差,请考虑改用 is_equal_approx,会更可靠。
Vector2 operator [] ( int index )
使用变换分量的索引访问变换的分量。t[0]
相当于 t.x
,t[1]
相当于 t.y
,t[2]
相当于 t.origin
。
© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7
.
Built with Sphinx using a theme provided by Read the Docs.