## 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 ` `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
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,
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,
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()`

`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