ExactPredicates.closest
— Methodclosest(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.closest
— Methodclosest(p :: 2, q :: 2, a :: 2) -> Int
- Return 1 if
a
is closer top
than toq
. - Return –1 if
a
is closer toq
than top
. - Return 0 is
a
is equally close to both.
ExactPredicates.incircle
— Methodincircle(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.insphere
— Methodinsphere(p :: 3, q :: 3, r :: 3, s :: 3, a :: 3)
- Return 1 if
a
is inside the circumscribed sphere defined by the four pointsp
,q
,r
ands
. - Return –1 if
a
is outside. - Return 0 is
a
lies on the sphere or if the four points are coplanar.
ExactPredicates.intersectorder
— Methodintersectorder(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.lengthcompare
— Methodlengthcompare(a :: 2, b :: 2, c :: 2, d :: 2) -> Int
- return -1 if the distance between
a
andb
is smaller than the distance betweenc
andd
- return 1 in the reverse situation
- return 0 in case the distance are equal
ExactPredicates.meet
— Methodmeet(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.orient
— Methodorient(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.orient
— Methodorient(p :: 2, q :: 2, r :: 2) -> Int
- Return 1 if
r
is on the left of the oriented line defined byp
andq
. - Return –1 if
r
is on the right. - Return 0 if
r
is on the line or ifp == q
.
ExactPredicates.parallelorder
— Methodparallelorder(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 throughq
. - return -1 in the reverse situation.
- return 0 if
a
andb
are equal or if the parallel lines passing throughp
andq
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.rotation
— Methodrotation(pts :: AbstractVector)
Gives the rotation number of the polygonal path defined by the elements of pts
.
ExactPredicates.sameside
— Methodsameside(p :: 2, a :: 2, b :: 2)
Assume that the three arguments are collinear, on some line L
- Return 1 if
a
andb
are on the same side ofp
on L - Return -1 if
a
andb
are on different sides - Return 0 if
a == p
orb == p
.
ExactPredicates.Codegen.@genpredicate
— MacroGenerate sign predicate for a function that computes a polynomial in the coordinates of the arguments.