2023.0.07

• All Superinterfaces:
Serializable
All Known Implementing Classes:
TLcdEllipsoid

```public interface ILcdEllipsoid
extends Serializable```
Interface that defines all ellipsoids. An `ILcdEllipsoid` represents an ellipsoid. Typically it is defined by:
• a semiMajorRadius (usually represented by the letter a ), and
• a semiMinorRadius (usually represented by the letter b ).
Other relevant values can be derived from the semiMajorRadius and the semiMinorRadius (in the formulas we use the shorthand representations):
• flattening (shorthand: f ): f = (a - b)/a
• eccentricitySquared: square of the eccentricity: e2 = (a2 - b2 )/a2
• secondEccentricitySquared: square of the eccentricity based on minor axis (also called square of second eccentricity) : e' 2 = (a2 - b2 )/b2
• n = (a - b)/(a + b)
An `ILcdEllipsoid` also has a name (of the type String) to refer to it.

Many methods of the `ILcdEllipsoid` refer to specialist's knowledge and will not be explained here. We refer for more information to following references:

1. Map Projections: Theory and Applications , 1990, Pearson
2. Coordinate Systems and Map Projections, 2nd edition, 1992, Maling
3. Map Projections: A Working Manual , 1987, Snyder
4. Map Projections: A Reference Manual , 1995, Bugayevski and Snyder
5. ...
• ### Method Summary

