com.vividsolutions.jts.algorithm
Class CGAlgorithms
java.lang.Object
com.vividsolutions.jts.algorithm.CGAlgorithms
public class CGAlgorithms
extends java.lang.Object
Specifies and implements various fundamental Computational Geometric algorithms.
The algorithms supplied in this class are robust for double-precision floating point.
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
|
static 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
|
static boolean | isCCW(Coordinate[] ring) - Computes whether a ring defined by an array of
Coordinate is
oriented counter-clockwise.
|
static boolean | isOnLine(Coordinate p, Coordinate[] pt) - Test whether a point lies on the line segments defined by a
list of coordinates.
|
static 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 int | orientationIndex(Coordinate p1, Coordinate p2, Coordinate q) - Returns the index of the direction of the point
q
relative to a
vector specified by p1-p2 .
|
static double | signedArea(Coordinate[] ring) - Returns the signed area for a ring.
|
CLOCKWISE
public static final int CLOCKWISE
A value that indicates an orientation of clockwise, or a right turn.
COLLINEAR
public static final int COLLINEAR
A value that indicates an orientation of collinear, or no turn (straight).
COUNTERCLOCKWISE
public static final int COUNTERCLOCKWISE
A value that indicates an orientation of counterclockwise, or a left turn.
LEFT
public static final int LEFT
RIGHT
public static final int RIGHT
STRAIGHT
public static final int STRAIGHT
CGAlgorithms
public CGAlgorithms()
computeOrientation
public static 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.
- 1 if q is counter-clockwise from p1-p2
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!
A
- a point of one lineB
- the second point of (must be different to A)C
- one point of the lineD
- another point of the line (must be different to A)
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!
p
- the point to compute the distance forA
- one point of the lineB
- another point of the line (must be different to A)
- 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
p
- the point to compute the distance forA
- one point of the lineB
- another point of the line (must be different to A)
- the distance from p to line AB
isCCW
public static boolean isCCW(Coordinate[] ring)
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.
- If the ring is invalid, the answer returned may not be correct.
ring
- an array of coordinates forming a ring
true
if the ring is oriented counter-clockwise.
isOnLine
public static boolean isOnLine(Coordinate p,
Coordinate[] pt)
Test whether a point lies on the line segments defined by a
list of coordinates.
- true true if
the point is a vertex of the line or lies in the interior of a line
segment in the linestring
isPointInRing
public static 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.
This algorithm does not attempt to first check the point against the envelope
of the ring.
p
- point to check for ring inclusionring
- assumed to have first point identical to last point
length
public static double length(CoordinateSequence pts)
Computes the length of a linestring specified by a sequence of points.
pts
- the points specifying the linestring
- the length of the linestring
orientationIndex
public static int orientationIndex(Coordinate p1,
Coordinate p2,
Coordinate q)
Returns the index of the direction of the point q
relative to a
vector specified by p1-p2
.
p1
- the origin point of the vectorp2
- the final point of the vectorq
- the point to compute the direction to
- 1 if q is counter-clockwise (left) from p1-p2
signedArea
public static double signedArea(Coordinate[] ring)
Returns the signed area for a ring. The area is positive if
the ring is oriented CW.