Transform2D

2D transformation (2×3 matrix).

Description

2×3 matrix (2 rows, 3 columns) used for 2D linear transformations. It can represent transformations such as translation, rotation, or 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

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

Transform2D

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

Transform2D

orthonormalized ( ) const

Transform2D

rotated ( float phi ) const

Transform2D

scaled ( Vector2 scale ) const

void

set_rotation ( float rotation )

void

set_scale ( Vector2 scale )

void

set_skew ( float skew )

Transform2D

translated ( Vector2 offset ) const

Operators

bool

operator != ( )

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 == ( )

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

Default

Vector2(0, 0)

The origin vector (column 2, the third column). Equivalent to array index 2. The origin vector represents translation.


Default

Vector2(1, 0)

The basis matrix's X vector (column 0). Equivalent to array index 0.


Default

Vector2(0, 1)

The basis matrix's Y vector (column 1). Equivalent to array index 1.

Constructor Descriptions

Constructs a default-initialized Transform2D set to IDENTITY.


Constructs a Transform2D as a copy of the given Transform2D.


Constructs the transform from a given angle (in radians) and position.


Constructs the transform from a given angle (in radians), scale, skew (in radians) and position.


Constructs the transform from 3 Vector2 values representing x, y, and the origin (the three column vectors).

Method Descriptions

Returns the inverse of the transform, under the assumption that the transformation is composed of rotation, scaling and translation.


Returns a vector transformed (multiplied) by the basis matrix.

This method does not account for translation (the origin vector).


Returns a vector transformed (multiplied) by the inverse basis matrix.

This method does not account for translation (the origin vector).


Returns the transform's origin (translation).


  • float get_rotation ( ) const

Returns the transform's rotation (in radians).


Returns the scale.


  • float get_skew ( ) const

Returns the transform's skew (in radians).


Returns a transform interpolated between this transform and another by a given weight (on the range of 0.0 to 1.0).


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


Returns true if this transform and transform are approximately equal, by calling is_equal_approx on each component.


Returns a copy of the transform rotated such that it's rotation on the X-axis points towards the target position.

Operations take place in global space.


Returns the transform with the basis orthogonal (90 degrees), and normalized axis vectors (scale of 1 or -1).


Rotates the transform by the given angle (in radians), using matrix multiplication.


Scales the transform by the given scale factor, using matrix multiplication.


  • void set_rotation ( float rotation )

Sets the transform's rotation (in radians).


Sets the transform's scale.


  • void set_skew ( float skew )

Sets the transform's skew (in radians).


Translates the transform by the given offset, relative to the transform's basis vectors.

Unlike rotated and scaled, this does not use matrix multiplication.

Operator Descriptions

  • bool operator != ( )


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.


Transforms (multiplies) each element of the Vector2 array by the given Transform2D matrix.


Transforms (multiplies) the Rect2 by the given Transform2D matrix.


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


Transforms (multiplies) the Vector2 by the given Transform2D matrix.


This operator multiplies all components of the Transform2D, including the origin vector, which scales it uniformly.


This operator multiplies all components of the Transform2D, including the origin vector, which scales it uniformly.


  • bool operator == ( )


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.


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.