All Methods
Modifier and Type Method and Description
`void` ```bufferContour2DOf2DPolylineSFCT(ILcdPointList aPointList, double aWidth, ILcd2DEditablePoint[] a2DEditablePointArraySFCT)```
Calculates the contour of the buffer/corridor along a given `ILcdPointList` at a given width.
`void` ```bufferContour2DOfSegmentSFCT(ILcdPoint aStartPoint, ILcdPoint aEndPoint, double aWidth, ILcd2DEditablePoint[] a2DEditablePointArraySFCT)```
Calculates the contour of the rectangle defined by `aStartPoint`, `aEndPoint`, and `aWidth`, as an array of 4 `ILcd2DEditablePoint` objects.
`void` ```conformalSphericalLonLatPointSFCT(ILcdPoint aLLP, ILcd2DEditablePoint aLLPSFCT)```
The conformal spherical longitude/latitude for a given geodetic longitude/latitude.
`double` ```distanceToGeodesic(ILcdPoint aP1, ILcdPoint aP2, ILcdPoint aP3, double aAngle)```
Calculates the distance between the geodesic `aP1-aP2` and the point `aP3`, at a certain angle `aAngle`.
`boolean` `equals(Object aEllipsoid)`
Overrides Object.equals.
`double` ```forwardAzimuth2D(double aLongitude1, double aLatitude1, double aLongitude2, double aLatitude2)```
Calculates the forward azimuth of the geodesic line from `aP1` to `aP2` in radians ! Only the (x,y) coordinates (longitude and latitude) of the `ILcdPoint` objects are taken into account.
`double` ```forwardAzimuth2D(ILcdPoint aP1, ILcdPoint aP2)```
Calculates the forward azimuth of the geodesic line from `aP1` to `aP2` in radians ! Only the (x,y) coordinates (longitude and latitude) of the `ILcdPoint` objects are taken into account.
`default double` `geoc2height(ILcdPoint aXYZGeocPoint)`
Calculates the height above the ellipsoid for a point defined in an Earth Centered, Earth Fixed XYZ Cartesian coordinate system.
`void` ```geoc2llhSFCT(ILcdPoint aXYZGeocPoint, ILcd3DEditablePoint aLLHPointSFCT)```
Coordinate conversion between Earth Centered, Earth Fixed XYZ Cartesian coordinate system and latitude-longitude-ellipsoidal height for the ellipsoid.
`double` ```geodesicArea(ILcdPoint[] aPts, int aN)```
Calculates the geodesic surface area of a polygon given as an array of `ILcdPoint` objects.
`double` ```geodesicDistance(double aLongitude1, double aLatitude1, double aLongitude2, double aLatitude2)```
Calculates the shortest distance between two arbitrary `ILcdPoint` objects `aP1` and `aP2` on the ellipsoid in meters.
`double` ```geodesicDistance(ILcdPoint aP1, ILcdPoint aP2)```
Calculates the shortest distance between two arbitrary `ILcdPoint` objects `aP1` and `aP2` on the ellipsoid in meters.
`void` ```geodesicPointSFCT(ILcdPoint aPoint, double aDistance, double aAzimuth, ILcd2DEditablePoint aGeodesicPointSFCT)```
Determines the `ILcdPoint` `aGeodesicPoint` on the geodesic through `(aP1.getX(), aP1.getY())` located at a distance `aDistance` and forward azimuth `aAzimuth`.
`void` ```geodesicPointSFCT(ILcdPoint aP1, ILcdPoint aP2, double aK, ILcd2DEditablePoint aGeodesicPointSFCT)```
Sets `aGeodesicPointSFCT` to an `ILcdPoint` on the geodesic line through the point `aP1` and the point `aP2`, located at a fraction `aK` of the (shortest) distance between `aP1` and `aP2`.
`double` `get1OverF()`
Gets the reciprocal of the flattening 1/f.
`double` `getA()`
`double` `getAuxRadius()`
Radius of auxiliary sphere of the ellipsoid.
`double` `getB()`
`double` `getConformalRadius()`
Radius of a sphere such that its meridional arc from 0 -> 90 degrees is equal to the corresponding meridional arc on the ellipsoid.
`double` `getE()`
Gets the eccentricity e which is always positive.
`double` `getE2()`
Gets the eccentricitySquared e2 = (a2 - b2)/a2.
`double` `getEMinor2()`
Gets the secondEccentricitySquared e' 2 = (a2 - b2 )/b2.
`double` `getF()`
Gets the flattening f.
`double` `getN()`
Gets n = (a - b)/(a + b).
`String` `getName()`
Gets the name of this `ILcdEllipsoid`.
`void` ```intersection2DLSSFCT(double aLon1, double aLat1, double aLon2, double aLat2, double aLon3, double aLat3, double aLon4, double aLat4, ILcd2DEditablePoint aLLPSFCT)```
Calculates the intersection of two geodesic lines going through the given coordinates.
`void` ```intersection2DLSSFCT(ILcdPoint aP1, ILcdPoint aP2, ILcdPoint aP3, ILcdPoint aP4, ILcd2DEditablePoint aLLPSFCT)```
Calculates the intersection of two geodesic lines going containing the given coordinates.
`boolean` ```intersects2DLS(double aLon1, double aLat1, double aLon2, double aLat2, double aLon3, double aLat3, double aLon4, double aLat4)```
Checks whether two geodesic line segments with the given coordinates intersect.
`boolean` ```intersects2DLS(ILcdPoint aP1, ILcdPoint aP2, ILcdPoint aP3, ILcdPoint aP4)```
Checks whether two geodesic line segments intersect.
`void` ```inverseConformalSphericalLonLatPointSFCT(ILcdPoint aLLP, ILcd2DEditablePoint aLLPSFCT)```
The inverse transformation of the conformal spherical longitude/latitude.
`boolean` `isSphere()`
Checks whether ellipsoid is the special case sphere.
`void` ```llh2geocSFCT(ILcdPoint aLLHPoint, ILcd3DEditablePoint aXYZGeocentricPointSFCT)```
Coordinate conversion between latitude-longitude-ellipsoidal height for the ellipsoid and Earth Centered, Earth Fixed XYZ Cartesian coordinate system.
`double` `meridionalArcDistance(double aLatitude)`
Calculates the meridional arc distance in meters.
`double` ```meridionalArcDistance(double aLatitude, double aCosLat, double aSinLat)```
Calculates the meridional arc distance in meters.
`double` ```radiusEuler(double aLatitude, double aAzimuth)```
Euler radius of the ellipsoid at a given latitude `aLatitude` and a given azimuth `aAzimuth`.
`double` ```radiusEuler(double aLatitude, double aSinLat, double aAzimuth, double aCosAzimuth, double aSinAzimuth)```
Euler radius of the ellipsoid at a given latitude `aLatitude` and a given azimuth `aAzimuth`.
`double` `radiusGaussian(double aLatitude)`
The Gaussian curvature radius is the geometric mean of the vertical and the meridional radius.
`double` ```radiusGaussian(double aLatitude, double aSinLat)```
The Gaussian curvature radius is the geometric mean of the vertical and the meridional radius.
`double` `radiusMeridian(double aLatitude)`
Radius of curvature in prime meridian at a given geodetic latitude.
`double` ```radiusMeridian(double aLatitude, double aSinLat)```
Radius of curvature in prime meridian at a given geodetic latitude.
`double` `radiusVertical(double aLatitude)`
Radius of curvature in prime vertical at a given geodetic latitude.
`double` ```radiusVertical(double aLatitude, double aSinLat)```
Radius of curvature in prime vertical at a given geodetic latitude.
`double` ```rhumblineAzimuth2D(ILcdPoint aP1, ILcdPoint aP2)```
Calculates the azimuth of the rhumbline from `aP1` to `aP2` in degrees! Only the (x,y) coordinates (longitude and latitude) of the `ILcdPoint` objects are taken into account.
`double` ```rhumblineDistance(ILcdPoint aP1, ILcdPoint aP2)```
Calculates the distance between two arbitrary `ILcdPoint` objects `aP1` and `aP2` on the ellipsoid in meters following a path with constant azimuth.
`void` ```rhumblinePointSFCT(ILcdPoint aPoint, double aDistance, double aAzimuth, ILcd2DEditablePoint aRhumblinePointSFCT)```
Determines the `ILcdPoint` `aRhumblinePointSFCT` on the rhumbline (a path with a constant bearing) through `(aP1.getX(), aP1.getY())` located at a distance `aDistance` and forward azimuth `aAzimuth`.
• ### Method Detail

