Up to date
This page is up to date for Godot 4.0
. If you still find outdated information, please open an issue.
Transform2D
A 2×3 matrix representing a 2D transformation.
Description
A 2×3 matrix (2 rows, 3 columns) used for 2D linear transformations. It can represent transformations such as translation, rotation, and scaling. It consists of three Vector2 values: x, y, and the origin.
For more information, read the “Matrices and transforms” documentation article.
Tutorials
Properties
| ||
| ||
|
Constructors
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 ) |
Methods
affine_inverse ( ) const | |
basis_xform ( Vector2 v ) const | |
basis_xform_inv ( Vector2 v ) const | |
get_origin ( ) const | |
get_rotation ( ) const | |
get_scale ( ) const | |
get_skew ( ) const | |
interpolate_with ( Transform2D xform, float weight ) const | |
inverse ( ) 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 |
Operators
operator != ( Transform2D right ) | |
operator ( PackedVector2Array right ) | |
operator ( Transform2D right ) | |
operator == ( Transform2D right ) | |
operator [] ( int index ) |
Constants
IDENTITY = Transform2D(1, 0, 0, 1, 0, 0)
The identity Transform2D with no translation, rotation or scaling applied. When applied to other data structures, IDENTITY performs no transformation.
FLIP_X = Transform2D(-1, 0, 0, 1, 0, 0)
The Transform2D that will flip something along the X axis.
FLIP_Y = Transform2D(1, 0, 0, -1, 0, 0)
The Transform2D that will flip something along the Y axis.
Property Descriptions
Vector2 origin = Vector2(0, 0)
The origin vector (column 2, the third column). Equivalent to array index 2
. The origin vector represents translation.
Vector2 x = Vector2(1, 0)
The basis matrix’s X vector (column 0). Equivalent to array index 0
.
Vector2 y = Vector2(0, 1)
The basis matrix’s Y vector (column 1). Equivalent to array index 1
.
Constructor Descriptions
Transform2D Transform2D ( )
Constructs a default-initialized Transform2D set to IDENTITY.
Transform2D Transform2D ( Transform2D from )
Constructs a Transform2D as a copy of the given Transform2D.
Transform2D Transform2D ( float rotation, Vector2 position )
Constructs the transform from a given angle (in radians) and position.
Transform2D Transform2D ( float rotation, Vector2 scale, float skew, Vector2 position )
Constructs the transform from a given angle (in radians), scale, skew (in radians) and position.
Transform2D Transform2D ( Vector2 x_axis, Vector2 y_axis, Vector2 origin )
Constructs the transform from 3 Vector2 values representing x, y, and the origin (the three column vectors).
Method Descriptions
Transform2D affine_inverse ( ) const
Returns the inverse of the transform, under the assumption that the transformation is composed of rotation, scaling and translation.
Vector2 basis_xform ( Vector2 v ) const
Returns a vector transformed (multiplied) by the basis matrix.
This method does not account for translation (the origin vector).
Vector2 basis_xform_inv ( Vector2 v ) const
Returns a vector transformed (multiplied) by the inverse basis matrix.
This method does not account for translation (the origin vector).
Vector2 get_origin ( ) const
Returns the transform’s origin (translation).
float get_rotation ( ) const
Returns the transform’s rotation (in radians).
Vector2 get_scale ( ) const
Returns the scale.
float get_skew ( ) const
Returns the transform’s skew (in radians).
Transform2D interpolate_with ( Transform2D xform, float weight ) const
Returns a transform interpolated between this transform and another by a given weight
(on the range of 0.0 to 1.0).
Transform2D inverse ( ) const
Returns the inverse of the transform, under the assumption that the transformation is composed of rotation and translation (no scaling, use affine_inverse for transforms with scaling).
bool is_equal_approx ( Transform2D xform ) const
Returns true
if this transform and xform
are approximately equal, by calling is_equal_approx
on each component.
bool is_finite ( ) const
Returns true
if this transform is finite, by calling @GlobalScope.is_finite on each component.
Transform2D looking_at ( Vector2 target=Vector2(0, 0) ) const
Returns a copy of the transform rotated such that the rotated X-axis points towards the target
position.
Operations take place in global space.
Transform2D orthonormalized ( ) const
Returns the transform with the basis orthogonal (90 degrees), and normalized axis vectors (scale of 1 or -1).
Transform2D rotated ( float angle ) const
Returns a copy of the transform rotated by the given angle
(in radians).
This method is an optimized version of multiplying the given transform X
with a corresponding rotation transform R
from the left, i.e., R * X
.
This can be seen as transforming with respect to the global/parent frame.
Transform2D rotated_local ( float angle ) const
Returns a copy of the transform rotated by the given angle
(in radians).
This method is an optimized version of multiplying the given transform X
with a corresponding rotation transform R
from the right, i.e., X * R
.
This can be seen as transforming with respect to the local frame.
Transform2D scaled ( Vector2 scale ) const
Returns a copy of the transform scaled by the given scale
factor.
This method is an optimized version of multiplying the given transform X
with a corresponding scaling transform S
from the left, i.e., S * X
.
This can be seen as transforming with respect to the global/parent frame.
Transform2D scaled_local ( Vector2 scale ) const
Returns a copy of the transform scaled by the given scale
factor.
This method is an optimized version of multiplying the given transform X
with a corresponding scaling transform S
from the right, i.e., X * S
.
This can be seen as transforming with respect to the local frame.
Transform2D translated ( Vector2 offset ) const
Returns a copy of the transform translated by the given offset
.
This method is an optimized version of multiplying the given transform X
with a corresponding translation transform T
from the left, i.e., T * X
.
This can be seen as transforming with respect to the global/parent frame.
Transform2D translated_local ( Vector2 offset ) const
Returns a copy of the transform translated by the given offset
.
This method is an optimized version of multiplying the given transform X
with a corresponding translation transform T
from the right, i.e., X * T
.
This can be seen as transforming with respect to the local frame.
Operator Descriptions
bool operator != ( Transform2D right )
Returns true
if the transforms are not equal.
Note: Due to floating-point precision errors, consider using is_equal_approx instead, which is more reliable.
PackedVector2Array operator * ( PackedVector2Array right )
Transforms (multiplies) each element of the Vector2 array by the given Transform2D matrix.
Rect2 operator * ( Rect2 right )
Transforms (multiplies) the Rect2 by the given Transform2D matrix.
Transform2D operator * ( Transform2D right )
Composes these two transformation matrices by multiplying them together. This has the effect of transforming the second transform (the child) by the first transform (the parent).
Vector2 operator * ( Vector2 right )
Transforms (multiplies) the Vector2 by the given Transform2D matrix.
Transform2D operator * ( float right )
This operator multiplies all components of the Transform2D, including the origin vector, which scales it uniformly.
Transform2D operator * ( int right )
This operator multiplies all components of the Transform2D, including the origin vector, which scales it uniformly.
bool operator == ( Transform2D right )
Returns true
if the transforms are exactly equal.
Note: Due to floating-point precision errors, consider using is_equal_approx instead, which is more reliable.
Vector2 operator [] ( int index )
Access transform components using their index. t[0]
is equivalent to t.x
, t[1]
is equivalent to t.y
, and t[2]
is equivalent to t.origin
.