agi.foundation.geometry.shapes
(agi.foundation.core-2023r2.jar)

Class EllipsoidComplexSurfaceCurve

• All Implemented Interfaces:
IEquatable<EllipsoidSurfaceCurve>

```public class EllipsoidComplexSurfaceCurve
extends EllipsoidSurfaceCurve```
Represents a curve comprised of several connected curves on the surface of an ellipsoid
• Method Summary

All Methods
Modifier and Type Method and Description
`CartographicExtent` `computeCartographicExtent()`
Computes the cartographic bounding box which completely contains all of the constituent curves.
`protected int` `computeHashCode()`
Computes the hash code for this curve.
`static EllipsoidComplexSurfaceCurve` `createCurve(EllipsoidSurfaceCurve... curves)`
Constructs a complex curve based on a given set of constituent curves.
`static EllipsoidComplexSurfaceCurve` ```createGeodesic(Ellipsoid shape, Iterable<Cartographic> nodes)```
Creates a complex curve made up of `EllipsoidGeodesics` which connect the given set of `nodes` on the surface of the ellipsoid `shape`.
`static EllipsoidComplexSurfaceCurve` ```createRhumbLine(Ellipsoid shape, Iterable<Cartographic> nodes)```
Creates a complex curve made up of `EllipsoidRhumbLines` which connect the given set of `nodes` on the surface of the ellipsoid `shape`.
`boolean` `equalsType(EllipsoidSurfaceCurve other)`
Indicates whether the current object is equal to another object of the same type.
`Cartographic` ```findClosestPointOnCurve(Cartographic point, double[] distance)```
Finds the closest point on the curve from the input point.
`List<EllipsoidSurfaceCurve>` `getCurves()`
Gets a read only list of the constituent curves which comprise the overall curve.
`List<Cartographic>` `getDiscretePoints(double granularity)`
Get a set of points which discretely represent the overall curve.
`Ellipsoid` `getEllipsoid()`
Gets the ellipsoid reference surface on which the curve lies.
`Cartographic` `getFinalPoint()`
Gets the final planetodetic point on the path.
`Cartographic` `getInitialPoint()`
Gets the initial planetodetic point on the path.
`double` `getSurfaceDistance()`
Gets the total distance along the curve to the location of the final point.
`Cartographic` `interpolateUsingFraction(double fraction)`
Provides the location of a point at the indicated portion along the curve.
`Cartographic` `interpolateUsingSurfaceDistance(double surfaceDistance)`
Provides the location of a point at the indicated distance along the curve.
• Methods inherited from class agi.foundation.geometry.shapes.EllipsoidSurfaceCurve

