Cardinal
========
[](https://github.com/gwbres/dms-coordinates/actions/workflows/rust.yml)
[](https://docs.rs/dms-coordinates/badge.svg)
[](https://crates.io/crates/dms-coordinates)
[](https://crates.io/crates/dms-coordinates)
[](https://github.com/gwbres/dms-coordinates/blob/main/LICENSE-APACHE)
[](https://github.com/gwbres/dms-coordinates/blob/main/LICENSE-MIT)
Cardinal points
```rust
let n = Cardinal::NorthEast;
assert_eq!(n.is_northern(), true);
assert_eq!(south.is_eastern(), false);
```
It is possible to add or substract an angle in D°:
```
let south = Cardinal::North + 180; // D°
assert_eq!(south, Cardinal::South);
assert_eq!(south.is_southern(), true);
assert_eq!(south.is_eastern(), false);
```
Value is rounded to lowest closest Cardinal
```rust
let south = Cardinal::North + 190; // D°
assert_eq!(south, Cardinal::South);
```
Build Cardinal from Angle in D°, we consider 0° as North
```rust
let n = Cardinal::from_angle(0);
assert_eq!(n.is_northern(), true);
assert_eq!(n.is_southern(), false);
let e = Cardinal::from_angle(90);
assert_eq!(e.is_eastern(), true);
```