Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | Related Pages

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

bool isPointInRing (const geom::Coordinate &p, const geom::CoordinateSequence *ring)
 Tests whether a point lies inside a ring.
bool isPointInRing (const geom::Coordinate &p, const std::vector< const geom::Coordinate * > &ring)
 Same as above, but taking a vector of const Coordinates (faster).
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.
int locatePointInRing (const geom::Coordinate &p, const std::vector< const geom::Coordinate * > &ring)
 Same as above, but taking a vector of const Coordinates.
bool isOnLine (const geom::Coordinate &p, const geom::CoordinateSequence *pt)
 Test whether a point lies on the given line segment.
bool isCCW (const geom::CoordinateSequence *ring)
 Computes whether a ring defined by an array of Coordinate is oriented counter-clockwise.
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.
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.
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.
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.
double signedArea (const geom::CoordinateSequence *ring)
 Returns the signed area for a ring. The area is positive if the ring is oriented CW.
double length (const geom::CoordinateSequence *pts)
 Computes the length of a linestring specified by a sequence of points.
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

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

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)

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

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

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:
ring an array of coordinates forming a ring
Returns:
true if the ring is oriented counter-clockwise.

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

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:
p point to check for ring inclusion
ring is assumed to have first point identical to last point
Returns:
true if p is inside ring
See also:
locatePointInRing

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

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:
p point to check for ring inclusion
ring an array of coordinates representing the ring (which must have first point identical to last point)
Returns:
the Location of p relative to the ring

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 Wed Jul 4 09:00:05 2012 for GEOS by  doxygen 1.3.9.1