com.metsci.glimpse.util.geo.util

Class SpheroidUtil

• ```public final class SpheroidUtil
extends Object```
Author:
osborn
• Constructor Summary

Constructors
Constructor and Description
`SpheroidUtil()`
• Method Summary

All Methods
Modifier and Type Method and Description
`static double` ```curvatureMeridional(double latRad, Datum d)```
Computes a spheroid's radius of curvature in the plane of the meridian at a given latitude.
`static double` ```curvatureNormal(double latRad, Datum d)```
Computes a spheroid's radius of curvature in the plane perpendicular to both the plane of the meridian and the tangent plane at a given latitude.
`static PositionAzimuth` ```forward(Datum datum, LatLonGeo from, double dist, double azimuth)```
Solution of the geodetic direct problem using T.
`static double` ```geocentricToGeodetic(double geocentricLatRad, double e2)```
Projects a geocentric latitude onto a geodetic latitude using a ray through the center of the sphere.
`static double` ```geodeticToGeocentric(double geodeticLatRad, double e2)```
Projects a geodetic latitude onto a geocentric latitude using a ray through the center of the spheroid.
`static DistanceAzimuth` ```inverse(Datum datum, LatLonGeo from, LatLonGeo to)```
Solution of the geodetic inverse problem using T.
`static double` ```meridionalDistance(Datum datum, double startLatRad, double endLatRad)```
`static LatLonGeo` ```toLatLonGeo(double x, double y, double z, Datum d)```
Direct transformation from ECEF-r to ECEF-g coordinates.
`static LatLonRect` ```toLatLonRect(double northLatRad, double eastLonRad, double altitude, Datum d)```
Transformation from ECEF-g to ECEF-r coordinates.
• Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
• Constructor Detail

• SpheroidUtil

`public SpheroidUtil()`
• Method Detail

• geodeticToGeocentric

```public static double geodeticToGeocentric(double geodeticLatRad,
double e2)```
Projects a geodetic latitude onto a geocentric latitude using a ray through the center of the spheroid.
Parameters:
`geodeticLatRad` - geodetic latitude to project (in radians)
`e2` - squared eccentricity of new latitude's underlying spheroid
Returns:
geocentric latitude corresponding to input geodetic latitude
• geocentricToGeodetic

```public static double geocentricToGeodetic(double geocentricLatRad,
double e2)```
Projects a geocentric latitude onto a geodetic latitude using a ray through the center of the sphere.
Parameters:
`geocentricLatRad` - geocentric latitude to project (in radians)
`e2` - squared eccentricity of the input latitude's underlying spheroid
Returns:
geodetic latitude corresponding to input geocentric latitude
• curvatureMeridional

```public static double curvatureMeridional(double latRad,
Datum d)```
Computes a spheroid's radius of curvature in the plane of the meridian at a given latitude. Sign of latitude is irrelevant due to symmetry.
• curvatureNormal

```public static double curvatureNormal(double latRad,
Datum d)```
Computes a spheroid's radius of curvature in the plane perpendicular to both the plane of the meridian and the tangent plane at a given latitude. Sign of latitude is irrelevant due to symmetry.
• toLatLonGeo

```public static LatLonGeo toLatLonGeo(double x,
double y,
double z,
Datum d)```
Direct transformation from ECEF-r to ECEF-g coordinates. Exact, but point must be >~ 50km from center of earth on a WGS-84 ellipse.

H. Vermeille, Journal of Geodesy (2002) 76:451-454.

• toLatLonRect

```public static LatLonRect toLatLonRect(double northLatRad,
double altitude,
Datum d)```
Transformation from ECEF-g to ECEF-r coordinates.
• forward

```public static PositionAzimuth forward(Datum datum,
LatLonGeo from,
double dist,
double azimuth)```

Solution of the geodetic direct problem using T. Vincenty modified Rainsford's method with Helmert's elliptical terms.

Code adapted from the Fortran implementation used in NOAA's "The Geodetic Toolkit."

NOTE: Effective in any azimuth and at any distance short of antipodal.

Parameters:
`datum` - underlying datum for geodesic
`from` - starting position
`dist` - distance to travel
`azimuth` - initial azimuth of geodesic
Returns:
final position and initial azimuth of geodesic back to starting position
• inverse

```public static DistanceAzimuth inverse(Datum datum,
LatLonGeo from,
LatLonGeo to)```
Solution of the geodetic inverse problem using T. Vincenty modified Rainsford's method with Helmert's elliptical terms. Code adapted from the Fortran implementation used in NOAA's "The Geodetic Toolkit."

LIMITATION: Effective in any azimuth and at any distance short of antipodal.

LIMITATION: From/to stations must not be the geographic pole.

NOTE: Be aware of lift-off and be careful on the equator.

Parameters:
`datum` - datum on which to invert geodesic
`from` - start position
`to` - end position
Returns:
distance between points and initial geodesic azimuth from start to end
• meridionalDistance

```public static double meridionalDistance(Datum datum,