geoc2geod

Convert geocentric latitude to geodetic latitude

Syntax

```geodeticLatitude = geoc2geod(geocentricLatitude, radii) geodeticLatitude = geoc2geod(geocentricLatitude, radii, model) geodeticLatitude = geoc2geod(geocentricLatitude, radii, flattening, equatorialRadius) ```

Description

```geodeticLatitude = geoc2geod(geocentricLatitude, radii)``` converts an array of `m`-by-1 geocentric latitudes and an array of radii from the center of the planet into an array of `m`-by-1 geodetic latitudes.

```geodeticLatitude = geoc2geod(geocentricLatitude, radii, model)``` converts for a specific ellipsoid planet.

```geodeticLatitude = geoc2geod(geocentricLatitude, radii, flattening, equatorialRadius)``` converts for a custom ellipsoid planet defined by flattening and the equatorial radius.

The function uses geometric relationships to calculate the geodetic latitude in this noniterative method.

This function has the limitation that this implementation generates a geodetic latitude that lies between ±90 degrees.

Input Arguments

 `geocentricLatitude` Array of `m`-by-1 geocentric latitudes, in degrees. Latitude values can be any value. However, values of +90 and -90 may return unexpected values because of singularity at the poles. `radii` Array of radii from the center of the planet, in meters. `model` Specific ellipsoid planet. This function supports only `'WGS84'`. `flattening` Custom ellipsoid planet defined by flattening. `equatorialRadius` Equatorial radius, in meters.

Output Arguments

 `geodeticLatitude` Array of `m`-by-1 geodetic latitudes, in degrees.

Examples

Determine geodetic latitude given a geocentric latitude and radius:

```gd = geoc2geod(45, 6379136) gd = 45.1921```

Determine geodetic latitude at multiple geocentric latitudes, given a radius, and specifying WGS84 ellipsoid model:

```gd = geoc2geod([0 45 90], 6379136, 'WGS84') gd = 0 45.1921 90.0000```

Determine geodetic latitude at multiple geocentric latitudes, given a radius, and specifying custom ellipsoid model:

```f = 1/196.877360; Re = 3397000; gd = geoc2geod([0 45 90], 6379136, f, Re) gd = 0 45.1550 90.0000```

Algorithms

The `geoc2geod` function converts a geocentric latitude (λ) into geodetic latitude (μ), where:

Given geocentric latitude (λ) and the radius (r) from the center of the planet, this function first converts the desired points into the distance from the polar axis (ρ) and the distance from the equatorial axis (z).

`$\begin{array}{l}\rho =r\left(\mathrm{cos}\left(\lambda \right)\right)\\ z=r\left(\mathrm{sin}\left(\lambda \right)\right).\end{array}$`

It then calculates the geometric properties of the planet:

`$\begin{array}{l}b=a\left(1-f\right)\\ {e}^{2}=f\left(2-f\right)\\ e{\text{'}}^{2}=\frac{{e}^{2}}{\left(1-{e}^{2}\right)}.\end{array}$`

And then uses the fixed-point iteration of Bowring's formula to calculate μ. This formula typically converges in three iterations.

`$\begin{array}{l}\beta ={\mathrm{tan}}^{-1}\left(\frac{\left(1-f\right)\mathrm{sin}\left(\mu \right)}{\mathrm{cos}\left(\mu \right)}\right)\\ \mu ={\mathrm{tan}}^{-1}\left(\frac{z+b{e}^{{\text{'}}^{2}}\mathrm{sin}{\left(\beta \right)}^{3}}{\rho -a{e}^{2}\mathrm{cos}{\left(\beta \right)}^{3}}\right).\end{array}$`

References

Jackson, E.B., Manual for a Workstation-based Generic Flight Simulation Program (LaRCsim) Version 1.4, NASA TM 110164, April 1995

Hedgley, D. R., Jr., An Exact Transformation from Geocentric to Geodetic Coordinates for Nonzero Altitudes, NASA TR R-458, March, 1976

Clynch, J. R.. "Radius of the Earth - Radii Used in Geodesy." Naval Postgraduate School, Monterey, California, 2002.

Stevens, B. L., and F. L. Lewis, Aircraft Control and Simulation, John Wiley & Sons, New York, NY, 1992

Edwards, C. H., and D. E. Penny, Calculus and Analytical Geometry, 2nd Edition, Prentice-Hall, Englewood Cliffs, NJ, 1986