Class S2Predicates.EdgeCircumcenterSign

  • Enclosing class:
    S2Predicates

    static class S2Predicates.EdgeCircumcenterSign
    extends java.lang.Object
    A predicate for whether an edge PQ passes to the left, to the right, or through the center of the circumcircle of triangle ABC. Useful to determine the orientation of an edge with respect to the centers of a Voronoi diagram. Returns sign(P, Q, Z) where Z is the circumcenter of triangle ABC. The return value is -1 if Z is to the left of edge PQ, and +1 if Z is to the right of edge PQ. The return value is zero if the triangle has two or more exactly duplicate vertices, or if the result is indeterminate.
    • Constructor Detail

      • EdgeCircumcenterSign

        private EdgeCircumcenterSign()
        No instantiation.
    • Method Detail

      • triage

        public static int triage​(S2Point p,
                                 S2Point q,
                                 S2Point a,
                                 S2Point b,
                                 S2Point c,
                                 int abc)
        Returns a double-based test result. Faster but has a larger margin of uncertainty.
      • sos

        public static int sos​(S2Point p,
                              S2Point q,
                              S2Point a,
                              S2Point b,
                              S2Point c)
        Given the exact test resulted in 0, returns a Simulation of Simplicity-based test result, that can only result in zero if P == Q, A == B, B == C, or C == A (the result will be nonzero if these pairs are exactly proportional to each other but not equal.)