Transformation

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

Bases: compas.data.data.Data

The Transformation represents a 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 of list of float, optional) – The 4x4 transformation matrix.

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

Attributes

DATASCHEMA

The schema of the data of this object.

JSONSCHEMANAME

basis_vectors

The basis vectors from the rotation component of the transformation matrix.

data

Return a Transformation object's to a data dict.

determinant

The determinant of the matrix of the transformation.

list

Flattens the 4x4 transformation matrix into a list of 16 numbers.

projection

The projection component of the transformation matrix.

rotation

The rotation component of the transformation matrix.

scale

The scale component of the transformation matrix.

shear

The shear component of the transformation matrix.

translation

The translation component of the transformation matrix.

translation_vector

Inherited Attributes

JSONSCHEMA

The schema of the JSON representation of the data of this object.

dtype

The type of the object in the form of a '2-level' import and a class name.

guid

The globally unique identifier of the object.

jsondefinitions

Reusable schema definitions.

jsonstring

The representation of the object data in JSON format.

jsonvalidator

JSON schema validator for draft 7.

name

The name of the object.

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 Scale, Shear, Rotation, Translation and Projection components.

from_change_of_basis

Computes a change of basis transformation between two frames.

from_data

Creates a Transformation from a data dict.

from_euler_angles

Construct a transformation from a rotation represented by Euler angles.

from_frame

Computes a transformation from world XY to frame.

from_frame_to_frame

Computes a transformation between two frames.

from_list

Creates a Transformation from a list of 16 numbers.

from_matrix

Creates a Transformation from a 4x4 matrix-like object.

inverse

Returns the inverse transformation.

invert

Invert this transformation.

inverted

Returns the inverse transformation.

to_data

Convert a Transformation object to a data dict.

transpose

Transpose the matrix of this transformation.

transposed

Create a transposed copy of this transformation.

Inherited Methods

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_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 (self.DATASCHEMA).

validate_json

Validate the object's data against its json schema (self.JSONSCHEMA).