Class ReferenceEllipsoid

All Implemented Interfaces:
BodyShape, EarthShape

public class ReferenceEllipsoid extends OneAxisEllipsoid implements EarthShape
A Reference Ellipsoid for use in geodesy. The ellipsoid defines an ellipsoidal potential called the normal potential, and its gradient, normal gravity.

These parameters are needed to define the normal potential:

  • a, semi-major axis
  • f, flattening
  • GM, the gravitational parameter
  • ω, the spin rate

References:

  1. Martin Losch, Verena Seufer. How to Compute Geoid Undulations (Geoid Height Relative to a Given Reference Ellipsoid) from Spherical Harmonic Coefficients for Satellite Altimetry Applications. , 2003. mitgcm.org/~mlosch/geoidcookbook.pdf
  2. Weikko A. Heiskanen, Helmut Moritz. Physical Geodesy. W. H. Freeman and Company, 1967. (especially sections 2.13 and equation 2-144)
  3. Department of Defense World Geodetic System 1984. 2000. NIMA TR 8350.2 Third Edition, Amendment 1.
Author:
Evan Ward, Guylaine Prat
  • Constructor Details

    • ReferenceEllipsoid

      public ReferenceEllipsoid(double ae, double f, Frame bodyFrame, double GM, double spin)
      Creates a new geodetic Reference Ellipsoid from four defining parameters.
      Parameters:
      ae - Equatorial radius, in m
      f - flattening of the ellipsoid.
      bodyFrame - the frame to attach to the ellipsoid. The origin is at the center of mass, the z axis is the minor axis.
      GM - gravitational parameter, in m3/s2
      spin - ω in rad/s
  • Method Details

    • getGM

      public double getGM()
      Gets the gravitational parameter that is part of the definition of the reference ellipsoid.
      Returns:
      GM in m3/s2
    • getSpin

      public double getSpin()
      Gets the rotation of the ellipsoid about its axis.
      Returns:
      ω in rad/s
    • getPolarRadius

      public double getPolarRadius()
      Get the radius of this ellipsoid at the poles.
      Returns:
      the polar radius, in meters
      See Also:
    • getNormalGravity

      public double getNormalGravity(double latitude)
      Gets the normal gravity, that is gravity just due to the reference ellipsoid's potential. The normal gravity only depends on latitude because the ellipsoid is axis symmetric.

      The normal gravity is a vector, having both magnitude and direction. This method only give the magnitude.

      Parameters:
      latitude - geodetic latitude, in radians. That is the angle between the local normal on the ellipsoid and the equatorial plane.
      Returns:
      the normal gravity, γ, at the given latitude in m/s2. This is the acceleration felt by a mass at rest on the surface of the reference ellipsoid.
    • getC2n0

      public double getC2n0(int n)
      Get the fully normalized coefficient C2n,0 for the normal gravity potential.
      Parameters:
      n - index in C2n,0, n >= 1.
      Returns:
      normalized C2n,0 of the ellipsoid
      See Also:
      • "Department of Defense World Geodetic System 1984. 2000. NIMA TR 8350.2 Third Edition, Amendment 1."
      • "DMA TR 8350.2. 1984."
    • getEllipsoid

      public ReferenceEllipsoid getEllipsoid()
      Description copied from interface: EarthShape
      Get the underlying ellipsoid model that defines latitude and longitude. If the height component of a GeodeticPoint is not needed, then using the ellipsoid will provide the quickest transformation.
      Specified by:
      getEllipsoid in interface EarthShape
      Returns:
      the reference ellipsoid. May be this, but never null.
    • getWgs84

      public static ReferenceEllipsoid getWgs84(Frame bodyFrame)
      Get the WGS84 ellipsoid, attached to the given body frame.
      Parameters:
      bodyFrame - the earth centered fixed frame
      Returns:
      a WGS84 reference ellipsoid
    • getGrs80

      public static ReferenceEllipsoid getGrs80(Frame bodyFrame)
      Get the GRS80 ellipsoid, attached to the given body frame.
      Parameters:
      bodyFrame - the earth centered fixed frame
      Returns:
      a GRS80 reference ellipsoid
    • getIers96

      public static ReferenceEllipsoid getIers96(Frame bodyFrame)
      Get the IERS96 ellipsoid, attached to the given body frame.
      Parameters:
      bodyFrame - the earth centered fixed frame
      Returns:
      an IERS96 reference ellipsoid
    • getIers2003

      public static ReferenceEllipsoid getIers2003(Frame bodyFrame)
      Get the IERS2003 ellipsoid, attached to the given body frame.
      Parameters:
      bodyFrame - the earth centered fixed frame
      Returns:
      an IERS2003 reference ellipsoid
    • getIers2010

      public static ReferenceEllipsoid getIers2010(Frame bodyFrame)
      Get the IERS2010 ellipsoid, attached to the given body frame.
      Parameters:
      bodyFrame - the earth centered fixed frame
      Returns:
      an IERS2010 reference ellipsoid