CGAL 4.5 - dD Geometry Kernel
|
#include <CGAL/Kernel_d/Aff_transformation_d.h>
An instance of the data type Aff_transformation_d<Kernel>
is an affine transformation of d-dimensional space.
It is specified by a square matrix M of dimension d+1. All entries in the last row of M
except the diagonal entry must be zero; the diagonal entry must be non-zero. A point p with homogeneous coordinates (p[0],…,p[d]) can be transformed into the point p.transform(A)
= Mp, where A
is an affine transformation created from M
by the constructors below.
Implementation
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 t take time O(t.dimension()2). dimension()
takes constant time. The operations for inversion and composition have the cubic costs of the used matrix operations. The space requirement is O(t.dimension()2).
Types | |
typedef unspecified_type | LA |
the linear algebra layer. | |
typedef unspecified_type | Matrix |
the matrix type. | |
Creation | |
Aff_transformation_d () | |
introduces some transformation. | |
Aff_transformation_d (int d, Identity_transformation) | |
introduces the identity transformation in d-dimensional space. | |
Aff_transformation_d (Matrix M) | |
introduces the transformation of d-space specified by matrix M. More... | |
template<typename Forward_iterator > | |
Aff_transformation_d (Scaling, Forward_iterator start, Forward_iterator end) | |
introduces the transformation of d-space specified by a diagonal matrix with entries set [start,end) on the diagonal (a scaling of the space). More... | |
Aff_transformation_d (Translation, Vector_d< Kernel > v) | |
introduces the translation by vector v. | |
Aff_transformation_d (int d, Scaling, RT num, RT den) | |
returns a scaling by a scale factor num/den . More... | |
Aff_transformation_d (int d, Rotation, RT sin_num, RT cos_num, RT den, int e1=0, int e2=1) | |
returns a planar rotation with sine and cosine values sin_num/den and cos_num/den in the plane spanned by the base vectors be1 and be2 in d-space. More... | |
Aff_transformation_d (int d, Rotation, Direction_d< Kernel > dir, RT num, RT den, int e1=0, int e2=1) | |
returns a planar rotation within a two-dimensional linear subspace. More... | |
Operations | |
int | dimension () |
the dimension of the underlying space | |
const Matrix & | matrix () |
returns the transformation matrix More... | |
Aff_transformation_d< Kernel > | inverse () |
returns the inverse transformation. More... | |
Aff_transformation_d< Kernel > | operator* (const Aff_transformation_d< Kernel > &s) |
composition of transformations. More... | |
CGAL::Aff_transformation_d< Kernel >::Aff_transformation_d | ( | Matrix | M) |
introduces the transformation of d-space specified by matrix M.
M
is a square matrix of dimension d+1 where entries in the last row of M
except the diagonal entry must be zero; the diagonal entry must be non-zero. CGAL::Aff_transformation_d< Kernel >::Aff_transformation_d | ( | Scaling | , |
Forward_iterator | start, | ||
Forward_iterator | end | ||
) |
introduces the transformation of d-space specified by a diagonal matrix with entries set [start,end)
on the diagonal (a scaling of the space).
set [start,end)
is a vector of dimension d+1. CGAL::Aff_transformation_d< Kernel >::Aff_transformation_d | ( | int | d, |
Scaling | , | ||
RT | num, | ||
RT | den | ||
) |
returns a scaling by a scale factor num/den
.
den != 0
. CGAL::Aff_transformation_d< Kernel >::Aff_transformation_d | ( | int | d, |
Rotation | , | ||
RT | sin_num, | ||
RT | cos_num, | ||
RT | den, | ||
int | e1 = 0 , |
||
int | e2 = 1 |
||
) |
returns a planar rotation with sine and cosine values sin_num/den
and cos_num/den
in the plane spanned by the base vectors be1 and be2 in d-space.
Thus the default use delivers a planar rotation in the x- y plane.
den != 0
. CGAL::Aff_transformation_d< Kernel >::Aff_transformation_d | ( | int | d, |
Rotation | , | ||
Direction_d< Kernel > | dir, | ||
RT | num, | ||
RT | den, | ||
int | e1 = 0 , |
||
int | e2 = 1 |
||
) |
returns a planar rotation within a two-dimensional linear subspace.
The subspace is spanned by the base vectors be1 and be2 in d-space. The rotation parameters are given by the 2-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.
dir.dimension() == 2
, !dir.is_degenerate()
and num < den
is positive, den != 0
, 0≤e1<e2<d. Aff_transformation_d<Kernel> CGAL::Aff_transformation_d< Kernel >::inverse | ( | ) |
returns the inverse transformation.
t.matrix()
is invertible. const Matrix& CGAL::Aff_transformation_d< Kernel >::matrix | ( | ) |
returns the transformation matrix
Aff_transformation_d<Kernel> CGAL::Aff_transformation_d< Kernel >::operator* | ( | const Aff_transformation_d< Kernel > & | s) |
composition of transformations.
Note that transformations are not necessarily commutative. t*s
is the transformation which transforms first by t
and then by s
.