Package org.geotools.gml3
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 radiusCircle(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 centerstatic 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 Ystatic 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, double radius)
Create a circle with a defined center and radius- Parameters:
center
- The coordinate representing the center of the circleradius
- 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 centeryCenter
- The y coordinate of the circle's centerradius
- 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 1y1
- y coordinate of point 1x2
- x coordinate of point 2y2
- y coordinate of point 2x3
- x coordinate of point 3y3
- y coordinate of point 3tolerence
- 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 1y1
- y coordinate of point 1x2
- x coordinate of point 2y2
- y coordinate of point 2x3
- x coordinate of point 3y3
- 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 1y1
- y coordinate of point 1x2
- x coordinate of point 2y2
- y coordinate of point 2x3
- x coordinate of point 3y3
- 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 circlep2
- another coordinate on the circlep3
- yet another coordinate on the circletolerance
- 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 arcp2
- any other point on the arcp3
- end coordinate of the arctolerence
- 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.
-
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 anglea2
- second angle- Returns:
- the angle between a1 and a2 in the clockwise direction
-
-