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.

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_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