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;
Coordinate is the lightweight class used to store coordinates.
Definition Coordinate.h:60
double y
y-coordinate
Definition Coordinate.h:83
double x
x-coordinate
Definition Coordinate.h:80
Definition SegmentPointComparator.h:39
static int compare(int octant, const geom::Coordinate &p0, const geom::Coordinate &p1)
Definition SegmentPointComparator.h:51
Classes to compute nodings for arrangements of line segments and line segment sequences.
Definition PreparedLineString.h:27
Basic namespace for all GEOS functionalities.
Definition IndexedNestedRingTester.h:25