GEOS  3.8.0dev
Public Types | Static Public Member Functions | List of all members
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.

Author
Martin Davis

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
ringan array of Coordinates forming a ring
Returns
true if the ring is oriented counter-clockwise.
Exceptions
IllegalArgumentExceptionif there are too few points to determine orientation (< 4)

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