GEOS
3.9.0dev

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 p1p2. More...  
static bool  isCCW (const geom::CoordinateSequence *ring) 
Computes whether a ring defined by an array of Coordinates is oriented counterclockwise. More...  
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 twodimensional manifolds).
Orientation is notoriously subject to numerical precision errors in the case of collinear or nearly collinear points. JTS uses extendedprecision arithmetic to increase the robustness of the computation.

static 
Returns the orientation index of the direction of the point q relative to a directed infinite line specified by p1p2.
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 
Computes whether a ring defined by an array of Coordinates is oriented counterclockwise.
This algorithm is only guaranteed to work with valid rings. If the ring is invalid (e.g. selfcrosses or touches), the computed result may not be correct.
ring  an array of Coordinates forming a ring 
true
if the ring is oriented counterclockwise. IllegalArgumentException  if there are too few points to determine orientation (< 4) 