compare static method

int compare(
  1. int octant,
  2. Coordinate p0,
  3. Coordinate p1
)

Compares two {@link Coordinate}s for their relative position along a segment lying in the specified {@link Octant}.

@return -1 node0 occurs first; 0 the two nodes are equal; 1 node1 occurs first

Implementation

static int compare(int octant, Coordinate p0, Coordinate p1) {
  // nodes can only be equal if their coordinates are equal
  if (p0.equals2D(p1)) return 0;

  int xSign = relativeSign(p0.x, p1.x);
  int ySign = relativeSign(p0.y, p1.y);

  switch (octant) {
    case 0:
      return compareValue(xSign, ySign);
    case 1:
      return compareValue(ySign, xSign);
    case 2:
      return compareValue(ySign, -xSign);
    case 3:
      return compareValue(-xSign, ySign);
    case 4:
      return compareValue(-xSign, -ySign);
    case 5:
      return compareValue(-ySign, -xSign);
    case 6:
      return compareValue(-ySign, xSign);
    case 7:
      return compareValue(xSign, -ySign);
  }
  Assert.shouldNeverReachHere("invalid octant value");
  return 0;
}