GEOS  3.4.2
Public Types | Static Public Member Functions | List of all members
geos::algorithm::CGAlgorithms Class Reference

Specifies and implements various fundamental Computational Geometric algorithms. The algorithms supplied in this class are robust for double-precision floating point. More...

#include <CGAlgorithms.h>

Public Types

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

Static Public Member Functions

static bool isPointInRing (const geom::Coordinate &p, const geom::CoordinateSequence *ring)
 Tests whether a point lies inside a ring. More...
 
static bool isPointInRing (const geom::Coordinate &p, const std::vector< const geom::Coordinate * > &ring)
 Same as above, but taking a vector of const Coordinates (faster)
 
static int locatePointInRing (const geom::Coordinate &p, const geom::CoordinateSequence &ring)
 Determines whether a point lies in the interior, on the boundary, or in the exterior of a ring. More...
 
static int locatePointInRing (const geom::Coordinate &p, const std::vector< const geom::Coordinate * > &ring)
 Same as above, but taking a vector of const Coordinates.
 
static bool isOnLine (const geom::Coordinate &p, const geom::CoordinateSequence *pt)
 Test whether a point lies on the given line segment. More...
 
static bool isCCW (const geom::CoordinateSequence *ring)
 Computes whether a ring defined by an array of Coordinate is oriented counter-clockwise. More...
 
static int computeOrientation (const geom::Coordinate &p1, const geom::Coordinate &p2, const geom::Coordinate &q)
 Computes the orientation of a point q to the directed line segment p1-p2. More...
 
static double distancePointLine (const geom::Coordinate &p, const geom::Coordinate &A, const geom::Coordinate &B)
 Computes the distance from a point p to a line segment AB. More...
 
static double distancePointLinePerpendicular (const geom::Coordinate &p, const geom::Coordinate &A, const geom::Coordinate &B)
 Computes the perpendicular distance from a point p to the (infinite) line containing the points AB. More...
 
static double distanceLineLine (const geom::Coordinate &A, const geom::Coordinate &B, const geom::Coordinate &C, const geom::Coordinate &D)
 Computes the distance from a line segment AB to a line segment CD. More...
 
static double signedArea (const geom::CoordinateSequence *ring)
 Returns the signed area for a ring. The area is positive if the ring is oriented CW.
 
static double length (const geom::CoordinateSequence *pts)
 Computes the length of a linestring specified by a sequence of points. More...
 
static int orientationIndex (const geom::Coordinate &p1, const geom::Coordinate &p2, const geom::Coordinate &q)
 Returns the index of the direction of the point q relative to a vector specified by p1-p2. More...
 

Detailed Description

Specifies and implements various fundamental Computational Geometric algorithms. The algorithms supplied in this class are robust for double-precision floating point.

Member Function Documentation

static int geos::algorithm::CGAlgorithms::computeOrientation ( const geom::Coordinate p1,
const geom::Coordinate p2,
const geom::Coordinate q 
)
static

Computes the orientation of a point q to the directed line segment p1-p2.

The orientation of a point relative to a directed line segment indicates which way you turn to get to q after travelling from p1 to p2.

Returns
1 if q is counter-clockwise from p1-p2
-1 if q is clockwise from p1-p2
0 if q is collinear with p1-p2
static double geos::algorithm::CGAlgorithms::distanceLineLine ( const geom::Coordinate A,
const geom::Coordinate B,
const geom::Coordinate C,
const geom::Coordinate D 
)
static

Computes the distance from a line segment AB to a line segment CD.

Note: NON-ROBUST!

Parameters
Aa point of one line
Bthe second point of (must be different to A)
Cone point of the line
Danother point of the line (must be different to A)
static double geos::algorithm::CGAlgorithms::distancePointLine ( const geom::Coordinate p,
const geom::Coordinate A,
const geom::Coordinate B 
)
static

Computes the distance from a point p to a line segment AB.

Note: NON-ROBUST!

Parameters
pthe point to compute the distance for
Aone point of the line
Banother point of the line (must be different to A)
Returns
the distance from p to line segment AB
static double geos::algorithm::CGAlgorithms::distancePointLinePerpendicular ( const geom::Coordinate p,
const geom::Coordinate A,
const geom::Coordinate B 
)
static

Computes the perpendicular distance from a point p to the (infinite) line containing the points AB.

Parameters
pthe point to compute the distance for
Aone point of the line
Banother point of the line (must be different to A)
Returns
the distance from p to line AB
static bool geos::algorithm::CGAlgorithms::isCCW ( const geom::CoordinateSequence ring)
static

Computes whether a ring defined by an array of Coordinate 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.
static bool geos::algorithm::CGAlgorithms::isOnLine ( const geom::Coordinate p,
const geom::CoordinateSequence pt 
)
static

Test whether a point lies on the given line segment.

Returns
true true if the point is a vertex of the line or lies in the interior of a line segment in the linestring
static bool geos::algorithm::CGAlgorithms::isPointInRing ( const geom::Coordinate p,
const geom::CoordinateSequence ring 
)
static

Tests whether a point lies inside a ring.

The ring may be oriented in either direction. A point lying exactly on the ring boundary is considered to be inside the ring.

This algorithm does not first check the point against the envelope of the ring.

Parameters
ppoint to check for ring inclusion
ringis assumed to have first point identical to last point
Returns
true if p is inside ring
See Also
locatePointInRing
static double geos::algorithm::CGAlgorithms::length ( const geom::CoordinateSequence pts)
static

Computes the length of a linestring specified by a sequence of points.

Parameters
ptsthe points specifying the linestring
Returns
the length of the linestring
static int geos::algorithm::CGAlgorithms::locatePointInRing ( const geom::Coordinate p,
const geom::CoordinateSequence ring 
)
static

Determines whether a point lies in the interior, on the boundary, or in the exterior of a ring.

The ring may be oriented in either direction.

This method does not first check the point against the envelope of the ring.

Parameters
ppoint to check for ring inclusion
ringan array of coordinates representing the ring (which must have first point identical to last point)
Returns
the Location of p relative to the ring
static int geos::algorithm::CGAlgorithms::orientationIndex ( const geom::Coordinate p1,
const geom::Coordinate p2,
const geom::Coordinate q 
)
static

Returns the index of the direction of the point q relative to a vector specified by p1-p2.

Parameters
p1the origin point of the vector
p2the final point of the vector
qthe point to compute the direction to
Returns
1 if q is counter-clockwise (left) from p1-p2
-1 if q is clockwise (right) from p1-p2
0 if q is collinear with p1-p2

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