`computeIntersection, equals, findClosestPointOnCurve, hashCode`
• Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`
• Method Detail

• createCurve

```@Nonnull
public static EllipsoidComplexSurfaceCurve createCurve(@Nonnull
EllipsoidSurfaceCurve... curves)```
Constructs a complex curve based on a given set of constituent curves.
Parameters:
`curves` - The set of constituent curves.
Returns:
The constructed curve.
• createGeodesic

```@Nonnull
public static EllipsoidComplexSurfaceCurve createGeodesic(@Nonnull
Ellipsoid shape,
@Nonnull
Iterable<Cartographic> nodes)```
Creates a complex curve made up of `EllipsoidGeodesics` which connect the given set of `nodes` on the surface of the ellipsoid `shape`.
Parameters:
`shape` - The ellipsoid reference surface.
`nodes` - The set of points forming the nodes of the complex curve.
Returns:
A complex curve connecting the given set of points.
Throws:
`ArgumentOutOfRangeException` - Thrown if the number of nodes is less than 2.
• createRhumbLine

```@Nonnull
public static EllipsoidComplexSurfaceCurve createRhumbLine(@Nonnull
Ellipsoid shape,
@Nonnull
Iterable<Cartographic> nodes)```
Creates a complex curve made up of `EllipsoidRhumbLines` which connect the given set of `nodes` on the surface of the ellipsoid `shape`.
Parameters:
`shape` - The ellipsoid reference surface.
`nodes` - The set of points forming the nodes of the complex curve.
Returns:
A complex curve connecting the given set of points.
Throws:
`ArgumentOutOfRangeException` - Thrown if the number of nodes is less than 2.
• getInitialPoint

```@Nonnull
public Cartographic getInitialPoint()```
Gets the initial planetodetic point on the path.
Specified by:
`getInitialPoint` in class `EllipsoidSurfaceCurve`
• getFinalPoint

```@Nonnull
public Cartographic getFinalPoint()```
Gets the final planetodetic point on the path.
Specified by:
`getFinalPoint` in class `EllipsoidSurfaceCurve`
• getSurfaceDistance

`public double getSurfaceDistance()`
Gets the total distance along the curve to the location of the final point.
Specified by:
`getSurfaceDistance` in class `EllipsoidSurfaceCurve`
• getCurves

```@Nonnull
public final List<EllipsoidSurfaceCurve> getCurves()```
Gets a read only list of the constituent curves which comprise the overall curve.
• getEllipsoid

`public Ellipsoid getEllipsoid()`
Gets the ellipsoid reference surface on which the curve lies.
Specified by:
`getEllipsoid` in class `EllipsoidSurfaceCurve`
• interpolateUsingFraction

```@Nonnull
public Cartographic interpolateUsingFraction(double fraction)```
Provides the location of a point at the indicated portion along the curve.
Specified by:
`interpolateUsingFraction` in class `EllipsoidSurfaceCurve`
Parameters:
`fraction` - The portion of the distance between the initial and final points.
Returns:
The planetodetic location of the point along the curve.
• interpolateUsingSurfaceDistance

```@Nonnull
public Cartographic interpolateUsingSurfaceDistance(double surfaceDistance)```
Provides the location of a point at the indicated distance along the curve.
Specified by:
`interpolateUsingSurfaceDistance` in class `EllipsoidSurfaceCurve`
Parameters:
`surfaceDistance` - The distance from the initial point to the point of interest along the rhumb line.
Returns:
The planetodetic location of the point along the curve.
• computeCartographicExtent

`public CartographicExtent computeCartographicExtent()`
Computes the cartographic bounding box which completely contains all of the constituent curves.
Specified by:
`computeCartographicExtent` in class `EllipsoidSurfaceCurve`
Returns:
An object representing the bounding box.
• findClosestPointOnCurve

```@Nonnull
public Cartographic findClosestPointOnCurve(@Nonnull
Cartographic point,
@Nonnull
double[] distance)```
Finds the closest point on the curve from the input point.

The default implementation is a golden section search on the curve. The built-in types (geodesic, rhumb, and complex) have their own precise algorithms.

Overrides:
`findClosestPointOnCurve` in class `EllipsoidSurfaceCurve`
Parameters:
`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.
Returns:
The closest point on the curve.
• getDiscretePoints

`public List<Cartographic> getDiscretePoints(double granularity)`
Get a set of points which discretely represent the overall curve.
Overrides:
`getDiscretePoints` in class `EllipsoidSurfaceCurve`
Parameters:
`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.
Returns:
A read only list of discrete planetodetic points which can approximate the overall curve as linear segments.
Throws:
`ArgumentOutOfRangeException` - The granularity must be positive and non zero.
• computeHashCode

`protected int computeHashCode()`
Computes the hash code for this curve.
Overrides:
`computeHashCode` in class `EllipsoidSurfaceCurve`
Returns:
The hash code.
• equalsType

`public boolean equalsType(EllipsoidSurfaceCurve other)`
Description copied from interface: `IEquatable`
Indicates whether the current object is equal to another object of the same type.
Specified by:
`equalsType` in interface `IEquatable<EllipsoidSurfaceCurve>`
Overrides:
`equalsType` in class `EllipsoidSurfaceCurve`
Parameters:
`other` - An object to compare with this object.
Returns:
true if the current object is equal to the other parameter; otherwise, false.