• #### getA

`double getA()`
Returns:
• #### getB

`double getB()`
Returns:
• #### get1OverF

`double get1OverF()`
Gets the reciprocal of the flattening 1/f.
Returns:
the reciprocal of the flattening 1/f.
• #### getF

`double getF()`
Gets the flattening f.
Returns:
the flattening f.
• #### getE

`double getE()`
Gets the eccentricity e which is always positive.
Returns:
the eccentricity e which is always positive.
• #### getE2

`double getE2()`
Gets the eccentricitySquared e2 = (a2 - b2)/a2.
Returns:
the eccentricitySquared e2 = (a2 - b2 )/a2.
• #### getEMinor2

`double getEMinor2()`
Gets the secondEccentricitySquared e' 2 = (a2 - b2 )/b2.
Returns:
the secondEccentricitySquared e' 2 = (a2 - b2 )/b2 .
• #### getN

`double getN()`
Gets n = (a - b)/(a + b).
Returns:
n = (a - b)/(a + b).
• #### isSphere

`boolean isSphere()`
Checks whether ellipsoid is the special case sphere.
Returns:
`true` if and only if ellipsoid is a sphere.

`double radiusVertical(double aLatitude)`
Radius of curvature in prime vertical at a given geodetic latitude. Commonly referred to with a Greek letter n.
Parameters:
`aLatitude` - latitude, in degrees.
Returns:
the radius of curvature in prime vertical at a given geodetic latitude.
`radiusVertical(double, double)`

```double radiusVertical(double aLatitude,
double aSinLat)```
Radius of curvature in prime vertical at a given geodetic latitude. Commonly referred to with a Greek letter n.
Parameters:
`aLatitude` - latitude, in degrees.
`aSinLat` - the sine of the latitude.
Returns:
the radius of curvature in prime vertical at a given geodetic latitude.
`radiusVertical(double)`

`double radiusMeridian(double aLatitude)`
Radius of curvature in prime meridian at a given geodetic latitude.
Parameters:
`aLatitude` - latitude, in degrees.
Returns:
the radius of curvature in prime meridian at a given geodetic latitude.
`radiusMeridian(double, double)`

