org.geotools.gml3

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 and Description
class  Circle.Arc
• Constructor Summary

Constructors
Modifier Constructor and Description
protected Circle()
Creates a circle whose center is at the origin and whose radius is 0.
Circle(Coordinate point1, Coordinate point2, Coordinate point3)
Three point method of circle construction.
Circle(Coordinate center, double radius)
Create a circle with a defined center and radius
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.
• Method Summary

All Methods
Modifier and Type Method and 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)
int hashCode()
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[] 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.
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.
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.
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()
• 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
Parameters:
xLeft -
yUpper -
xRight -
yLower -
• 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.
Parameters:
point1 -
point2 -
point3 -
• 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.
Parameters:
x1 -
y1 -
x2 -
y2 -
x3 -
y3 -
• 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()

• 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.
• hashCode

public int hashCode()
Overrides:
hashCode 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