com.vividsolutions.jts.algorithm
Class CGAlgorithms

java.lang.Object
  extended bycom.vividsolutions.jts.algorithm.CGAlgorithms
Direct Known Subclasses:
NonRobustCGAlgorithms, RobustCGAlgorithms

public abstract class CGAlgorithms
extends java.lang.Object

Specifies and implements various fundamental Computational Geometric algorithms.

Version:
1.4.0

Field Summary
static int CLOCKWISE
          A value that indicates an orientation of clockwise, or a right turn.
static int COLLINEAR
          A value that indicates an orientation of collinear, or no turn (straight).
static int COUNTERCLOCKWISE
          A value that indicates an orientation of counterclockwise, or a left turn.
static int LEFT
           
static int RIGHT
           
static int STRAIGHT
           
 
Constructor Summary
CGAlgorithms()
           
 
Method Summary
abstract  int computeOrientation(Coordinate p1, Coordinate p2, Coordinate q)
          Computes the orientation of a point q to the directed line segment p1-p2.
static double distanceLineLine(Coordinate A, Coordinate B, Coordinate C, Coordinate D)
          Computes the distance from a line segment AB to a line segment CD Note: NON-ROBUST!
static double distancePointLine(Coordinate p, Coordinate A, Coordinate B)
          Computes the distance from a point p to a line segment AB Note: NON-ROBUST!
static double distancePointLinePerpendicular(Coordinate p, Coordinate A, Coordinate B)
          Computes the perpendicular distance from a point p to the (infinite) line containing the points AB
abstract  boolean isCCW(Coordinate[] ring)
          Tests whether a ring (simple polygon) is oriented counter-clockwise.
abstract  boolean isOnLine(Coordinate p, Coordinate[] linestring)
          Test whether a point lies on the line segments defined by a list of coordinates.
abstract  boolean isPointInRing(Coordinate p, Coordinate[] ring)
          Test whether a point lies inside a ring.
static double length(CoordinateSequence pts)
          Computes the length of a linestring specified by a sequence of points.
static double signedArea(Coordinate[] ring)
          Returns the signed area for a ring.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLOCKWISE

public static final int CLOCKWISE
A value that indicates an orientation of clockwise, or a right turn.

See Also:
Constant Field Values

RIGHT

public static final int RIGHT
See Also:
Constant Field Values

COUNTERCLOCKWISE

public static final int COUNTERCLOCKWISE
A value that indicates an orientation of counterclockwise, or a left turn.

See Also:
Constant Field Values

LEFT

public static final int LEFT
See Also:
Constant Field Values

COLLINEAR

public static final int COLLINEAR
A value that indicates an orientation of collinear, or no turn (straight).

See Also:
Constant Field Values

STRAIGHT

public static final int STRAIGHT
See Also:
Constant Field Values
Constructor Detail

CGAlgorithms

public CGAlgorithms()
Method Detail

isPointInRing

public abstract boolean isPointInRing(Coordinate p,
                                      Coordinate[] ring)
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.

Returns:
true if the point lies in the interior of the ring

isOnLine

public abstract boolean isOnLine(Coordinate p,
                                 Coordinate[] linestring)
Test whether a point lies on the line segments defined by a list of coordinates.

Returns:
true true if the point is a vertex of the line or lies in the interior of a line segment in the linestring

isCCW

public abstract boolean isCCW(Coordinate[] ring)
Tests whether a ring (simple polygon) is oriented counter-clockwise. The list of points is assumed to have the first and last points equal. If the point list does not form a valid ring the result is undefined. This method is not guaranteed to work on coordinate lists which contain repeated points.

Parameters:
ring - an array of coordinates forming a ring
Returns:
true if the ring is oriented counter-clockwise

computeOrientation

public abstract int computeOrientation(Coordinate p1,
                                       Coordinate p2,
                                       Coordinate q)
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

distancePointLine

public static double distancePointLine(Coordinate p,
                                       Coordinate A,
                                       Coordinate B)
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

distancePointLinePerpendicular

public static double distancePointLinePerpendicular(Coordinate p,
                                                    Coordinate A,
                                                    Coordinate B)
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

distanceLineLine

public static double distanceLineLine(Coordinate A,
                                      Coordinate B,
                                      Coordinate C,
                                      Coordinate D)
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)

signedArea

public static double signedArea(Coordinate[] ring)
Returns the signed area for a ring. The area is positive if the ring is oriented CW.


length

public static double length(CoordinateSequence pts)
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