GEOS  3.9.0dev
geos::algorithm::Orientation Class Reference

Functions to compute the orientation of basic geometric structures including point triplets (triangles) and rings. More...

`#include <Orientation.h>`

## Public Types

enum  {
CLOCKWISE = -1, COLLINEAR = 0, COUNTERCLOCKWISE = 1, RIGHT = -1,
LEFT = 1, STRAIGHT = 0
}

## Static Public Member Functions

static int index (const geom::Coordinate &p1, const geom::Coordinate &p2, const geom::Coordinate &q)
Returns the orientation index of the direction of the point q relative to a directed infinite line specified by p1-p2. More...

static bool isCCW (const geom::CoordinateSequence *ring)
Computes whether a ring defined by an array of Coordinates is oriented counter-clockwise. More...

## Detailed Description

Functions to compute the orientation of basic geometric structures including point triplets (triangles) and rings.

Orientation is a fundamental property of planar geometries (and more generally geometry on two-dimensional manifolds).

Orientation is notoriously subject to numerical precision errors in the case of collinear or nearly collinear points. JTS uses extended-precision arithmetic to increase the robustness of the computation.

## Member Function Documentation

 static int geos::algorithm::Orientation::index ( const geom::Coordinate & p1, const geom::Coordinate & p2, const geom::Coordinate & q )
static

Returns the orientation index of the direction of the point q relative to a directed infinite line specified by p1-p2.

The index indicates whether the point lies to the `Orientation::LEFT` or `Orientation::RIGHT` of the line, or lies on it `Orientation::COLLINEAR`. The index also indicates the orientation of the triangle formed by the three points ( `Orientation::COUNTERCLOCKWISE`, `Orientation::CLOCKWISE`, or `Orientation::STRAIGHT` )

 static bool geos::algorithm::Orientation::isCCW ( const geom::CoordinateSequence * ring )
static

Computes whether a ring defined by an array of Coordinates is oriented counter-clockwise.

• The list of points is assumed to have the first and last points equal.
• This will handle coordinate lists which contain repeated points.

This algorithm is only guaranteed to work with valid rings. If the ring is invalid (e.g. self-crosses or touches), the computed result may not be correct.

Parameters
 ring an array of Coordinates forming a ring
Returns
`true` if the ring is oriented counter-clockwise.
Exceptions
 IllegalArgumentException if there are too few points to determine orientation (< 4)

The documentation for this class was generated from the following file: