org.opengis.geometry.coordinate
Interface Arc

All Superinterfaces:
ArcString, CurveSegment, GenericCurve
All Known Subinterfaces:
Circle

@UML(identifier="GM_Arc",
     specification=ISO_19107)
public interface Arc
extends ArcString

Arc of the circle determined by 3 points, starting at the first, passing through the second and terminating at the third. If the 3 points are co-linear, then the arc shall be a 3-point line string, and will not be able to return values for center, radius, start angle and end angle.

NOTE: In the model, an Arc is a subclass of ArcString, being a trivial arc string consisting of only one arc. This may be counter-intuitive in the sense that subclasses are often thought of as more complex than their superclass (with additional methods and attributes). An Arc is simpler than a arc string in that it has less data, but it is more complex in that it can return geometric information such as "center", "start angle", and "end angle". This additional computational complexity forces the subclassing to be the way it is. In addition the "is type of" semantics works this way and not the other.
In its simplest representation, the three points in the control point sequence for an Arc shall consist of, in order, the initial point on the arc, some point on the arc neither at the start or end, and the end point of the Arc. If additional points are given, then all points must lie on the circle defined by any 3 non-colinear points in the control point array. All points shall lie on the same circle, and shall be given in the control point array in the order in which they occur on the arc.
NOTE: The use of the term "midPoint" for the center position of the control point sequence is not meant to require that the position be the geometric midpoint of the arc. This is the best choice for this position from a computational stability perspective, but it is not absolutely necessary for the mathematics to work.

Since:
GeoAPI 1.0
Author:
Martin Desruisseaux (IRD)
See Also:
GeometryFactory.createArc(Position,Position,Position), GeometryFactory.createArc(Position,Position,double,double[])

Method Summary
 DirectPosition getCenter()
          Calculates the center of the circle of which this arc is a portion as a direct position.
 Bearing getEndAngle()
          Calculates the bearing of the line from the center of the circle of which this arc is a portion to the end point of the arc.
 double getRadius()
          Calculates the radius of the circle of which this arc is a portion.
 Bearing getStartAngle()
          Calculates the bearing of the line from the center of the circle of which this arc is a portion to the start point of the arc.
 
Methods inherited from interface ArcString
asArcs, getControlPoints, getInterpolation, getNumArc
 
Methods inherited from interface CurveSegment
getBoundary, getCurve, getNumDerivativesAtEnd, getNumDerivativesAtStart, getNumDerivativesInterior, getSamplePoints, reverse
 
Methods inherited from interface GenericCurve
asLineString, forConstructiveParam, forParam, getEndConstructiveParam, getEndParam, getEndPoint, getParamForPoint, getStartConstructiveParam, getStartParam, getStartPoint, getTangent, length, length
 

Method Detail

getCenter

@UML(identifier="center",
     obligation=MANDATORY,
     specification=ISO_19107)
DirectPosition getCenter()
Calculates the center of the circle of which this arc is a portion as a direct position. The coordinate reference system of the returned direct position will be the same as that for this Arc. In some extreme cases, the direct position as calculated may lie outside the domain of validity of the coordinate reference system used by this Arc (especially if the underlying arc has a very large radius). Implementations may choose an appropriate course of action in such cases.

Returns:
The center of the circle of which this arc is a portion.

getRadius

@UML(identifier="radius",
     obligation=MANDATORY,
     specification=ISO_19107)
double getRadius()
Calculates the radius of the circle of which this arc is a portion.

Returns:
The radius of the circle of which this arc is a portion.

getStartAngle

@UML(identifier="startAngle",
     obligation=MANDATORY,
     specification=ISO_19107)
Bearing getStartAngle()
Calculates the bearing of the line from the center of the circle of which this arc is a portion to the start point of the arc. In the 2D case this will be a start angle. In the 3D case, the normal bearing angle implies that the arc is parallel to the reference circle. If this is not the case, then the bearing must include altitude information.

Returns:
The bearing from the center of the circle to the start point of this arc.

getEndAngle

@UML(identifier="endAngle",
     obligation=MANDATORY,
     specification=ISO_19107)
Bearing getEndAngle()
Calculates the bearing of the line from the center of the circle of which this arc is a portion to the end point of the arc. In the 2D case this will be an end angle. In the 3D case, the normal bearing angle implies that the arc is parallel to the reference circle. If this is not the case, then the bearing must include altitude information.

Returns:
The bearing from the center of the circle to the end point of this arc.


Copyright © 1996-2014 Geotools. All Rights Reserved.