Class NonRobustCGAlgorithms



  • public class NonRobustCGAlgorithms
    extends CGAlgorithms
    Non-robust versions of various fundamental Computational Geometric algorithms, FOR TESTING PURPOSES ONLY!. The non-robustness is due to rounding error in floating point computation.
    • Constructor Detail

      • NonRobustCGAlgorithms

        public NonRobustCGAlgorithms​()
    • Method Detail

      • isPointInRing

        public static boolean isPointInRing​(Coordinate p,
                                            Coordinate[] ring)
        Computes whether a ring defined by an array of Coordinate is oriented counter-clockwise.

        This will handle coordinate lists which contain repeated points.

        Parameters:
        ring - an array of coordinates forming a ring
        Returns:
        true if the ring is oriented counter-clockwise.
        Throws:
        java.lang.IllegalArgumentException - if the ring is degenerate (does not contain 3 different points)
      • isCCW

        public static boolean isCCW​(Coordinate[] ring)
        Computes whether a ring defined by an array of Coordinate is oriented counter-clockwise.

        This will handle coordinate lists which contain repeated points.

        Parameters:
        ring - an array of coordinates forming a ring
        Returns:
        true if the ring is oriented counter-clockwise.
        Throws:
        java.lang.IllegalArgumentException - if the ring is degenerate (does not contain 3 different points)
      • computeOrientation

        public static int computeOrientation​(Coordinate p1,
                                             Coordinate p2,
                                             Coordinate q)
        Computes the orientation of a point q to the directed line segment p1-p2. The orientation of a point relative to a directed line segment indicates which way you turn to get to q after travelling from p1 to p2.
        Returns:
        1 if q is counter-clockwise from p1-p2
      • orientationIndex

        public static int orientationIndex​(Coordinate p1,
                                           Coordinate p2,
                                           Coordinate q)
        Returns the index of the direction of the point q relative to a vector specified by p1-p2.
        Parameters:
        p1 - the origin point of the vector
        p2 - the final point of the vector
        q - the point to compute the direction to
        Returns:
        1 if q is counter-clockwise (left) from p1-p2
      • distanceLineLine

        public static double distanceLineLine​(Coordinate A,
                                              Coordinate B,
                                              Coordinate C,
                                              Coordinate D)
        Computes the distance from a line segment AB to a line segment CD Note: NON-ROBUST!
        Parameters:
        A - a point of one line
        B - the second point of (must be different to A)
        C - one point of the line
        D - another point of the line (must be different to A)