public abstract class EllipsoidSurfaceCurve extends Object implements IEquatable<EllipsoidSurfaceCurve>
Modifier | Constructor and Description |
---|---|
protected |
EllipsoidSurfaceCurve()
Initializes a new instance.
|
Modifier and Type | Method and Description |
---|---|
abstract CartographicExtent |
computeCartographicExtent()
Computes the cartographic bounding box which completely contains the surface curve.
|
protected int |
computeHashCode()
Computes the hash code for this curve.
|
EllipsoidSurfaceCurveIntersectionResults |
computeIntersection(EllipsoidSurfaceCurve other)
Computes the nearest intersection (if any) between two
EllipsoidSurfaceCurves . |
boolean |
equals(Object obj)
Indicates whether another object is exactly equal to this instance.
|
boolean |
equalsType(EllipsoidSurfaceCurve other)
Indicates whether the current object is equal to another object of the same type.
|
Cartographic |
findClosestPointOnCurve(Cartographic point)
Finds the closest point on the curve from the input point.
|
Cartographic |
findClosestPointOnCurve(Cartographic point,
double[] distance)
Finds the closest point on the curve from the input point.
|
List<Cartographic> |
getDiscretePoints(double granularity)
Get a set of points which represent the curve discretely based on a given granularity.
|
abstract Ellipsoid |
getEllipsoid()
Gets the ellipsoid reference surface on which the curve lies.
|
abstract Cartographic |
getFinalPoint()
Gets the final planetodetic point on the path.
|
abstract Cartographic |
getInitialPoint()
Gets the initial planetodetic point on the path.
|
abstract double |
getSurfaceDistance()
Gets the total distance along the curve to the location of the final point.
|
int |
hashCode()
Returns a hash code for this instance, which is suitable for use in hashing algorithms and data structures like a hash table.
|
abstract Cartographic |
interpolateUsingFraction(double fraction)
Provides the location of a point at the indicated portion along the curve.
|
abstract Cartographic |
interpolateUsingSurfaceDistance(double surfaceDistance)
Provides the location of a point at the indicated distance along the curve.
|
protected EllipsoidSurfaceCurve()
public abstract Ellipsoid getEllipsoid()
@Nonnull public abstract Cartographic getInitialPoint()
@Nonnull public abstract Cartographic getFinalPoint()
public abstract double getSurfaceDistance()
@Nonnull public abstract Cartographic interpolateUsingFraction(double fraction)
fraction
- The portion of the distance between the initial and final points.@Nonnull public abstract Cartographic interpolateUsingSurfaceDistance(double surfaceDistance)
surfaceDistance
- The distance from the initial point to the point of interest along the rhumb line.@Nonnull public abstract CartographicExtent computeCartographicExtent()
@Nonnull public Cartographic findClosestPointOnCurve(@Nonnull Cartographic point, @Nonnull double[] distance)
The default implementation is a golden section search on the curve. The built-in types (geodesic, rhumb, and complex) have their own precise algorithms.
point
- The input point. The point will be on the ellipsoid surface at this location.distance
- The surface distance between the point
and the point on the curve.@Nonnull public Cartographic findClosestPointOnCurve(@Nonnull Cartographic point)
point
- The input point. The point will be on the ellipsoid surface at this location.IllegalStateException
- Thrown if this curve has any sub curves that are not geodesic, complex, or rhumb.@Nonnull public EllipsoidSurfaceCurveIntersectionResults computeIntersection(@Nullable EllipsoidSurfaceCurve other)
EllipsoidSurfaceCurves
.
Intersection algorithm convergence tolerance is 1 nm.
other
- The other curve with which to compute intersection.IllegalStateException
- Thrown if either this curve or the input curve has any sub curves that are not EllipsoidGeodesic
,
EllipsoidComplexSurfaceCurve
, or EllipsoidRhumbLine
.ArgumentException
- Thrown if the Ellipsoid
(get
) properties of both curves do not match.@Nonnull public List<Cartographic> getDiscretePoints(double granularity)
If overriding this method, the set of points should accurately represent the curve using
linear segments between points, using the given granularity as a measure of the
maximum angular distance between points measured from the center of the Ellipsoid
(get
).
granularity
- The maximum angular distance between the discrete points with respect to the center of
the Ellipsoid
(get
). A small granularity will yield a more precise representation
of the curve.ArgumentOutOfRangeException
- The granularity must be positive and non zero.public int hashCode()
hashCode
in class Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
protected int computeHashCode()
public boolean equals(Object obj)
equals
in class Object
obj
- The object to compare to this instance.true
if obj
is an instance of this type and represents the same value as this instance; otherwise false
.Object.hashCode()
,
HashMap
public boolean equalsType(EllipsoidSurfaceCurve other)
IEquatable
equalsType
in interface IEquatable<EllipsoidSurfaceCurve>
other
- An object to compare with this object.