public class CGAlgorithmsDD
extends java.lang.Object
DD
arithmetic.Modifier and Type | Field and Description |
---|---|
private static double |
DP_SAFE_EPSILON
A value which is safely greater than the
relative round-off error in double-precision numbers
|
Modifier | Constructor and Description |
---|---|
private |
CGAlgorithmsDD() |
Modifier and Type | Method and Description |
---|---|
static Coordinate |
intersection(Coordinate p1,
Coordinate p2,
Coordinate q1,
Coordinate q2)
Computes an intersection point between two lines
using DD arithmetic.
|
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 . |
private static int |
orientationIndexFilter(Coordinate pa,
Coordinate pb,
Coordinate pc)
A filter for computing the orientation index of three coordinates.
|
static int |
signOfDet2x2(DD x1,
DD y1,
DD x2,
DD y2)
Computes the sign of the determinant of the 2x2 matrix
with the given entries.
|
static int |
signOfDet2x2(double dx1,
double dy1,
double dx2,
double dy2)
Computes the sign of the determinant of the 2x2 matrix
with the given entries.
|
private static int |
signum(double x) |
private static final double DP_SAFE_EPSILON
public static int orientationIndex(Coordinate p1, Coordinate p2, Coordinate q)
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 topublic static int signOfDet2x2(DD x1, DD y1, DD x2, DD y2)
public static int signOfDet2x2(double dx1, double dy1, double dx2, double dy2)
private static int orientationIndexFilter(Coordinate pa, Coordinate pb, Coordinate pc)
If the orientation can be computed safely using standard DP arithmetic, this routine returns the orientation index. Otherwise, a value i > 1 is returned. In this case the orientation index must be computed using some other more robust method. The filter is fast to compute, so can be used to avoid the use of slower robust methods except when they are really needed, thus providing better average performance.
Uses an approach due to Jonathan Shewchuk, which is in the public domain.
pa
- a coordinatepb
- a coordinatepc
- a coordinateprivate static int signum(double x)
public static Coordinate intersection(Coordinate p1, Coordinate p2, Coordinate q1, Coordinate q2)
p1
- p2
- q1
- q2
-