# reckon

Point at specified azimuth, range on sphere or ellipsoid

## Syntax

```[latout,lonout] = reckon(lat,lon,arclen,az) [latout,lonout] = reckon(lat,lon,arclen,az,units) [latout,lonout] = reckon(lat,lon,arclen,az,ellipsoid) [latout,lonout] = reckon(lat,lon,arclen,az,ellipsoid,units) [latout,lonout] = reckon(track,...) ```

## Description

`[latout,lonout] = reckon(lat,lon,arclen,az)`, for scalar inputs, calculates a position (`latout,lonout`) at a given range, `arclen`, and azimuth, `az`, along a great circle from a starting point defined by `lat` and `lon`. `lat` and `lon` are in degrees. `arclen` must be expressed as degrees of arc on a sphere, and equals the length of a great circle arc connecting the point (`lat`, `lon`) to the point (`latout`, `lonout`). `az`, also in degrees, is measured clockwise from north. `reckon` calculates multiple positions when given four arrays of matching size. When given a combination of scalar and array inputs, the scalar inputs are automatically expanded to match the size of the arrays.

`[latout,lonout] = reckon(lat,lon,arclen,az,units)`, where `units` is either `'degrees'` or `'radians'`, specifies the units of the inputs and outputs, including `arclen`. The default value is `'degrees'`.

`[latout,lonout] = reckon(lat,lon,arclen,az,ellipsoid)` calculates positions along a geodesic on an ellipsoid, as specified by `ellipsoid`. `ellipsoid` is a `referenceSphere`, `referenceEllipsoid`, or `oblateSpheroid` object, or a vector of the form ```[semimajor_axis eccentricity]```. The range, `arclen`, must be expressed same unit of length as the semimajor axis of the `ellipsoid`.

`[latout,lonout] = reckon(lat,lon,arclen,az,ellipsoid,units)` calculates positions on the specified ellipsoid with `lat`, `lon`, `az`, `latout`, and `lonout` in the specified angle units.

`[latout,lonout] = reckon(track,...)` calculates positions on great circles (or geodesics) if `track` is `'gc'` and along rhumb lines if `track` is `'rh'`. The default value is `'gc'`.

## Examples

Find the coordinates of the point 600 nautical miles northwest of London, UK (51.5ºN,0º) in a great circle sense:

```% Convert nm distance to degrees. dist = nm2deg(600) dist = 9.9933 % Northwest is 315 degrees. pt1 = reckon(51.5,0,dist,315) pt1 = 57.8999 -13.3507```

Now, determine where a plane from London traveling on a constant northwesterly course for 600 nautical miles would end up:

```pt2 = reckon('rh',51.5,0,dist,315) pt2 = 58.5663 -12.3699```

How far apart are the points above (distance in great circle sense)?

```separation = distance('gc',pt1,pt2) separation = 0.8430 % Convert answer to nautical miles. nmsep = deg2nm(separation) nmsep = 50.6156```

Over 50 nautical miles separate the two points. 