ExactPredicates.closestMethod
closest(p :: 3, q :: 3, a :: 3) -> Int

Return 1 if a is closer to p than to q. Return –1 if a is closer to q than to p. Return 0 is a is equally close to both.

ExactPredicates.closestMethod
closest(p :: 2, q :: 2, a :: 2) -> Int
  • Return 1 if a is closer to p than to q.
  • Return –1 if a is closer to q than to p.
  • Return 0 is a is equally close to both.
ExactPredicates.incircleMethod
incircle(a :: 2, b :: 2, c :: 2, p :: 2) -> Int

Assume that a, b and c define a counterclockwise triangle.

  • Return 1 if p is strictly inside the circumcircle of this triangle.
  • Return –1 if p is outside.
  • Return 0 if p is on the circle.

If the triangle is oriented clockwise, the signs are reversed. If a, b and c are collinear, this degenerate to an orientation test.

If two of the four arguments are equal, return 0.

ExactPredicates.insphereMethod
insphere(p :: 3, q :: 3, r :: 3, s :: 3, a :: 3)
  • Return 1 if a is inside the circumscribed sphere defined by the four points p, q, r and s.
  • Return –1 if a is outside.
  • Return 0 is a lies on the sphere or if the four points are coplanar.
ExactPredicates.intersectorderMethod
intersectorder(a :: 2, b :: 2, pa :: 2, pb :: 2, qa :: 2, qb :: 2) -> Int

Consider the oriented line L defined by a and b, the line P defined by pa and pb and the line Q defined by qa and qb.

Assumes that parallelorder(a, b, pa, pb) and parallelorder(a, b, qa, qb) have the same sign. Otherwise, the result has the opposite sign.

  • return -1 if the intersection of P with L comes before the intersection of Q with L, following the orientation of L.
  • return 1 in the reverse situation
  • return 0 in case of equality or degeneracy.
ExactPredicates.lengthcompareMethod
lengthcompare(a :: 2, b :: 2, c :: 2, d :: 2) -> Int
  • return -1 if the distance between a and b is smaller than the distance between c and d
  • return 1 in the reverse situation
  • return 0 in case the distance are equal
ExactPredicates.meetMethod
meet(p :: 2, q :: 2, a :: 2, b :: 2)
  • Return 1 if the open line segments (p, q) and (a, b) meet in a single point.
  • Return 0 if the the closed line segments [p, q] and [a, b] meet in one or several points.
  • Return –1 otherwise.
ExactPredicates.orientMethod
orient(p :: 3, q :: 3, r :: 3, a :: 3) -> Int

Consider the oriented plane on which the triangle pqr is positively oriented.

  • Return 1 if a is below this plane.
  • Return –1 if a is above this plane.
  • Return 0 if a lies on this plane.
ExactPredicates.orientMethod
orient(p :: 2, q :: 2, r :: 2) -> Int
  • Return 1 if r is on the left of the oriented line defined by p and q.
  • Return –1 if r is on the right.
  • Return 0 if r is on the line or if p == q.
ExactPredicates.parallelorderMethod
parallelorder(a :: 2, b :: 2, p :: 2, q :: 2) -> Int

Consider the oriented line defined by a and b and the parallel lines passing through p and q respectively, with the same orientation.

  • return 1 if the line passing through p is left of the line passing through q.
  • return -1 in the reverse situation.
  • return 0 if a and b are equal or if the parallel lines passing through p and q are equal.

This is a robust version of to orient(b-a, q-p, 0). Note also that orient(a, b, c) == parallelorder(a, b, a, c).

ExactPredicates.samesideMethod
sameside(p :: 2, a :: 2, b :: 2)

Assume that the three arguments are collinear, on some line L

  • Return 1 if a and b are on the same side of p on L
  • Return -1 if a and b are on different sides
  • Return 0 if a == p or b == p.