# cython: language_level=3 from libcpp cimport bool cdef extern from "orientation.cc": pass cdef extern from "orientation.hpp": cdef cppclass Quaternion "Eigen::Quaterniond": Quaternion() Quaternion(double, double, double, double) double w() double x() double y() double z() cdef cppclass Vector3 "Eigen::Vector3d": Vector3() Vector3(double, double, double) double operator()(int) cdef cppclass Matrix3 "Eigen::Matrix3d": Matrix3() Matrix3(double*) double operator()(int, int) Quaternion euler2quat(const Vector3 &) Vector3 quat2euler(const Quaternion &) Matrix3 quat2rot(const Quaternion &) Quaternion rot2quat(const Matrix3 &) Vector3 rot2euler(const Matrix3 &) Matrix3 euler2rot(const Vector3 &) Matrix3 rot_matrix(double, double, double) Vector3 ecef_euler_from_ned(const ECEF &, const Vector3 &) Vector3 ned_euler_from_ecef(const ECEF &, const Vector3 &) cdef extern from "coordinates.cc": cdef struct ECEF: double x double y double z cdef struct NED: double n double e double d cdef struct Geodetic: double lat double lon double alt bool radians ECEF geodetic2ecef(const Geodetic &) Geodetic ecef2geodetic(const ECEF &) cdef cppclass LocalCoord_c "LocalCoord": Matrix3 ned2ecef_matrix Matrix3 ecef2ned_matrix LocalCoord_c(const Geodetic &, const ECEF &) LocalCoord_c(const Geodetic &) LocalCoord_c(const ECEF &) NED ecef2ned(const ECEF &) ECEF ned2ecef(const NED &) NED geodetic2ned(const Geodetic &) Geodetic ned2geodetic(const NED &) cdef extern from "coordinates.hpp": pass