Transformation

class compas.geometry.Transformation(matrix=None)[source]

Bases: Data

Class representing a general 4x4 transformation matrix.

It is the base class for transformations like Rotation, Translation, Scale, Reflection, Projection and Shear.

The class allows to concatenate Transformations by multiplication, to calculate the inverse transformation and to decompose a transformation into its components of rotation, translation, scale, shear, and perspective. The matrix follows the row-major order, such that translation components x, y, z are in the right column of the matrix, i.e. M[0][3], M[1][3], M[2][3] = x, y, z.

Parameters

matrix (list[list[float]], optional) – The 4x4 transformation matrix.

Attributes
  • scale (Scale, read-only) – The scale component of the transformation matrix.

  • shear (Shear, read-only) – The shear component of the transformation matrix.

  • rotation (Rotation, read-only) – The rotation component of the transformation matrix.

  • translation (Translation, read-only) – The translation component of the transformation matrix.

  • projection (Projection, read-only) – The projection component of the transformation matrix.

  • translation_vector (Vector, read-only) – The translation component of the transformation matrix as a translation vector.

  • basis_vectors (tuple[Vector, Vector], read-only) – The basis vectors from the rotation component of the transformation matrix.

  • list (list[float], read-only) – Flattens the 4x4 transformation matrix into a list of 16 numbers.

  • determinant (float, read-only) – The determinant of the matrix of the transformation.

Examples

>>> from compas.geometry import Frame
>>> f1 = Frame([1, 1, 1], [0.68, 0.68, 0.27], [-0.67, 0.73, -0.15])
>>> T = Transformation.from_frame(f1)
>>> Sc, Sh, R, Tl, P = T.decomposed()
>>> Tinv = T.inverse()

Methods

concatenate

Concatenate another transformation to this transformation.

concatenated

Concatenate two transformations into one Transformation.

copy

Returns a copy of the transformation.

decomposed

Decompose the Transformation into its components.

from_change_of_basis

Construct a change of basis transformation between two frames.

from_euler_angles

Construct a transformation from a rotation represented by Euler angles.

from_frame

Construct a transformation from world XY to frame.

from_frame_to_frame

Construct a transformation between two frames.

from_list

Creates a transformation from a list of 16 numbers.

from_matrix

Creates a transformation from a list[list[float]] object.

inverse

Returns the inverse transformation.

invert

Invert this transformation.

inverted

Returns the inverse transformation.

transpose

Transpose the matrix of this transformation.

transposed

Create a transposed copy of this transformation.

Inherited Methods

from_data

Construct an object of this type from the provided data.

from_json

Construct an object from serialized data contained in a JSON file.

from_jsonstring

Construct an object from serialized data contained in a JSON string.

to_data

Convert an object to its native data representation.

to_json

Serialize the data representation of an object to a JSON file.

to_jsonstring

Serialize the data representation of an object to a JSON string.

validate_data

Validate the object's data against its data schema.

validate_json

Validate the object's data against its json schema.