```double radiusMeridian(double aLatitude,
double aSinLat)```
Radius of curvature in prime meridian at a given geodetic latitude.
Parameters:
`aLatitude` - latitude, in degrees.
`aSinLat` - the sine of the latitude.
Returns:
the radius of curvature in prime meridian at a given geodetic latitude.
• #### meridionalArcDistance

`double meridionalArcDistance(double aLatitude)`
Calculates the meridional arc distance in meters. The length of the arc measured from the plane of the equator to a point at latitude `aLatitude`. Since the earth is represented by a rotational ellipsoid the longitude is irrelevant.
Parameters:
`aLatitude` - latitude, in degrees.
Returns:
the meridional arc distance in meters.
`meridionalArcDistance(double, double, double)`
• #### meridionalArcDistance

```double meridionalArcDistance(double aLatitude,
double aCosLat,
double aSinLat)```
Calculates the meridional arc distance in meters. The length of the arc measured from the plane of the equator to a point at latitude `aLatitude`. Since the earth is represented by a rotational ellipsoid the longitude is irrelevant.
Parameters:
`aLatitude` - latitude, in degrees.
`aCosLat` - the cosine of the latitude.
`aSinLat` - the sine of the latitude.
Returns:
the meridional arc distance in meters.
• #### geodesicDistance

```double geodesicDistance(ILcdPoint aP1,
ILcdPoint aP2)```
Calculates the shortest distance between two arbitrary `ILcdPoint` objects `aP1` and `aP2` on the ellipsoid in meters. The curve that represents this shortest path is known as the geodesic curve. Only the longitude and the latitude of the two geodetic coordinates are taken into account.
Parameters:
`aP1` - start point of geodesic line segment.
`aP2` - end point of geodesic line segment.
Returns:
the shortest distance between `aP1` and `aP2` on the ellipsoid in meters.
• #### geodesicDistance

```double geodesicDistance(double aLongitude1,
double aLatitude1,
double aLongitude2,
double aLatitude2)```
Calculates the shortest distance between two arbitrary `ILcdPoint` objects `aP1` and `aP2` on the ellipsoid in meters.
Parameters:
`aLongitude1` - longitude, in degrees, of the start point of the geodesic line segment.
`aLatitude1` - latitude, in degrees, of the start point of the geodesic line segment.
`aLongitude2` - longitude, in degrees, of the end point of the geodesic line segment.
`aLatitude2` - latitude, in degrees, of the end point of the geodesic line segment.
Returns:
the same as `geodesicDistance(ILcdPoint aP1, ILcdPoint aP2)` if `aP1` would be an `ILcdPoint` with lon-lat coordinates `(aLongitude1,aLatitude1)` and `aP2` would be a `ILcdPoint` with lon-lat coordinates `(aLongitude2,aLatitude2)`.
`geodesicDistance(ILcdPoint aP1, ILcdPoint aP2)`
• #### geodesicArea

```double geodesicArea(ILcdPoint[] aPts,
int aN)```
Calculates the geodesic surface area of a polygon given as an array of `ILcdPoint` objects. The segments of the polygon must not be self-intersecting. Only the longitude and latitude of the coordinates are taken into account.

Constraint: (`aN` > 2) and (`aPts.length` > `aN`).

Parameters:
`aPts` - an array of `ILcdPoint` objects.
`aN` - `aPts[0..aN-1]` defines the polygon on the ellipsoid.
Returns:
the geodesic surface area of a polygon on the ellipsoid.
• #### forwardAzimuth2D

```double forwardAzimuth2D(ILcdPoint aP1,
ILcdPoint aP2)```

Calculates the forward azimuth of the geodesic line from `aP1` to `aP2` in radians ! Only the (x,y) coordinates (longitude and latitude) of the `ILcdPoint` objects are taken into account.

The forward azimuth lies between [0.0, 2.0*Math.PI], with 0.0 north, clockwise.

