pub struct EarthOrientation { /* private fields */ }Expand description
A single evaluated Earth-orientation state for one epoch.
The stored direction-cosine matrix maps GCRF/GCRS inertial coordinates to ITRF/ITRS Earth-fixed coordinates using the existing IAU 2006/2000A precession-nutation chain, apparent sidereal rotation, and optional polar motion. The inverse matrix is cached as the transpose so callers can evaluate the frame once and reuse it across many satellite states.
Implementations§
Source§impl EarthOrientation
impl EarthOrientation
Sourcepub fn from_time_scales(ts: &TimeScales) -> Result<Self, FrameTransformError>
pub fn from_time_scales(ts: &TimeScales) -> Result<Self, FrameTransformError>
Evaluate the full GCRF to ITRF rotation with zero polar motion.
Sourcepub fn from_time_scales_with_polar_motion(
ts: &TimeScales,
polar_motion: PolarMotion,
) -> Result<Self, FrameTransformError>
pub fn from_time_scales_with_polar_motion( ts: &TimeScales, polar_motion: PolarMotion, ) -> Result<Self, FrameTransformError>
Evaluate the full GCRF to ITRF rotation with caller-supplied polar motion.
Sourcepub fn from_utc(
year: i32,
month: i32,
day: i32,
hour: i32,
minute: i32,
second: f64,
) -> Result<Self, FrameTransformError>
pub fn from_utc( year: i32, month: i32, day: i32, hour: i32, minute: i32, second: f64, ) -> Result<Self, FrameTransformError>
Evaluate the full GCRF to ITRF rotation from UTC calendar fields with zero polar motion.
Sourcepub fn from_utc_with_polar_motion(
year: i32,
month: i32,
day: i32,
hour: i32,
minute: i32,
second: f64,
polar_motion: PolarMotion,
) -> Result<Self, FrameTransformError>
pub fn from_utc_with_polar_motion( year: i32, month: i32, day: i32, hour: i32, minute: i32, second: f64, polar_motion: PolarMotion, ) -> Result<Self, FrameTransformError>
Evaluate the full GCRF to ITRF rotation from UTC calendar fields with caller-supplied polar motion.
Sourcepub fn from_instant(epoch: Instant) -> Result<Self, FrameTransformError>
pub fn from_instant(epoch: Instant) -> Result<Self, FrameTransformError>
Evaluate the full GCRF to ITRF rotation from a scale-tagged instant with zero polar motion.
Sourcepub fn from_instant_with_polar_motion(
epoch: Instant,
polar_motion: PolarMotion,
) -> Result<Self, FrameTransformError>
pub fn from_instant_with_polar_motion( epoch: Instant, polar_motion: PolarMotion, ) -> Result<Self, FrameTransformError>
Evaluate the full GCRF to ITRF rotation from a scale-tagged instant with caller-supplied polar motion.
Sourcepub fn time_scales(&self) -> TimeScales
pub fn time_scales(&self) -> TimeScales
Time scales used to evaluate this orientation.
Sourcepub fn polar_motion(&self) -> PolarMotion
pub fn polar_motion(&self) -> PolarMotion
Polar-motion coordinates used to evaluate this orientation.
Sourcepub fn earth_rotation_vector_itrf_rad_s(&self) -> [f64; 3]
pub fn earth_rotation_vector_itrf_rad_s(&self) -> [f64; 3]
Earth rotation vector in ITRF axes, radians per second.
Sourcepub fn gcrf_to_itrf_matrix(&self) -> Mat3
pub fn gcrf_to_itrf_matrix(&self) -> Mat3
GCRF to ITRF direction-cosine matrix.
Sourcepub fn itrf_to_gcrf_matrix(&self) -> Mat3
pub fn itrf_to_gcrf_matrix(&self) -> Mat3
ITRF to GCRF direction-cosine matrix.
Sourcepub fn gcrf_to_itrf_rotation_rate_matrix(&self) -> Mat3
pub fn gcrf_to_itrf_rotation_rate_matrix(&self) -> Mat3
Time derivative of the GCRF to ITRF matrix from Earth rotation, with precession, nutation, and polar motion frozen at this evaluation point.
Sourcepub fn itrf_to_gcrf_rotation_rate_matrix(&self) -> Mat3
pub fn itrf_to_gcrf_rotation_rate_matrix(&self) -> Mat3
Time derivative of the ITRF to GCRF matrix from Earth rotation, with precession, nutation, and polar motion frozen at this evaluation point.
Sourcepub fn gcrf_to_itrf_position_km(
&self,
position_gcrf_km: [f64; 3],
) -> Result<[f64; 3], FrameTransformError>
pub fn gcrf_to_itrf_position_km( &self, position_gcrf_km: [f64; 3], ) -> Result<[f64; 3], FrameTransformError>
Rotate a GCRF position vector in kilometers into ITRF.
Sourcepub fn itrf_to_gcrf_position_km(
&self,
position_itrf_km: [f64; 3],
) -> Result<[f64; 3], FrameTransformError>
pub fn itrf_to_gcrf_position_km( &self, position_itrf_km: [f64; 3], ) -> Result<[f64; 3], FrameTransformError>
Rotate an ITRF position vector in kilometers into GCRF.
Sourcepub fn gcrf_to_itrf_state_km(
&self,
position_gcrf_km: [f64; 3],
velocity_gcrf_km_s: [f64; 3],
) -> Result<([f64; 3], [f64; 3]), FrameTransformError>
pub fn gcrf_to_itrf_state_km( &self, position_gcrf_km: [f64; 3], velocity_gcrf_km_s: [f64; 3], ) -> Result<([f64; 3], [f64; 3]), FrameTransformError>
Transform a GCRF state in kilometers and kilometers per second into ITRF.
The velocity includes the rotating-frame term
v_itrf = R v_gcrf - omega_itrf x r_itrf.
Sourcepub fn itrf_to_gcrf_state_km(
&self,
position_itrf_km: [f64; 3],
velocity_itrf_km_s: [f64; 3],
) -> Result<([f64; 3], [f64; 3]), FrameTransformError>
pub fn itrf_to_gcrf_state_km( &self, position_itrf_km: [f64; 3], velocity_itrf_km_s: [f64; 3], ) -> Result<([f64; 3], [f64; 3]), FrameTransformError>
Transform an ITRF state in kilometers and kilometers per second into GCRF.
The velocity includes the inertial transport term
v_gcrf = R^T (v_itrf + omega_itrf x r_itrf).
Trait Implementations§
Source§impl Clone for EarthOrientation
impl Clone for EarthOrientation
Source§fn clone(&self) -> EarthOrientation
fn clone(&self) -> EarthOrientation
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for EarthOrientation
Source§impl Debug for EarthOrientation
impl Debug for EarthOrientation
Source§impl PartialEq for EarthOrientation
impl PartialEq for EarthOrientation
Source§fn eq(&self, other: &EarthOrientation) -> bool
fn eq(&self, other: &EarthOrientation) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for EarthOrientation
Auto Trait Implementations§
impl Freeze for EarthOrientation
impl RefUnwindSafe for EarthOrientation
impl Send for EarthOrientation
impl Sync for EarthOrientation
impl Unpin for EarthOrientation
impl UnsafeUnpin for EarthOrientation
impl UnwindSafe for EarthOrientation
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Scalar for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.