Up to date

This page is up to date for Godot `4.2`. 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 a general introduction, see the Matrices and transforms tutorial.

There are notable differences when using this API with C#. See C# API 與 GDScript 的不同 for more information.

## Properties¶

 Vector2 origin `Vector2(0, 0)` Vector2 x `Vector2(1, 0)` Vector2 y `Vector2(0, 1)`

## Constructors¶

 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_conformal ( ) 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 basis is invertible (must have non-zero determinant).

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, under the assumption that the basis is orthonormal (i.e. rotation/reflection is fine, scaling/skew is not).

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

`transform.basis_xform_inv(vector)` is equivalent to `transform.inverse().basis_xform(vector)`. See inverse.

For non-orthonormal transforms (e.g. with scaling) `transform.affine_inverse().basis_xform(vector)` can be used instead. See affine_inverse.

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 basis is orthonormal (i.e. rotation/reflection is fine, scaling/skew is not). Use affine_inverse for non-orthonormal transforms (e.g. with scaling).

bool is_conformal ( ) const

Returns `true` if the transform's basis is conformal, meaning it preserves angles and distance ratios, and may only be composed of rotation and uniform scale. Returns `false` if the transform's basis has non-uniform scale or shear/skew. This can be used to validate if the transform is non-distorted, which is important for physics and other use cases.

bool is_equal_approx ( Transform2D xform ) const

Returns `true` if this transform and `xform` are approximately equal, by running @GlobalScope.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 give