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>

List of all members.

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)
 Test whether a point lies inside a ring.
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 bool isOnLine (const geom::Coordinate &p, const geom::CoordinateSequence *pt)
 Test whether a point lies on a linestring.
static bool isCCW (const geom::CoordinateSequence *ring)
 Computes whether a ring defined by an array of Coordinate is oriented counter-clockwise.
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.
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.
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.
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.
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.
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.


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 bool geos::algorithm::CGAlgorithms::isPointInRing ( const geom::Coordinate p,
const geom::CoordinateSequence ring 
) [static]

Test whether a point lies inside a ring.

The ring may be oriented in either direction. If the point lies on the ring boundary the result of this method is unspecified.

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

Parameters:
p point to check for ring inclusion
ring assumed to have first point identical to last point
Returns:
true if p is inside ring

static bool geos::algorithm::CGAlgorithms::isOnLine ( const geom::Coordinate p,
const geom::CoordinateSequence pt 
) [static]

Test whether a point lies on a linestring.

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::isCCW ( const geom::CoordinateSequence ring  )  [static]

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

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.

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::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:
p the point to compute the distance for
A one point of the line
B another 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:
p the point to compute the distance for
A one point of the line
B another point of the line (must be different to A)
Returns:
the distance from p to line AB

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:
A a point of one line
B the second point of (must be different to A)
C one point of the line
D another point of the line (must be different to A)

static double geos::algorithm::CGAlgorithms::length ( const geom::CoordinateSequence pts  )  [static]

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

Parameters:
pts the points specifying the linestring
Returns:
the length of the linestring

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:
p1 the origin point of the vector
p2 the final point of the vector
q the 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:
Generated on Fri Mar 27 04:53:10 2009 for GEOS by  doxygen 1.5.4