Parameters:
`aP1` - start point of the geodesic line segment.
`aP2` - end point of the geodesic line segment.
Returns:
the forward azimuth from `aP1` to `aP2` in radians!
• #### forwardAzimuth2D

```double forwardAzimuth2D(double aLongitude1,
double aLatitude1,
double aLongitude2,
double aLatitude2)```

Calculates the forward azimuth of the geodesic line from `aP1` to `aP2` in radians ! Only the (x,y) coordinates (longitude and latitude) of the `ILcdPoint` objects are taken into account.

The forward azimuth lies between [0.0, 2.0*Math.PI], with 0.0 north, clockwise.

Parameters:
`aLongitude1` - longitude, in degrees, of the start point of the geodesic line segment.
`aLatitude1` - latitude, in degrees, of the start point of the geodesic line segment.
`aLongitude2` - longitude, in degrees, of the end point of the geodesic line segment.
`aLatitude2` - latitude, in degrees, of the end point of the geodesic line segment.
Returns:
the forward azimuth from `(aLongitude1,aLatitude1)` to `(aLongitude2,aLatitude2)` in radians!
• #### geodesicPointSFCT

```void geodesicPointSFCT(ILcdPoint aP1,
ILcdPoint aP2,
double aK,
ILcd2DEditablePoint aGeodesicPointSFCT)```
Sets `aGeodesicPointSFCT` to an `ILcdPoint` on the geodesic line through the point `aP1` and the point `aP2`, located at a fraction `aK` of the (shortest) distance between `aP1` and `aP2`.
Parameters:
`aP1` - first 2D point on the ellipsoid `[aP1.getX(), aP1.getY()]`.
`aP2` - second 2D point on the ellipsoid `[aP2.getX(), aP2.getY()]`.
`aK` - fraction between 0.0 and 1.0.
`aGeodesicPointSFCT` - side effect parameter that contains the result upon return of the method.
• #### geodesicPointSFCT

```void geodesicPointSFCT(ILcdPoint aPoint,
double aAzimuth,
ILcd2DEditablePoint aGeodesicPointSFCT)```
Determines the `ILcdPoint` `aGeodesicPoint` on the geodesic through `(aP1.getX(), aP1.getY())` located at a distance `aDistance` and forward azimuth `aAzimuth`.
Parameters:
`aPoint` - `ILcdPoint` on the ellipsoid.
`aDistance` - distance expressed in meters. If the distance is smaller than 0, this method will return the input point as result.
`aAzimuth` - forward azimuth expressed in degrees.
`aGeodesicPointSFCT` - side effect parameter that contains the result upon return of the method.
• #### rhumblineDistance

```double rhumblineDistance(ILcdPoint aP1,
ILcdPoint aP2)```
Calculates the distance between two arbitrary `ILcdPoint` objects `aP1` and `aP2` on the ellipsoid in meters following a path with constant azimuth. The curve that represents this path is known as the rhumbline. Only the longitude and the latitude of the two geodetic coordinates are taken into account.
Parameters:
`aP1` - start point of rhumbline segment.
`aP2` - end point of rhumbline segment.
Returns:
the rhumbline distance between `aP1` and `aP2` on the ellipsoid in meters.
• #### rhumblineAzimuth2D

```double rhumblineAzimuth2D(ILcdPoint aP1,
ILcdPoint aP2)```

Calculates the azimuth of the rhumbline from `aP1` to `aP2` in degrees! Only the (x,y) coordinates (longitude and latitude) of the `ILcdPoint` objects are taken into account.

The forward azimuth lies between [0.0, 360.0], with 0.0 north, clockwise.

Parameters:
`aP1` - start point of rhumbline segment.
`aP2` - end point of rhumbline segment.
Returns:
the forward azimuth from `aP1` to `aP2` in DEGREES!
• #### rhumblinePointSFCT

