# Distance¶

When Distance is supplied with two instances of LatLng it can be used to calculate the distance between the points. It does this by using a Calculator such as Great Circle and optionally a unit converter such as MetreToNauticalMile:

```<?php
use Treffynnon\Navigator as N;
\$coord1 = new N\LatLong(
new N\Coordinate(10.9978),
new N\Coordinate(35.6234)
);
\$coord2 = new N\LatLong(
new N\Coordinate(25),
new N\Coordinate(-13.456)
);
\$Distance = new N\Distance(\$coord1, \$coord2);
```

Specify the calculator and conversion on the get() method of Distance:

```<?php
use Treffynnon\Navigator\Distance as D;
\$distance = \$Distance->get(new D\Calculator\GreatCircle,
new D\Converter\MetreToNauticalMile);
```

\$distance now has the distance value calculated by Great Circle in Nautical Miles.

## Calculators¶

The Navigator library comes with four distance calculators by default:

• The Cosine Law
• Great Circle
• Haversine
• Vincenty

Of the selection Vincenty is the most accurate and also the default. It is the most computationally intensive, but not prohibitively so by any stretch.

### Celestial Bodies¶

Most commonly and by default Navigator will be using Earth, but it can be altered by passing in a different Celestial Body such as Mars or the Moon:

```<?php
use Treffynnon\Navigator\CelestialBody\Mars as M;
use Treffynnon\Navigator\Distance as D;
\$distance = \$Distance->get(new D\Calculator\GreatCircle(new M),
new D\Converter\MetreToNauticalMile);
```

#### Custom Celestial Bodies¶

Custom celestial bodies are very simple to setup with a set of statistics - see Treffynnon\Navigator\CelestialBody\CelestialBodyAbstract for more information.

### Custom Calculators¶

As with coordinate parsers it is a trivial matter to create custom calculators. Simply extend the abstract class - Treffynnon\Navigator\Distance\Calculator\CalculatorAbstract.

## Converters¶

Converters can be used independently of the Navigator library or injected into the Distance->get() method. By default Navigator returns distances in metres, but this can be converted to the following units:

• Furlong
• Kilometre
• League
• Mile
• Nautical Mile
• Parsec

An example follows:

```<?php
use Treffynnon\Navigator\Distance\Converter\MetreToFurlong as F;
\$distance = \$Distance->get(null, new F);
```

### Custom Converters¶

As with custom calculators, but even simpler! See Treffynnon\Navigator\Distance\Converter\ConverterAbstract.