siderust-cpp
Header-only C++ wrapper for siderust
Loading...
Searching...
No Matches
geodetic.hpp
Go to the documentation of this file.
1#pragma once
2
9#include "../centers.hpp"
10#include "../ffi_core.hpp"
11#include "../frames.hpp"
12
13#include <qtty/qtty.hpp>
14
15namespace siderust {
16namespace cartesian {
17template <typename C, typename F, typename U>
18struct Position;
19}
20
28struct Geodetic {
29 qtty::Degree lon;
30 qtty::Degree lat;
31 qtty::Meter height;
32
34 : lon(qtty::Degree(0)), lat(qtty::Degree(0)), height(qtty::Meter(0)) {}
35
36 Geodetic(qtty::Degree lon_, qtty::Degree lat_, qtty::Meter h = qtty::Meter(0))
37 : lon(lon_), lat(lat_), height(h) {}
38
40 Geodetic(double lon_deg, double lat_deg, double height_m = 0.0)
41 : lon(qtty::Degree(lon_deg)), lat(qtty::Degree(lat_deg)),
42 height(qtty::Meter(height_m)) {}
43
45 siderust_geodetic_t to_c() const {
46 return {lon.value(), lat.value(), height.value()};
47 }
48
50 static Geodetic from_c(const siderust_geodetic_t& c) {
51 return Geodetic(c.lon_deg, c.lat_deg, c.height_m);
52 }
53
59 template <typename U = qtty::Meter>
61};
62
63} // namespace siderust
Geodetic position (WGS84 ellipsoid).
Definition geodetic.hpp:28
qtty::Degree lon
Longitude (east positive).
Definition geodetic.hpp:29
cartesian::Position< centers::Geocentric, frames::ECEF, U > to_cartesian() const
Convert geodetic (WGS84/ECEF) to cartesian position.
Geodetic(qtty::Degree lon_, qtty::Degree lat_, qtty::Meter h=qtty::Meter(0))
Definition geodetic.hpp:36
qtty::Degree lat
Latitude (north positive).
Definition geodetic.hpp:30
Geodetic(double lon_deg, double lat_deg, double height_m=0.0)
Raw-double convenience constructor (degrees, metres).
Definition geodetic.hpp:40
qtty::Meter height
Height above ellipsoid.
Definition geodetic.hpp:31
siderust_geodetic_t to_c() const
Convert to C FFI struct.
Definition geodetic.hpp:45
static Geodetic from_c(const siderust_geodetic_t &c)
Create from C FFI struct.
Definition geodetic.hpp:50
A 3D Cartesian position, compile-time tagged by center, frame, unit.
Definition cartesian.hpp:53