atrafo
Affine transformation data type.
Signatures
- identity()
- rotation( vector axis, float angle )
- rotation( vector onset, vector axis, float angle )
- translation( vector offset )
- scaling( float scale )
- scaling( float scaleX, float scaleY, float scaleZ )
- scaling( vector onset, float scale )
- scaling( vector onset, float scaleX, float scaleY, float scaleZ )
- atrafo( matrix tmatrix )
Details
Affine transformations are a set of space transformations that include most of the "typical" transformations like rotation, translation and scaling (see https://en.wikipedia.org/wiki/Affine_transformation). The different specific constructors can be used to create atrafo objects that represent these operations (see example 1).
The identity() constructor (1) creates a neutral transformation. The rotation() constructors defines a rotation with an angle around a given axis vector that starts in the coordinate system origin (2) or in a given onset space point. Constructor (4) performs a translation along a given offset vector. The scaling constructors (5) and (7) perform a uniform scaling while constructors (6) and (8) scale into each coordinate axis individually. (7) and (8) take an onset space point defining the neutral point of the scaling. Constructor (9) creates a general affine transformation from a given matrix.
An affine transformation can always be expressed by its transformation matrix. This can be accessed from an atrafo object by its member tmatrix.
Multiple affine transformations can be stacked together by using the << operator. This corresponds to the multiplication of the transformations' matrices. The result is therefore an affine transformation itself (see example 2).
Example
make rotation( <[ 0.0, 0.0, 1.0 ]>, rad( 45 ) ) >> box()
Example
atrafo t = rotation( <[ 0.0, 0.0, 1.0 ]>, rad( 45 ) ) >>
scaling( 0.5 )
echo( t )
Output
atrafo(<[<[0.353553,-0.353553,0,0]>,<[0.353553,0.353553,0,0]>,<[0,0,0.5,0]>]>)
Casts To
Members
- matrix tmatrix
-
Returns the transformation matrix of the affine transformation.
Parameters
- axis
-
Vector that determines the rotation axis.
- angle
-
The rotation angle (in rad). The rotation is right handed for positive and left handed for negative values.
- onset
-
Space point that acts as alternative origin for rotation or scaling transformations.
- scale
-
Uniform scaling factor s. For |s| > 1 the transformation is enlarging, for |s| < 1 it is a shrinking transformation. Negative values flip the object.
- scaleX
-
Scaling factor in X direction.
- scaleY
-
Scaling factor in Y direction.
- scaleZ
-
Scaling factor in Y direction.