# Ellipsoid

An ellipsoid is a mathematically defined approximation of the earth’s surface.

An ellipsoid is defined by two parameters:

- the semi-major axis
*a*(equatorial radius) - the semi-minor axis
*b*(polar radius)

*a* and *b* together define the flattening of the ellipsoid *f*:

*f = (a-b) / a*

NOTE: *phpgeo’s* ellipsoids are defined by *a* and *1/f* instead of *a*
and *b*. That’s not a problem because each of the three values can be
calculated from the other two.

*phpgeo* supports arbitrary ellipsoids. *WGS-84* is used as default when
no other ellipsoid is given. For day-to-day calculations it’s not needed
to care about ellipsoids in the most cases.

It’s possible to create an instance of the Ellipsoid class either by
specifing a name or by providing the three parameters *name,* *a*, and *1/f*.

```
<?php
use Location\Ellipsoid;
$ellipsoid = Ellipsoid::createDefault('WGS-84');
printf(
"%s: a=%f; b=%f; 1/f=%f\n",
$ellipsoid->getName(),
$ellipsoid->getA(),
$ellipsoid->getB(),
$ellipsoid->getF()
);
$ellipsoid = new Ellipsoid('GRS-80', 6378137, 298.257222);
printf(
"%s: a=%f; b=%f; 1/f=%f\n",
$ellipsoid->getName(),
$ellipsoid->getA(),
$ellipsoid->getB(),
$ellipsoid->getF()
);
```

The first ellipsoid is created from one of the default configurations. The second one is created by providing a name and the values of *a* and *1/f.*

The code above will produce the output below:

```
WGS-84: a=6378137.000000; b=6356752.314245; 1/f=298.257224
GRS-80: a=6378137.000000; b=6356752.314133; 1/f=298.257222
```

Please take a look into the `Ellipsoid`

source file
for a list of pre-defined ellipsoids.