org.hibernate.spatial
Class Circle

java.lang.Object
  extended by org.hibernate.spatial.Circle

public class Circle
extends java.lang.Object

This class provides operations for handling the usage of Circles and arcs in Geometries.

Date: Oct 15, 2007


Nested Class Summary
 class Circle.Arc
           
 
Constructor Summary
Circle(com.vividsolutions.jts.geom.Coordinate point1, com.vividsolutions.jts.geom.Coordinate point2, com.vividsolutions.jts.geom.Coordinate point3)
          Three point method of circle construction.
Circle(com.vividsolutions.jts.geom.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
 Circle.Arc createArc(com.vividsolutions.jts.geom.Coordinate p1, com.vividsolutions.jts.geom.Coordinate p2, com.vividsolutions.jts.geom.Coordinate p3)
           
 double distanceFromCenter(com.vividsolutions.jts.geom.Coordinate p)
           
 boolean equals(java.lang.Object o)
           
 double getAngle(com.vividsolutions.jts.geom.Coordinate p)
          Returns the angle of the point from the center and the horizontal line from the center.
 com.vividsolutions.jts.geom.Coordinate getCenter()
           
 com.vividsolutions.jts.geom.Coordinate getPoint(double angle)
           
 double getRadius()
           
 com.vividsolutions.jts.geom.Coordinate[] linearizeArc(com.vividsolutions.jts.geom.Coordinate p1, com.vividsolutions.jts.geom.Coordinate p2, com.vividsolutions.jts.geom.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 com.vividsolutions.jts.geom.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 com.vividsolutions.jts.geom.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 com.vividsolutions.jts.geom.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.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Circle

public Circle(com.vividsolutions.jts.geom.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

Parameters:
xLeft -
yUpper -
xRight -
yLower -

Circle

public Circle(com.vividsolutions.jts.geom.Coordinate point1,
              com.vividsolutions.jts.geom.Coordinate point2,
              com.vividsolutions.jts.geom.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 com.vividsolutions.jts.geom.Coordinate getCenter()

getRadius

public double getRadius()

linearizeArc

public static com.vividsolutions.jts.geom.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 com.vividsolutions.jts.geom.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 com.vividsolutions.jts.geom.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.

linearizeArc

public com.vividsolutions.jts.geom.Coordinate[] linearizeArc(com.vividsolutions.jts.geom.Coordinate p1,
                                                             com.vividsolutions.jts.geom.Coordinate p2,
                                                             com.vividsolutions.jts.geom.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(java.lang.Object o)
Overrides:
equals in class java.lang.Object

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

getAngle

public double getAngle(com.vividsolutions.jts.geom.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 com.vividsolutions.jts.geom.Coordinate getPoint(double angle)

distanceFromCenter

public double distanceFromCenter(com.vividsolutions.jts.geom.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(com.vividsolutions.jts.geom.Coordinate p1,
                            com.vividsolutions.jts.geom.Coordinate p2,
                            com.vividsolutions.jts.geom.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