\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.8 - 2D and 3D Linear Geometry Kernel

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
CGAL::Direction_2< Kernel > Class Template Reference
2D Kernel Objects

`#include <CGAL/Direction_2.h>`

## Definition

An object `d` of the class `Direction_2` is a vector in the two-dimensional vector space \( \mathbb{R}^2\) where we forget about its length.

They can be viewed as unit vectors, although there is no normalization internally, since this is error prone. Directions are used whenever the length of a vector does not matter. They also characterize a set of parallel oriented lines that have the same orientations. For example, you can ask for the direction orthogonal to an oriented plane, or the direction of an oriented line. Further, they can be used to indicate angles. The slope of a direction is `dy()`/`dx()`.

See Also
  `Kernel::Direction_2`

## Creation
| Direction_2 (const Vector_2< Kernel > &v)
| introduces the direction `d` of vector `v`.
| Direction_2 (const Line_2< Kernel > &l)
| introduces the direction `d` of line `l`.
| Direction_2 (const Ray_2< Kernel > &r)
| introduces the direction `d` of ray `r`.
| Direction_2 (const Segment_2< Kernel > &s)
| introduces the direction `d` of segment `s`.
| Direction_2 (const Kernel::RT &x, const Kernel::RT &y)
| introduces a direction `d` passing through the origin and the point with Cartesian coordinates \( (x, y)\).

## Operations
There is a total order on directions. We compare the angles between the positive \( x\)-axis and the directions in counterclockwise order.
Kernel::RT | delta (int i) const
| returns values, such that `d``== Direction_2<Kernel>(delta(0),delta(1))`. More...
Kernel::RT | dx () const
| returns `delta(0)`.
Kernel::RT | dy () const
| returns `delta(1)`.
bool | operator== (const Direction_2< Kernel > &e) const
bool | operator!= (const Direction_2< Kernel > &e) const
bool | operator< (const Direction_2< Kernel > &e) const
bool | operator> (const Direction_2< Kernel > &e) const
bool | operator<= (const Direction_2< Kernel > &e) const
bool | operator>= (const Direction_2< Kernel > &e) const
bool | counterclockwise_in_between (const Direction_2< Kernel > &d1, const Direction_2< Kernel > &d2) const
| returns true, iff `d` is not equal to `d1`, and while rotating counterclockwise starting at `d1`, `d` is reached strictly before `d2` is reached. More...
Direction_2< Kernel > | operator- () const
| The direction opposite to `d`.

## Miscellaneous
Vector_2< Kernel > | vector () const
| returns a vector that has the same direction as `d`.
Direction_2< Kernel > | transform (const Aff_transformation_2< Kernel > &t) const
| returns the direction obtained by applying `t` on `d`.

## Member Function Documentation

template<typename Kernel >

bool CGAL::Direction_2< Kernel >::counterclockwise_in_between | ( | const Direction_2< Kernel > & | d1,
|  | const Direction_2< Kernel > & | d2
| ) |  | const

returns true, iff `d` is not equal to `d1`, and while rotating counterclockwise starting at `d1`, `d` is reached strictly before `d2` is reached.

Note that true is returned if `d1` == `d2`, unless also `d` == `d1`.

template<typename Kernel >

Kernel::RT CGAL::Direction_2< Kernel >::delta | ( | int | i) |  | const

returns values, such that `d``== Direction_2<Kernel>(delta(0),delta(1))`.

Precondition
  \( 0 \leq i \leq1\).