```void rhumblinePointSFCT(ILcdPoint aPoint,
double aAzimuth,
ILcd2DEditablePoint aRhumblinePointSFCT)```
Determines the `ILcdPoint` `aRhumblinePointSFCT` on the rhumbline (a path with a constant bearing) through `(aP1.getX(), aP1.getY())` located at a distance `aDistance` and forward azimuth `aAzimuth`.
Parameters:
`aPoint` - `ILcdPoint` on the ellipsoid.
`aDistance` - distance expressed in meters.
`aAzimuth` - forward azimuth expressed in degrees.
`aRhumblinePointSFCT` - `ILcdPoint` on the ellipsoid.
• #### conformalSphericalLonLatPointSFCT

```void conformalSphericalLonLatPointSFCT(ILcdPoint aLLP,
ILcd2DEditablePoint aLLPSFCT)```
The conformal spherical longitude/latitude for a given geodetic longitude/latitude. These lon-lat-points are represented by `ILcdPoint` objects. A conformal projection is a projection for which the shape of a figure on the earth is preserved on the map. For a thorough understanding the reader is referred to the references.
Parameters:
`aLLP` - Geodetic point on the ellipsoid.
`aLLPSFCT` - Geodetic point on the conformal sphere.
• #### geoc2llhSFCT

```void geoc2llhSFCT(ILcdPoint aXYZGeocPoint,
ILcd3DEditablePoint aLLHPointSFCT)```
Coordinate conversion between Earth Centered, Earth Fixed XYZ Cartesian coordinate system and latitude-longitude-ellipsoidal height for the ellipsoid.
Parameters:
`aXYZGeocPoint` - geocentric 3D point.
`aLLHPointSFCT` - lonLatHeight coordinates to be set.
• #### geoc2height

`default double geoc2height(ILcdPoint aXYZGeocPoint)`
Calculates the height above the ellipsoid for a point defined in an Earth Centered, Earth Fixed XYZ Cartesian coordinate system.
Parameters:
`aXYZGeocPoint` - geocentric 3D point
Returns:
the height above the ellipsoid
Since:
2019.0
• #### llh2geocSFCT

```void llh2geocSFCT(ILcdPoint aLLHPoint,
ILcd3DEditablePoint aXYZGeocentricPointSFCT)```
Coordinate conversion between latitude-longitude-ellipsoidal height for the ellipsoid and Earth Centered, Earth Fixed XYZ Cartesian coordinate system.
Parameters:
`aLLHPoint` - lonLatHeight point.
`aXYZGeocentricPointSFCT` - Geocentric coordinates to be set.

```double radiusEuler(double aLatitude,
double aAzimuth)```
Euler radius of the ellipsoid at a given latitude `aLatitude` and a given azimuth `aAzimuth`. The euler radius is the mean radius of the spheroidal arc at the given latitude for the given azimuth.
Parameters:
`aLatitude` - latitude, in arc degrees.
`aAzimuth` - azimuth, in RADIANS .
Returns:
the Euler radius of the ellipsoid at the given latitude.
`radiusEuler(double, double, double, double, double)`

```double radiusEuler(double aLatitude,
double aSinLat,
double aAzimuth,
double aCosAzimuth,
double aSinAzimuth)```
Euler radius of the ellipsoid at a given latitude `aLatitude` and a given azimuth `aAzimuth`. The euler radius is the mean radius of the spheroidal arc at the given latitude for the given azimuth.
Parameters:
`aLatitude` - latitude, in arc degrees.
`aSinLat` - the sine of the latitude.
`aAzimuth` - azimuth, in RADIANS .
`aCosAzimuth` - the cosine of the azimuth.
`aSinAzimuth` - the sine of the azimuth.
Returns:
the Euler radius of the ellipsoid at the given latitude.

`double radiusGaussian(double aLatitude)`
The Gaussian curvature radius is the geometric mean of the vertical and the meridional radius. See p. 78 of Coordinate Systems and Map Projections , 2nd edition, 1992, Maling. Often used as the basis for conformal spherical calculations.
Parameters:
`aLatitude` - latitude, in degrees
Returns:
`radiusMeridian(double)`, `radiusVertical(double)`

