# Transform¶

3D transformation (3×4 matrix).

## Description¶

3×4 matrix (3 rows, 4 columns) used for 3D linear transformations. It can represent transformations such as translation, rotation, or scaling. It consists of a basis (first 3 columns) and a Vector3 for the origin (last column).

## Properties¶

 Basis basis `Basis( 1, 0, 0, 0, 1, 0, 0, 0, 1 )` Vector3 origin `Vector3( 0, 0, 0 )`

## Methods¶

 Transform Transform ( Vector3 x_axis, Vector3 y_axis, Vector3 z_axis, Vector3 origin ) Transform Transform ( Basis basis, Vector3 origin ) Transform Transform ( Transform2D from ) Transform Transform ( Quat from ) Transform Transform ( Basis from ) Transform Transform interpolate_with ( Transform transform, float weight ) Transform inverse ( ) bool is_equal_approx ( Transform transform ) Transform looking_at ( Vector3 target, Vector3 up ) Transform Transform rotated ( Vector3 axis, float angle ) Transform scaled ( Vector3 scale ) Transform translated ( Vector3 offset ) Variant xform ( Variant v ) Variant

## Constants¶

• IDENTITY = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) --- `Transform` with no translation, rotation or scaling applied. When applied to other data structures, IDENTITY performs no transformation.

• FLIP_X = Transform( -1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 ) --- `Transform` with mirroring applied perpendicular to the YZ plane.

• FLIP_Y = Transform( 1, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0 ) --- `Transform` with mirroring applied perpendicular to the XZ plane.

• FLIP_Z = Transform( 1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0 ) --- `Transform` with mirroring applied perpendicular to the XY plane.

## Property Descriptions¶

 Default `Basis( 1, 0, 0, 0, 1, 0, 0, 0, 1 )`

The basis is a matrix containing 3 Vector3 as its columns: X axis, Y axis, and Z axis. These vectors can be interpreted as the basis vectors of local coordinate system traveling with the object.

 Default `Vector3( 0, 0, 0 )`

The translation offset of the transform (column 3, the fourth column). Equivalent to array index `3`.

## Method Descriptions¶

Constructs a Transform from four Vector3 values (matrix columns). Each axis corresponds to local basis vectors (some of which may be scaled).

Constructs a Transform from a Basis and Vector3.

Constructs a Transform from a Transform2D.

Constructs a Transform from a Quat. The origin will be `Vector3(0, 0, 0)`.

Constructs the Transform from a Basis. The origin will be Vector3(0, 0, 0).

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

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 its -Z axis points towards the `target` position.

The transform will first be rotated around the given `up` vector, and then fully aligned to the target by a further rotation around an axis perpendicular to both the `target` and `up` vectors.

Operations take place in global space.

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

Returns a copy of the transform rotated around the given `axis` by the given `angle` (in radians), using matrix multiplication. The `axis` must be a normalized vector.

Returns a copy of the transform with its basis and origin scaled by the given `scale` factor, using matrix multiplication.

Returns a copy of the transform translated by the given `offset`, relative to the transform's basis vectors.

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

Transforms the given Vector3, Plane, AABB, or PoolVector3Array by this transform.

Inverse-transforms the given Vector3, Plane, AABB, or PoolVector3Array by this transform, under the assumption that the transformation is composed of rotation and translation (no scaling). Equivalent to calling `inverse().xform(v)` on this transform. For affine transformations (e.g. with scaling) see affine_inverse method.