\( \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::Triangle_2< Kernel > Class Template Reference
2D Kernel Objects

`#include <CGAL/Triangle_2.h>`

## Definition

An object `t` of the class `Triangle_2` is a triangle in the two-dimensional Euclidean plane \( \E^2\).

Triangle `t` is oriented, i.e., its boundary has clockwise or counterclockwise orientation. We call the side to the left of the boundary the positive side and the side to the right of the boundary the negative side.

The boundary of a triangle splits the plane in two open regions, a bounded one and an unbounded one.

See Also
  `Kernel::Triangle_2`

## Creation
| Triangle_2 (const Point_2< Kernel > &p, const Point_2< Kernel > &q, const Point_2< Kernel > &r)
| introduces a triangle `t` with vertices `p`, `q` and `r`.

## Operations
bool | operator== (const Triangle_2< Kernel > &t2) const
| Test for equality: two triangles are equal, iff there exists a cyclic permutation of the vertices of \( t2\), such that they are equal to the vertices of `t`.
bool | operator!= (const Triangle_2< Kernel > &t2) const
| Test for inequality.
Point_2< Kernel > | vertex (int i) const
| returns the i'th vertex modulo 3 of `t`.
Point_2< Kernel > | operator[] (int i) const
| returns `vertex(i)`.

## Predicates
For convenience we provide the following Boolean functions:
bool | is_degenerate () const
| triangle `t` is degenerate, if the vertices are collinear.
Orientation | orientation () const
| returns the orientation of `t`.
Oriented_side | oriented_side (const Point_2< Kernel > &p) const
| returns `ON_ORIENTED_BOUNDARY`, or `POSITIVE_SIDE`, or the constant `ON_NEGATIVE_SIDE`, determined by the position of point `p`. More...
Bounded_side | bounded_side (const Point_2< Kernel > &p) const
| returns the constant `ON_BOUNDARY`, `ON_BOUNDED_SIDE`, or else `ON_UNBOUNDED_SIDE`, depending on where point `p` is. More...
bool | has_on_positive_side (const Point_2< Kernel > &p) const
bool | has_on_negative_side (const Point_2< Kernel > &p) const
bool | has_on_boundary (const Point_2< Kernel > &p) const
bool | has_on_bounded_side (const Point_2< Kernel > &p) const
bool | has_on_unbounded_side (const Point_2< Kernel > &p) const

## Miscellaneous
Triangle_2< Kernel > | opposite ()
| returns a triangle where the boundary is oriented the other way round (this flips the positive and the negative side, but not the bounded and unbounded side).
Kernel::FT | area () const
| returns the signed area of `t`.
Bbox_2 | bbox () const
| returns a bounding box containing `t`.
Triangle_2< Kernel > | transform (const Aff_transformation_2< Kernel > &at) const
| returns the triangle obtained by applying \( at\) on the three vertices of `t`.

## Member Function Documentation

template<typename Kernel >

Bounded_side CGAL::Triangle_2< Kernel >::bounded_side | ( | const Point_2< Kernel > & | p) |  | const

returns the constant `ON_BOUNDARY`, `ON_BOUNDED_SIDE`, or else `ON_UNBOUNDED_SIDE`, depending on where point `p` is.

Precondition
  `t` is not degenerate.

template<typename Kernel >

bool CGAL::Triangle_2< Kernel >::has_on_unbounded_side | ( | const Point_2< Kernel > & | p) |  | const

Precondition
  `t` is not degenerate.

template<typename Kernel >

Oriented_side CGAL::Triangle_2< Kernel >::oriented_side | ( | const Point_2< Kernel > & | p) |  | const

returns `ON_ORIENTED_BOUNDARY`, or `POSITIVE_SIDE`, or the constant `ON_NEGATIVE_SIDE`, determined by the position of point `p`.

Precondition
  `t` is not degenerate.