Class Circle

Object
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 
     
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    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

    Modifier and Type
    Method
    Description
     
    double
     
    boolean
     
    double
    Returns the angle of the point from the center and the horizontal line from the center.
     
    getPoint(double angle)
     
    double
     
    int
     
    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.
    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.
     

    Methods inherited from class Object

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

    • 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 Details

    • 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