map_3d 0.1.7

Library for 3D geographic coordinate transformation
Documentation
# Rust Map3d

[![crates.io](https://img.shields.io/crates/v/map_3d.svg)](https://crates.io/crates/map_3d)
![Rust](https://github.com/gberrante/map_3d/workflows/Rust/badge.svg)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![codecov](https://codecov.io/gh/gberrante/map_3d/branch/master/graph/badge.svg)](https://codecov.io/gh/gberrante/map_3d)

This is a Rust library for geographic coordinate frame conversion. The implementation is similar to  [Pymap3d](https://github.com/geospace-code/pymap3d). All the functions are implemented in `f64` precision.

Live demo: [map 3d live demo](https://rustmap-3d.firebaseapp.com/)

No external dependencies

The default units are:

- Radians [rad] for angular variables
- Meters  [m] for linear variables
- [Greenwich Sidereal Time]https://www.cfa.harvard.edu/~jzhao/times.html  [GST] for date and time

We support several reference ellipsoids,
[WGS84](https://en.wikipedia.org/wiki/World_Geodetic_System#A_new_World_Geodetic_System:_WGS_84)
is defined as the default one, obtained with `Ellipsoid::default()`.

List of coordinates systems implemented in the functions:

- [Geodetic coordinate system]https://en.wikipedia.org/wiki/Geographic_coordinate_system (GEODETIC)
- [Earth-Centered Earth-fixed]https://en.wikipedia.org/wiki/ECEF (ECEF)
- [Earth-Centered Inertial]https://en.wikipedia.org/wiki/Earth-centered_inertial (ECI)
- [Local spherical coordinate system]https://en.wikipedia.org/wiki/Spherical_coordinate_system#In_geography (AER)
- [Local tangent plane coordinate system - East-North-Up]https://en.wikipedia.org/wiki/Local_tangent_plane_coordinates (ENU)
- [Local tangent plane coordinate system - North-East-Down]https://en.wikipedia.org/wiki/Local_tangent_plane_coordinates (NED)

Additional functions:

> [!TIP]
> Conversion from `degrees` to `radians` (_and vice versa_) is natively supported. See [to_radians]https://doc.rust-lang.org/std/primitive.f64.html#method.to_radians and [to_degrees]https://doc.rust-lang.org/std/primitive.f64.html#method.to_degrees

- UTC time conversion to GST
- 3x3 Matrix - 3x1 column multiplication
- 3x3 Matrix transpose
- f64 round towards zero
- projected distance (`Haversine` formula) between two coordinates (lat, lon, in decimal degrees)