```double radiusGaussian(double aLatitude,
double aSinLat)```
The Gaussian curvature radius is the geometric mean of the vertical and the meridional radius. See p. 78 of Coordinate Systems and Map Projections , 2nd edition, 1992, Maling. Often used as the basis for conformal spherical calculations.
Parameters:
`aLatitude` - latitude, in degrees
`aSinLat` - the sine of the latitude.
Returns:
`radiusMeridian(double)`, `radiusVertical(double)`

`double getAuxRadius()`
Radius of auxiliary sphere of the ellipsoid. The simplest choice is to take the semiMajorAxis of the ellipsoid.
Returns:

`double getConformalRadius()`
Radius of a sphere such that its meridional arc from 0 -> 90 degrees is equal to the corresponding meridional arc on the ellipsoid.
Returns:
the radius of a sphere such that its meridional arc from 0 -> 90 degrees is equal to the corresponding meridional arc on the ellipsoid.
• #### intersects2DLS

```boolean intersects2DLS(ILcdPoint aP1,
ILcdPoint aP2,
ILcdPoint aP3,
ILcdPoint aP4)```
Checks whether two geodesic line segments intersect. Any intersection will always lie on both segments (i.e. between aP1 and aP2, and between aP3 and aP4).
Parameters:
`aP1` - start point of the first line segment.
`aP2` - end point of the first line segment.
`aP3` - start point of the second line segment.
`aP4` - end point of the second line segment.
Returns:
`true` if the segments intersect each other, `false` otherwise.
• #### intersects2DLS

