An instance of the data type Aff_transformation_d<Kernel> is an affine transformation of -dimensional space. It is specified by a square matrix of dimension . All entries in the last row of M except the diagonal entry must be zero; the diagonal entry must be non-zero. A point with homogeneous coordinates can be transformed into the point p.transform(A) = , where A is an affine transformation created from M by the constructors below.
| |
the ring type.
| |
| |
the field type.
| |
| |
the linear algebra layer.
| |
| |
the matrix type.
|
| |||
introduces some
transformation.
| |||
| |||
introduces the identity transformation in
-dimensional space.
| |||
| |||
introduces the
transformation of -space specified by matrix . Precondition: M is a square matrix of dimension where entries in the last row of M except the diagonal entry must be zero; the diagonal entry must be non-zero.
| |||
| |||
| |||
introduces the transformation of -space
specified by a diagonal matrix with entries set [start,end) on
the diagonal (a scaling of the space). Precondition: set [start,end) is a vector of dimension .
| |||
| |||
introduces the translation by vector .
| |||
| |||
returns a scaling by a scale factor num/den. Precondition: den !=0 .
| |||
| |||
returns a planar rotation
with sine and cosine values sin_num/den and cos_num/den
in the plane spanned by the base vectors and in
-space. Thus the default use delivers a planar rotation in the
- plane. Precondition: and . Precondition: den != 0
| |||
| |||
returns a planar
rotation within a two-dimensional linear subspace. The subspace is
spanned by the base vectors and in -space. The
rotation parameters are given by the -dimensional direction
dir, such that the difference between the sines and cosines of
the rotation given by dir and the approximated rotation are at
most num/den each. Precondition: dir.dimension()==2, !dir.is_degenerate() and num < den is positive, den != 0, .
|
|
| the dimension of the underlying space |
|
| returns the transformation matrix |
| ||
|
returns the inverse
transformation. Precondition: t.matrix() is invertible. | |
| ||
| composition of transformations. Note that transformations are not necessarily commutative. t*s is the transformation which transforms first by t and then by s. |
Affine Transformations are implemented by matrices of number type RT as a handle type. All operations like creation, initialization, input and output on a transformation take time . dimension() takes constant time. The operations for inversion and composition have the cubic costs of the used matrix operations. The space requirement is .