Functions for performing various position calculations are available for download here. The functions are available in Matlab, C#, C++, Python, JavaScript, and other languages.

## Matlab

Convert between lat/long and n-vector:

• lat_long2n_E.m Converts latitude and longitude to n-vector
• n_E2lat_long.m Converts n-vector to latitude and longitude

Convert between delta (i.e. local position vector) and n-vectors:

• n_EA_E_and_n_EB_E2p_AB_E.m From two positions A and B, finds the delta position
• n_EA_E_and_p_AB_E2n_EB_E.m From position A and delta, finds position B

Convert between n-vector and ECEF-vector (i.e. position vector from Earth center, in meters):

• n_EB_E2p_EB_E.m Converts n-vector to ECEF-vector
• p_EB_E2n_EB_E.m Converts ECEF-vector to n-vector

Convert between n-vector and rotation matrix:

• R_EN2n_E.m Finds n-vector from
${R}_{EN}^{}$
• n_E2R_EN.m Finds
${R}_{EN}^{}$
from n-vector
• R_EL2n_E.m Finds n-vector from
${R}_{EL}^{}$
• n_E_and_wa2R_EL.m Finds
${R}_{EL}^{}$
from n-vector and wander azimuth angle

Convert between Euler angles and rotation matrix:

• xyz2R.m Creates a rotation matrix from three angles about new axes in the xyz order
• R2xyz.m Three angles about new axes in the xyz order are found from a rotation matrix
• zyx2R Creates a rotation matrix from three angles about new axes in the zyx order (e.g. yaw-pitch-roll)
• R2zyx.m Three angles about new axes in the zyx order (e.g. yaw-pitch-roll) are found from a rotation matrix

Miscellaneous simple utilities:

• unit.m Makes input vector unit length (i.e. norm=1)
• rad.m Converts angle in degrees to radians
• deg.m Converts angle in radians to degrees
• R_Ee.m Selects axes of the coordinate frame E

Solutions to the ten examples:

## C# (C Sharp)

C#-version of the n-vector library and the 10 examples.

Author: Jørn Inge Vestgården at FFI (responsible for translation from Matlab and adaption to C#).

## C++

C++-version of the n-vector library. (Currently, the first 8 functions in the list above are included).

Author: Magnus Baksaas at FFI (responsible for translation from Matlab and adaption to C++).

## Python

A Python-version of the entire n-vector library is available at GitHub. Python solutions to the 10 examples are also included there.

Author: Per A. Brodtkorb at FFI (responsible for translation from Matlab and adaption to Python).

## JavaScript

For JavaScript, a version of the n-vector library is available, and also solutions to the 10 examples. See also GitHub.

Author: Chris Veness at Movable Type (responsible for translation from Matlab and adaption to JavaScript).

A Haskell-version of the n-vector library is available at GitHub.

Author: Cedric Liegeois at Thales (responsible for translation from Matlab and adaption to Haskell).

## R

For R, a version of the n-vector library is available, and also solutions to the 10 examples. See also GitHub.

Author: Enrico Spinielli at EUROCONTROL (responsible for translation from Matlab and adaption to R).

## Java, LabVIEW etc.

If you translate the functions to another programming language, and want to make your solution available for others, we would be happy to add your files (with credits) to this site (or add a link to a site where the functions are available).