\( \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
Kernel::CoplanarOrientation_3 Concept Reference
Kernel Function Object Concepts

## Definition

Refines:
  `AdaptableFunctor` (with four arguments)

See Also
  `CGAL::coplanar_orientation()`

## Operations
A model of this concept must provide:
Orientation | operator() (const Kernel::Point_3 &p, const Kernel::Point_3 &q, const Kernel::Point_3 &r, const Kernel::Point_3 &s)
| Let `p` be the plane defined by the points `p`, `q`, and `r`. More...
Orientation | operator() (const Kernel::Point_3 &p, const Kernel::Point_3 &q, const Kernel::Point_3 &r)
| If `p,q,r` are collinear, then CGAL::COLLINEAR is returned. More...

## Member Function Documentation

Orientation Kernel::CoplanarOrientation_3::operator() | ( | const Kernel::Point_3 & | p,
|  | const Kernel::Point_3 & | q,
|  | const Kernel::Point_3 & | r,
|  | const Kernel::Point_3 & | s
| ) |  |

Let `p` be the plane defined by the points `p`, `q`, and `r`.

Note that the order defines the orientation of `p`. The function computes the orientation of points `p`, `q`, and `s` in `p`: Iff `p`, `q`, `s` are collinear, CGAL::COLLINEAR is returned. Iff `p` and the plane defined by `p`, `q`, and `s` have the same orientation, CGAL::POSITIVE is returned; otherwise CGAL::NEGATIVE is returned.

Precondition
  `p`, `q`, `r`, and `s` are coplanar and `p`, `q`, and `r` are not collinear.

Orientation Kernel::CoplanarOrientation_3::operator() | ( | const Kernel::Point_3 & | p,
|  | const Kernel::Point_3 & | q,
|  | const Kernel::Point_3 & | r
| ) |  |

If `p,q,r` are collinear, then CGAL::COLLINEAR is returned.

If not, then `p,q,r` define a plane `p`. The return value in this case is either CGAL::POSITIVE or CGAL::NEGATIVE, but we don't specify it explicitly. However, we guarantee that all calls to this predicate over 3 points in `p` will return a coherent orientation if considered a 2D orientation in `p`.