19 #ifndef GEOS_NODING_SEGMENTPOINTCOMPARATOR_H
20 #define GEOS_NODING_SEGMENTPOINTCOMPARATOR_H
22 #include <geos/export.h>
23 #include <geos/geom/Coordinate.h>
55 if (p0.equals2D(p1))
return 0;
57 int xSign = relativeSign(p0.
x, p1.
x);
58 int ySign = relativeSign(p0.
y, p1.
y);
61 case 0:
return compareValue(xSign, ySign);
62 case 1:
return compareValue(ySign, xSign);
63 case 2:
return compareValue(ySign, -xSign);
64 case 3:
return compareValue(-xSign, ySign);
65 case 4:
return compareValue(-xSign, -ySign);
66 case 5:
return compareValue(-ySign, -xSign);
67 case 6:
return compareValue(-ySign, xSign);
68 case 7:
return compareValue(xSign, -ySign);
75 static int relativeSign(
double x0,
double x1)
77 if (x0 < x1)
return -1;
78 if (x0 > x1)
return 1;
82 static int compareValue(
int compareSign0,
int compareSign1)
84 if (compareSign0 < 0)
return -1;
85 if (compareSign0 > 0)
return 1;
86 if (compareSign1 < 0)
return -1;
87 if (compareSign1 > 0)
return 1;
96 #endif // GEOS_NODING_SEGMENTPOINTCOMPARATOR_H
double y
y-coordinate
Definition: Coordinate.h:83
static int compare(int octant, const geom::Coordinate &p0, const geom::Coordinate &p1)
Definition: SegmentPointComparator.h:51
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
double x
x-coordinate
Definition: Coordinate.h:80
Definition: SegmentPointComparator.h:39