![]() |
siderust-cpp 0.8.0
Header-only C++ wrapper for siderust
|
A 3D Cartesian position, compile-time tagged by center, frame, unit. More...
#include <siderust/coordinates/cartesian.hpp>
Public Member Functions | |
| Position () | |
| Position (U x_, U y_, U z_) | |
| Position (double x_, double y_, double z_) | |
| U | x () const |
| U | y () const |
| U | z () const |
| U | distance () const |
| spherical::Position< C, F, U > | to_spherical () const |
| Convert this cartesian position to a spherical Position<C,F,U>. | |
| U | distance_to (const Position &other) const |
| siderust_cartesian_pos_t | to_c () const |
| Convert to C FFI struct. | |
| template<typename Target > | |
| std::enable_if_t< frames::has_frame_transform_v< F, Target >, Position< C, Target, U > > | to_frame (const Time< TT, JD > &jd) const |
| Transform this position to a different reference frame (same center). | |
| template<typename Target > | |
| std::enable_if_t< frames::has_frame_transform_v< F, Target >, Position< C, Target, U > > | to_frame_with (const Time< TT, JD > &jd, const AstroContext &ctx) const |
| Transform this position with an explicit astronomical context. | |
| template<typename Target > | |
| auto | to (const Time< TT, JD > &jd) const -> decltype(this->template to_frame< Target >(jd)) |
Shorthand: .to<Target>(jd) (calls to_frame). | |
| template<typename TargetC > | |
| std::enable_if_t< centers::has_center_transform_v< C, TargetC >, Position< TargetC, F, U > > | to_center (const Time< TT, JD > &jd) const |
| Transform this position to a different reference center (same frame). | |
| template<typename TargetC , typename TargetF > | |
| std::enable_if_t< frames::has_frame_transform_v< F, TargetF > &¢ers::has_center_transform_v< C, TargetC >, Position< TargetC, TargetF, U > > | transform (const Time< TT, JD > &jd) const |
| Combined frame + center transform in one call. | |
| Displacement< F, U > | operator- (const Position &other) const |
| Subtract two positions in the same center/frame/unit. | |
| Position | operator+ (const Displacement< F, U > &displacement) const |
| Translate a position by a displacement. | |
| Position | operator- (const Displacement< F, U > &displacement) const |
| Translate a position backwards by a displacement. | |
| U | magnitude () const |
| Magnitude of the position vector (alias for distance()). | |
| template<typename Target > | |
| std::enable_if_t< siderust::frames::has_frame_transform_v< F, Target >, siderust::spherical::Position< C, Target, U > > | to_frame (const Time< TT, JD > &jd) const |
| template<typename Target > | |
| std::enable_if_t< siderust::frames::has_frame_transform_v< F, Target >, siderust::spherical::Position< C, Target, U > > | to_frame_with (const Time< TT, JD > &jd, const AstroContext &ctx) const |
Static Public Member Functions | |
| static constexpr siderust_frame_t | frame_id () |
| static constexpr siderust_center_t | center_id () |
| static Position | from_c (const siderust_cartesian_pos_t &c) |
| Create from C FFI struct (ignoring runtime frame/center - trust the type). | |
Public Attributes | |
| U | comp_x |
| X component. | |
| U | comp_y |
| Y component. | |
| U | comp_z |
| Z component. | |
A 3D Cartesian position, compile-time tagged by center, frame, unit.
Mirrors Rust's affn::cartesian::Position<C, F, U>.
| C | Reference center tag (e.g. centers::Geocentric). |
| F | Reference frame tag (e.g. frames::ECEF). |
| U | Length unit (default: qtty::Meter). |
Definition at line 286 of file cartesian.hpp.
|
inline |
Definition at line 294 of file cartesian.hpp.
Referenced by siderust::cartesian::Position< C, F, U >::from_c(), siderust::cartesian::Position< C, F, U >::operator+(), and siderust::cartesian::Position< C, F, U >::operator-().
Definition at line 296 of file cartesian.hpp.
Definition at line 298 of file cartesian.hpp.
|
inlinestaticconstexpr |
Definition at line 326 of file cartesian.hpp.
Referenced by siderust::cartesian::Position< C, F, U >::to_c().
|
inline |
Definition at line 304 of file cartesian.hpp.
References siderust::cartesian::Position< C, F, U >::comp_x, siderust::cartesian::Position< C, F, U >::comp_y, siderust::cartesian::Position< C, F, U >::comp_z, and siderust::cartesian::Position< C, F, U >::to_frame().
Referenced by siderust::cartesian::Position< C, F, U >::magnitude().
|
inline |
Definition at line 317 of file cartesian.hpp.
References siderust::cartesian::Position< C, F, U >::comp_x, siderust::cartesian::Position< C, F, U >::comp_y, siderust::cartesian::Position< C, F, U >::comp_z, and siderust::cartesian::Position< C, F, U >::to_frame().
|
inlinestaticconstexpr |
Definition at line 325 of file cartesian.hpp.
Referenced by siderust::cartesian::Position< C, F, U >::to_c().
|
inlinestatic |
Create from C FFI struct (ignoring runtime frame/center - trust the type).
Definition at line 334 of file cartesian.hpp.
References siderust::cartesian::Position< C, F, U >::Position(), and siderust::cartesian::Position< C, F, U >::to_frame().
Referenced by siderust::ephemeris::earth_barycentric(), siderust::RuntimeEphemeris::earth_barycentric(), siderust::ephemeris::earth_heliocentric(), siderust::RuntimeEphemeris::earth_heliocentric(), siderust::ephemeris::jupiter_barycentric(), siderust::ephemeris::jupiter_heliocentric(), siderust::ephemeris::mars_barycentric(), siderust::ephemeris::mars_heliocentric(), siderust::ephemeris::mercury_barycentric(), siderust::ephemeris::mercury_heliocentric(), siderust::ephemeris::moon_geocentric(), siderust::RuntimeEphemeris::moon_geocentric(), siderust::ephemeris::neptune_barycentric(), siderust::ephemeris::neptune_heliocentric(), siderust::ephemeris::saturn_barycentric(), siderust::ephemeris::saturn_heliocentric(), siderust::ephemeris::sun_barycentric(), siderust::RuntimeEphemeris::sun_barycentric(), siderust::Geodetic::to_cartesian(), siderust::ephemeris::uranus_barycentric(), siderust::ephemeris::uranus_heliocentric(), siderust::ephemeris::venus_barycentric(), and siderust::ephemeris::venus_heliocentric().
|
inline |
Magnitude of the position vector (alias for distance()).
Definition at line 477 of file cartesian.hpp.
References siderust::cartesian::Position< C, F, U >::distance().
|
inline |
Translate a position by a displacement.
Returns a new Position offset by the displacement vector.
Definition at line 459 of file cartesian.hpp.
References siderust::cartesian::Position< C, F, U >::comp_x, siderust::cartesian::Position< C, F, U >::comp_y, siderust::cartesian::Position< C, F, U >::comp_z, siderust::cartesian::Position< C, F, U >::Position(), and siderust::cartesian::Position< C, F, U >::to_frame().
|
inline |
Translate a position backwards by a displacement.
Returns a new Position offset by the negated displacement vector.
Definition at line 469 of file cartesian.hpp.
References siderust::cartesian::Position< C, F, U >::comp_x, siderust::cartesian::Position< C, F, U >::comp_y, siderust::cartesian::Position< C, F, U >::comp_z, siderust::cartesian::Position< C, F, U >::Position(), and siderust::cartesian::Position< C, F, U >::to_frame().
|
inline |
Subtract two positions in the same center/frame/unit.
Returns a Displacement representing the vector from other to this. This is the only valid Position-Position operation in affine geometry.
Definition at line 448 of file cartesian.hpp.
References siderust::cartesian::Position< C, F, U >::comp_x, siderust::cartesian::Position< C, F, U >::comp_y, siderust::cartesian::Position< C, F, U >::comp_z, and siderust::cartesian::Position< C, F, U >::to_frame().
|
inline |
Shorthand: .to<Target>(jd) (calls to_frame).
Definition at line 383 of file cartesian.hpp.
References siderust::cartesian::Position< C, F, U >::to_frame().
|
inline |
Convert to C FFI struct.
Definition at line 329 of file cartesian.hpp.
References siderust::cartesian::Position< C, F, U >::center_id(), siderust::cartesian::Position< C, F, U >::comp_x, siderust::cartesian::Position< C, F, U >::comp_y, siderust::cartesian::Position< C, F, U >::comp_z, and siderust::cartesian::Position< C, F, U >::frame_id().
Referenced by siderust::to_bodycentric(), siderust::cartesian::Position< C, F, U >::to_center(), siderust::cartesian::Position< C, F, U >::to_frame(), and siderust::cartesian::Position< C, F, U >::to_frame_with().
|
inline |
Transform this position to a different reference center (same frame).
The FFI center-shift uses VSOP87 ephemeris vectors expressed in EclipticMeanJ2000. When the position is already in that frame the FFI call is made directly; otherwise the position is first rotated to ecliptic, shifted, and rotated back so the result is frame-correct.
| TargetC | Destination center tag. |
| jd | Julian Date (TT) for the ephemeris evaluation. |
Definition at line 401 of file cartesian.hpp.
References siderust::check_status(), siderust::cartesian::Position< C, F, U >::to_c(), and siderust::cartesian::Position< C, F, U >::to_frame().
|
inline |
Transform this position to a different reference frame (same center).
Only a pure rotation is applied; the reference center is unchanged. Only enabled when a FrameRotationProvider exists for the pair (F, Target).
| Target | Destination frame tag. |
| jd | Julian Date (TT) for time-dependent rotations. |
Definition at line 349 of file cartesian.hpp.
References siderust::check_status(), siderust::cartesian::Position< C, F, U >::to_c(), and siderust::cartesian::Position< C, F, U >::to_frame().
Referenced by siderust::cartesian::Position< C, F, U >::distance(), siderust::cartesian::Position< C, F, U >::distance_to(), siderust::cartesian::Position< C, F, U >::from_c(), siderust::cartesian::Position< C, F, U >::operator+(), siderust::cartesian::Position< C, F, U >::operator-(), siderust::cartesian::Position< C, F, U >::operator-(), siderust::cartesian::Position< C, F, U >::to(), siderust::cartesian::Position< C, F, U >::to_center(), siderust::cartesian::Position< C, F, U >::to_frame(), siderust::cartesian::Position< C, F, U >::to_frame_with(), and siderust::cartesian::Position< C, F, U >::transform().
| std::enable_if_t< siderust::frames::has_frame_transform_v< F, Target >, siderust::spherical::Position< C, Target, U > > siderust::cartesian::Position< C, F, U >::to_frame | ( | const Time< TT, JD > & | jd | ) | const |
Definition at line 62 of file pos_conversions.hpp.
|
inline |
Transform this position with an explicit astronomical context.
Definition at line 366 of file cartesian.hpp.
References siderust::check_status(), siderust::cartesian::Position< C, F, U >::to_c(), and siderust::cartesian::Position< C, F, U >::to_frame().
| std::enable_if_t< siderust::frames::has_frame_transform_v< F, Target >, siderust::spherical::Position< C, Target, U > > siderust::cartesian::Position< C, F, U >::to_frame_with | ( | const Time< TT, JD > & | jd, |
| const AstroContext & | ctx | ||
| ) | const |
Definition at line 74 of file pos_conversions.hpp.
| spherical::Position< C, F, U > siderust::cartesian::Position< C, F, U >::to_spherical | ( | ) | const |
Convert this cartesian position to a spherical Position<C,F,U>.
Definition at line 17 of file pos_conversions.hpp.
References siderust::constants::pi.
|
inline |
Combined frame + center transform in one call.
Routes through EclipticMeanJ2000 for the center shift so that VSOP87 ephemeris vectors are applied in the correct frame:
| TargetC | Destination center tag. |
| TargetF | Destination frame tag. |
| jd | Julian Date (TT). |
Definition at line 436 of file cartesian.hpp.
References siderust::cartesian::Position< C, F, U >::to_frame().
|
inline |
Definition at line 300 of file cartesian.hpp.
References siderust::cartesian::Position< C, F, U >::comp_x.
Referenced by siderust::cartesian::operator<<().
|
inline |
Definition at line 301 of file cartesian.hpp.
References siderust::cartesian::Position< C, F, U >::comp_y.
Referenced by siderust::cartesian::operator<<().
|
inline |
Definition at line 302 of file cartesian.hpp.
References siderust::cartesian::Position< C, F, U >::comp_z.
Referenced by siderust::cartesian::operator<<().
X component.
Definition at line 290 of file cartesian.hpp.
Referenced by siderust::cartesian::Position< C, F, U >::distance(), siderust::cartesian::Position< C, F, U >::distance_to(), siderust::cartesian::Position< C, F, U >::operator+(), siderust::cartesian::Position< C, F, U >::operator-(), siderust::cartesian::Position< C, F, U >::operator-(), siderust::cartesian::Position< C, F, U >::to_c(), and siderust::cartesian::Position< C, F, U >::x().
Y component.
Definition at line 291 of file cartesian.hpp.
Referenced by siderust::cartesian::Position< C, F, U >::distance(), siderust::cartesian::Position< C, F, U >::distance_to(), siderust::cartesian::Position< C, F, U >::operator+(), siderust::cartesian::Position< C, F, U >::operator-(), siderust::cartesian::Position< C, F, U >::operator-(), siderust::cartesian::Position< C, F, U >::to_c(), and siderust::cartesian::Position< C, F, U >::y().
Z component.
Definition at line 292 of file cartesian.hpp.
Referenced by siderust::cartesian::Position< C, F, U >::distance(), siderust::cartesian::Position< C, F, U >::distance_to(), siderust::cartesian::Position< C, F, U >::operator+(), siderust::cartesian::Position< C, F, U >::operator-(), siderust::cartesian::Position< C, F, U >::operator-(), siderust::cartesian::Position< C, F, U >::to_c(), and siderust::cartesian::Position< C, F, U >::z().