A Direction_d is a vector in the d-dimensional vector space where we forget about its length. We represent directions in d-dimensional space as a tuple (h0, ,hd) of variables of type RT which we call the homogeneous coordinates of the direction. The coordinate hd must be positive. The Cartesian coordinates of a direction are ci = hi/hd for 0 ≤ i < d, which are of type FT. Two directions are equal if their Cartesian coordinates are positive multiples of each other. Directions are in one-to-one correspondence to points on the unit sphere.
Direction_d<Kernel>::LA | |
the linear algebra layer.
| |
Direction_d<Kernel>::Delta_const_iterator | |
a read-only iterator for the deltas of dir.
| |
Direction_d<Kernel>::Base_direction | |
construction tag.
|
Direction_d<Kernel> dir; | |||||
introduces a variable dir of
type Direction_d<Kernel>.
| |||||
Direction_d<Kernel> dir ( Vector_d<Kernel> v); | |||||
introduces a variable dir of type Direction_d<Kernel>
initialized to the direction of v.
| |||||
template <class InputIterator> | |||||
Direction_d<Kernel> dir ( int d, InputIterator first, InputIterator last); | |||||
introduces a variable dir of type Direction_d<Kernel> in
dimension d with representation tuple set [first,last).
| |||||
Direction_d<Kernel> dir ( int d, Base_direction, int i); | |||||
returns
a variable dir of type Direction_d<Kernel> initialized to the
direction of the i-th base vector of dimension d.
| |||||
Direction_d<Kernel> dir ( RT x, RT y); | |||||
introduces a variable dir of type Direction_d<Kernel> in
2-dimensional space.
| |||||
Direction_d<Kernel> dir ( RT x, RT y, RT z); | |||||
introduces a variable dir of type Direction_d<Kernel> in
3-dimensional space.
|
int | dir.dimension () | returns the dimension of dir. | ||
RT | dir.delta ( int i) |
returns the i-th component of dir.
| ||
RT | dir [ int i ] |
returns the i-th delta of dir.
| ||
Delta_const_iterator | dir.deltas_begin () | returns an iterator pointing to the first delta of dir. | ||
Delta_const_iterator | dir.deltas_end () | returns an iterator pointing beyond the last delta of dir. | ||
Vector_d<Kernel> | dir.vector () | returns a vector pointing in direction dir. | ||
bool | dir.is_degenerate () | returns true iff dir.delta(i)==0 for all 0 ≤ i < d. | ||
Direction_d<Kernel> | dir.transform ( Aff_transformation_d<Kernel> t) | |||
returns t(p). | ||||
Direction_d<Kernel> | dir.opposite () | returns the direction opposite to dir. | ||
Direction_d<Kernel> | - dir | returns the direction opposite to dir. |
Directions are implemented by arrays of integers as an item type. All operations like creation, initialization, tests, inversion, input and output on a direction d take time O(d.dimension()). dimension(), coordinate access and conversion take constant time. The space requirement is O(d.dimension()).