Up to date

This page is up to date for Godot 4.1. 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

Vector2

origin

Vector2(0, 0)

Vector2

x

Vector2(1, 0)

Vector2

y

Vector2(0, 1)

Constructors

Transform2D

Transform2D ( )

Transform2D

Transform2D ( Transform2D from )

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 )

Methods

Transform2D

affine_inverse ( ) const

Vector2

basis_xform ( Vector2 v ) const

Vector2

basis_xform_inv ( Vector2 v ) const

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

Transform2D

inverse ( ) const

bool

is_equal_approx ( Transform2D xform ) const

bool

is_finite ( ) const

Transform2D

looking_at ( Vector2 target=Vector2(0, 0) ) const

Transform2D

orthonormalized ( ) const

Transform2D

rotated ( float angle ) const

Transform2D

rotated_local ( float angle ) const

Transform2D

scaled ( Vector2 scale ) const

Transform2D

scaled_local ( Vector2 scale ) const

Transform2D

translated ( Vector2 offset ) const

Transform2D

translated_local ( Vector2 offset ) const

Operators

bool

operator != ( Transform2D right )

PackedVector2Array

operator ( PackedVector2Array right )

Rect2

operator ( Rect2 right )

Transform2D

operator ( Transform2D right )

Vector2

operator ( Vector2 right )

Transform2D

operator ( float right )

Transform2D

operator ( int right )

bool

operator == ( Transform2D right )

Vector2

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).


float determinant ( ) const

Returns the determinant of the basis matrix. If the basis is uniformly scaled, then its determinant equals the square of the scale factor.

A negative determinant means the basis was flipped, so one part of the scale is negative. A zero determinant means the basis isn’t invertible, and is usually considered invalid.


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.