Class Circle


  • public class Circle
    extends Object
    This class provides operations for handling the usage of Circles and arcs in Geometries.

    Date: Oct 15, 2007

    Author:
    Tom Acree
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      class  Circle.Arc  
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected Circle()
      Creates a circle whose center is at the origin and whose radius is 0.
        Circle​(double xCenter, double yCenter, double radius)
      Create a circle using the x/y coordinates for the center.
        Circle​(double xLeft, double yUpper, double xRight, double yLower)
      Creates a circle based on bounding box.
        Circle​(double x1, double y1, double x2, double y2, double x3, double y3)
      Three point method of circle construction.
        Circle​(Coordinate center, double radius)
      Create a circle with a defined center and radius
        Circle​(Coordinate point1, Coordinate point2, Coordinate point3)
      Three point method of circle construction.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Circle.Arc createArc​(Coordinate p1, Coordinate p2, Coordinate p3)  
      double distanceFromCenter​(Coordinate p)  
      boolean equals​(Object o)  
      double getAngle​(Coordinate p)
      Returns the angle of the point from the center and the horizontal line from the center.
      Coordinate getCenter()  
      Coordinate getPoint​(double angle)  
      double getRadius()  
      int hashCode()  
      static Coordinate[] linearizeArc​(double x1, double y1, double x2, double y2, double x3, double y3)
      Given 2 points defining an arc on the circle, interpolates the circle into a collection of points that provide connected chords that approximate the arc based on the tolerance value.
      static Coordinate[] linearizeArc​(double x1, double y1, double x2, double y2, double x3, double y3, double tolerence)
      Given 2 points defining an arc on the circle, interpolates the circle into a collection of points that provide connected chords that approximate the arc based on the tolerance value.
      Coordinate[] linearizeArc​(Coordinate p1, Coordinate p2, Coordinate p3, double tolerence)
      Given 2 points defining an arc on the circle, interpolates the circle into a collection of points that provide connected chords that approximate the arc based on the tolerance value.
      static Coordinate[] linearizeCircle​(double x1, double y1, double x2, double y2, double x3, double y3)
      Given a circle defined by the 3 points, creates a linearized interpolation of the circle starting and ending on the first coordinate.
      static Coordinate[] linearizeCircle​(Coordinate p1, Coordinate p2, Coordinate p3, double tolerance)
      Given a circle defined by the 3 points, creates a linearized interpolation of the circle starting and ending on the first coordinate.
      void move​(double x, double y)
      Move the circle to a new center
      static double normalizeAngle​(double angle)
      Returns an angle between 0 and 2*PI.
      void shift​(double deltaX, double deltaY)
      shift the center of the circle by delta X and delta Y
      static double subtractAngles​(double a1, double a2)
      Returns the angle between the angles a1 and a2 in radians.
      String toString()  
      • Methods inherited from class Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • Circle

        protected Circle()
        Creates a circle whose center is at the origin and whose radius is 0.
      • Circle

        public Circle​(Coordinate center,
                      double radius)
        Create a circle with a defined center and radius
        Parameters:
        center - The coordinate representing the center of the circle
        radius - The radius of the circle
      • Circle

        public Circle​(double xCenter,
                      double yCenter,
                      double radius)
        Create a circle using the x/y coordinates for the center.
        Parameters:
        xCenter - The x coordinate of the circle's center
        yCenter - The y coordinate of the circle's center
        radius - the radius of the circle
      • Circle

        public Circle​(double xLeft,
                      double yUpper,
                      double xRight,
                      double yLower)
        Creates a circle based on bounding box. It is possible for the user of this class to pass bounds to this method that do not represent a square. If this is the case, we must force the bounding rectangle to be a square. To this end, we check the box and set the side of the box to the larger dimension of the rectangle
      • Circle

        public Circle​(Coordinate point1,
                      Coordinate point2,
                      Coordinate point3)
        Three point method of circle construction. All three points must be on the circumference of the circle.
      • Circle

        public Circle​(double x1,
                      double y1,
                      double x2,
                      double y2,
                      double x3,
                      double y3)
        Three point method of circle construction. All three points must be on the circumference of the circle.
    • Method Detail

      • shift

        public void shift​(double deltaX,
                          double deltaY)
        shift the center of the circle by delta X and delta Y
      • move

        public void move​(double x,
                         double y)
        Move the circle to a new center
      • getCenter

        public Coordinate getCenter()
      • getRadius

        public double getRadius()
      • linearizeArc

        public static Coordinate[] linearizeArc​(double x1,
                                                double y1,
                                                double x2,
                                                double y2,
                                                double x3,
                                                double y3,
                                                double tolerence)
        Given 2 points defining an arc on the circle, interpolates the circle into a collection of points that provide connected chords that approximate the arc based on the tolerance value. The tolerance value specifies the maximum distance between a chord and the circle.
        Parameters:
        x1 - x coordinate of point 1
        y1 - y coordinate of point 1
        x2 - x coordinate of point 2
        y2 - y coordinate of point 2
        x3 - x coordinate of point 3
        y3 - y coordinate of point 3
        tolerence - maximum distance between the center of the chord and the outer edge of the circle
        Returns:
        an ordered list of Coordinates representing a series of chords approximating the arc.
      • linearizeArc

        public static Coordinate[] linearizeArc​(double x1,
                                                double y1,
                                                double x2,
                                                double y2,
                                                double x3,
                                                double y3)
        Given 2 points defining an arc on the circle, interpolates the circle into a collection of points that provide connected chords that approximate the arc based on the tolerance value. This method uses a tolerence value of 1/100 of the length of the radius.
        Parameters:
        x1 - x coordinate of point 1
        y1 - y coordinate of point 1
        x2 - x coordinate of point 2
        y2 - y coordinate of point 2
        x3 - x coordinate of point 3
        y3 - y coordinate of point 3
        Returns:
        an ordered list of Coordinates representing a series of chords approximating the arc.
      • linearizeCircle

        public static Coordinate[] linearizeCircle​(double x1,
                                                   double y1,
                                                   double x2,
                                                   double y2,
                                                   double x3,
                                                   double y3)
        Given a circle defined by the 3 points, creates a linearized interpolation of the circle starting and ending on the first coordinate. This method uses a tolerence value of 1/100 of the length of the radius.
        Parameters:
        x1 - x coordinate of point 1
        y1 - y coordinate of point 1
        x2 - x coordinate of point 2
        y2 - y coordinate of point 2
        x3 - x coordinate of point 3
        y3 - y coordinate of point 3
        Returns:
        an ordered list of Coordinates representing a series of chords approximating the arc.
      • linearizeCircle

        public static Coordinate[] linearizeCircle​(Coordinate p1,
                                                   Coordinate p2,
                                                   Coordinate p3,
                                                   double tolerance)
        Given a circle defined by the 3 points, creates a linearized interpolation of the circle starting and ending on the first coordinate.
        Parameters:
        p1 - coordinate on the circle
        p2 - another coordinate on the circle
        p3 - yet another coordinate on the circle
        tolerance - maximum distance between the center of the chord and the outer edge of the circle
        Returns:
        an ordered list of Coordinates representing a series of chords approximating the circle.
      • linearizeArc

        public Coordinate[] linearizeArc​(Coordinate p1,
                                         Coordinate p2,
                                         Coordinate p3,
                                         double tolerence)
        Given 2 points defining an arc on the circle, interpolates the circle into a collection of points that provide connected chords that approximate the arc based on the tolerance value. The tolerance value specifies the maximum distance between a chord and the circle.
        Parameters:
        p1 - begin coordinate of the arc
        p2 - any other point on the arc
        p3 - end coordinate of the arc
        tolerence - maximum distance between the center of the chord and the outer edge of the circle
        Returns:
        an ordered list of Coordinates representing a series of chords approximating the arc.
      • equals

        public boolean equals​(Object o)
        Overrides:
        equals in class Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • toString

        public String toString()
        Overrides:
        toString in class Object
      • getAngle

        public double getAngle​(Coordinate p)
        Returns the angle of the point from the center and the horizontal line from the center.
        Parameters:
        p - a point in space
        Returns:
        The angle of the point from the center of the circle
      • getPoint

        public Coordinate getPoint​(double angle)
      • distanceFromCenter

        public double distanceFromCenter​(Coordinate p)
        Parameters:
        p - A point in space
        Returns:
        The distance the point is from the center of the circle
      • createArc

        public Circle.Arc createArc​(Coordinate p1,
                                    Coordinate p2,
                                    Coordinate p3)
      • normalizeAngle

        public static double normalizeAngle​(double angle)
        Returns an angle between 0 and 2*PI. For example, 4*PI would get returned as 2*PI since they are equivalent.
        Parameters:
        angle - an angle in radians to normalize
        Returns:
        an angle between 0 and 2*PI
      • subtractAngles

        public static double subtractAngles​(double a1,
                                            double a2)
        Returns the angle between the angles a1 and a2 in radians. Angle is calculated in the counterclockwise direction.
        Parameters:
        a1 - first angle
        a2 - second angle
        Returns:
        the angle between a1 and a2 in the clockwise direction