```boolean intersects2DLS(double aLon1,
double aLat1,
double aLon2,
double aLat2,
double aLon3,
double aLat3,
double aLon4,
double aLat4)```
Checks whether two geodesic line segments with the given coordinates intersect. Any intersection will always lie on both segments (i.e. between the points `(aLon1,aLat1)` and `(aLon2,aLat2)`, and between `(aLon3,aLat3)` and `(aLon4,aLat4)`.
Parameters:
`aLon1` - longitude of the start point of the first geodesic line segment.
`aLat1` - latitude of the start point of the first geodesic line segment.
`aLon2` - longitude of the end point of the first geodesic line segment.
`aLat2` - latitude of the end point of the first geodesic line segment.
`aLon3` - longitude of the start point of the first geodesic line segment.
`aLat3` - latitude of the start point of the first geodesic line segment.
`aLon4` - longitude of the end point of the first geodesic line segment.
`aLat4` - latitude of the end point of the first geodesic line segment.
Returns:
`true` if geodesic line segments intersect each other, `false` otherwise.
• #### intersection2DLSSFCT

```void intersection2DLSSFCT(ILcdPoint aP1,
ILcdPoint aP2,
ILcdPoint aP3,
ILcdPoint aP4,
ILcd2DEditablePoint aLLPSFCT)```
Calculates the intersection of two geodesic lines going containing the given coordinates. The intersection will always lie on both segments (i.e. between aP1 and aP2, and between aP3 and aP4).
Parameters:
`aP1` - start point of the first geodesic line segment.
`aP2` - end point of the first geodesic line segment.
`aP3` - start point of the second geodesic line segment.
`aP4` - end point of the second geodesic line segment.
`aLLPSFCT` - represents the intersection point on return of the method.
Throws:
`RuntimeException` - when the geodesic lines do not intersect.
• #### intersection2DLSSFCT

```void intersection2DLSSFCT(double aLon1,
double aLat1,
double aLon2,
double aLat2,
double aLon3,
double aLat3,
double aLon4,
double aLat4,
ILcd2DEditablePoint aLLPSFCT)```
Calculates the intersection of two geodesic lines going through the given coordinates. Any intersection will always lie on both segments (i.e. between the points `(aLon1,aLat1)` and `(aLon2,aLat2)`, and between `(aLon3,aLat3)` and `(aLon4,aLat4)`.
Parameters:
`aLon1` - longitude of the start point of the first geodesic line segment.
`aLat1` - latitude of the start point of the first geodesic line segment.
`aLon2` - longitude of the end point of the first geodesic line segment.
`aLat2` - latitude of the end point of the first geodesic line segment.
`aLon3` - longitude of the start point of the first geodesic line segment.
`aLat3` - latitude of the start point of the first geodesic line segment.
`aLon4` - longitude of the end point of the first geodesic line segment.
`aLat4` - latitude of the end point of the first geodesic line segment.
`aLLPSFCT` - represents the intersection point on return of the method.
Throws:
`RuntimeException` - when the geodesic lines do not intersect.
• #### distanceToGeodesic

```double distanceToGeodesic(ILcdPoint aP1,
ILcdPoint aP2,
ILcdPoint aP3,
double aAngle)```
Calculates the distance between the geodesic `aP1-aP2` and the point `aP3`, at a certain angle `aAngle`. Returns result in degrees.
Parameters:
`aP1` - first end point of defined geodesic line.
`aP2` - seconds end point of defined geodesic line.
`aP3` - point from which the distance has to be calculated.
`aAngle` - defines the angle between the geodesic defined by `aP3` and the point of crossing and the geodesic defined by `aP1` and `aP2`. Should be specified in degrees.
Returns:
the distance in degrees.
• #### bufferContour2DOfSegmentSFCT

```void bufferContour2DOfSegmentSFCT(ILcdPoint aStartPoint,
ILcdPoint aEndPoint,
double aWidth,
ILcd2DEditablePoint[] a2DEditablePointArraySFCT)```
Calculates the contour of the rectangle defined by `aStartPoint`, `aEndPoint`, and `aWidth`, as an array of 4 `ILcd2DEditablePoint` objects. The ordering of the points of the contour is clockwise starting from the first point of the rectangle.

Because there are only 4 points used to define the contour, the contour representation becomes less accurate when the start and end point are further removed from each other: the connected contour lines no longer lie at the given distance from the axis at each intermediate point. For a more accurate calculation of a buffer contour that uses additional contour points if necessary, please refer to `TLcdEllipsoidUtil#computeBufferContour2D`.

Parameters:
`aStartPoint` - start point of buffer segment.
`aEndPoint` - end point of buffer segment.
`aWidth` - distance from the line segment to the contour in meters.
`a2DEditablePointArraySFCT` - an initialized array of 4 `ILcd2DEditablePoint` objects, which will represent the contour polygon.
• #### bufferContour2DOf2DPolylineSFCT

```void bufferContour2DOf2DPolylineSFCT(ILcdPointList aPointList,
double aWidth,
ILcd2DEditablePoint[] a2DEditablePointArraySFCT)```
Calculates the contour of the buffer/corridor along a given `ILcdPointList` at a given width. The ordering of the points of the contour is clockwise starting from the first point of the rectangle.

This implementation has the following limitations:

• contours with holes (i.e., caused by axis intersections) cannot be represented, since the contour is modeled as an `ILcd2DEditablePoint` array,
• the corners of the contour at the axis points are sharp instead of rounded, which make it less suitable for buffers that have sharp angles between its consecutive axis segments; it has also has as consequence that the distance between the contour and the axis exceeds the given buffer distance in the corners,
• the calculated contour is only an estimate, because it uses a reduced number of contour points; when the start and end point of a segment are further removed from each other, the connected contour lines no longer lie at the given distance from the axis at each intermediate point.
For an improved calculation of a buffer contour that overcomes these limitations, please refer to `TLcdEllipsoidUtil#computeBufferContour2D`.

Parameters:
`aPointList` - the axis of the buffer.
`aWidth` - distance from the axis to the contour in meters.
`a2DEditablePointArraySFCT` - an initialized array of `aPointList.getPointCount() * 2` `ILcd2DEditablePoint` objects, which will represent the contour polygon.
• #### equals

`boolean equals(Object aEllipsoid)`
Overrides Object.equals.
Overrides:
`equals` in class `Object`
Parameters:
`aEllipsoid` - Object to be checked on.
Returns:
true if both objects are equal.
• #### getName

`String getName()`
Gets the name of this `ILcdEllipsoid`.
Returns:
the name of this `ILcdEllipsoid`.