Struct Aberration
pub struct Aberration {
pub converged: bool,
pub stellar: bool,
pub transmit_mode: bool,
}Expand description
Represents the aberration correction options in ANISE.
In space science and engineering, accurately pointing instruments (like optical cameras or radio antennas) at a target is crucial. This task is complicated by the finite speed of light, necessitating corrections for the apparent position of the target.
This structure holds parameters for aberration corrections applied to a target’s position or state vector. These corrections account for the difference between the target’s geometric (true) position and its apparent position as observed.
§Rule of tumb
In most Earth orbits, one does not need to provide any aberration corrections. Light time to the target is less than one second (the Moon is about one second away). In near Earth orbits, e.g. inner solar system, preliminary analysis can benefit from enabling unconverged light time correction. Stellar aberration is probably not required. For deep space missions, preliminary analysis would likely require both light time correction and stellar aberration. Mission planning and operations will definitely need converged light-time calculations.
For more details, https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/req/abcorr.html.
§SPICE Validation
The validation test validate_jplde_de440s_aberration_lt checks 101,000 pairs of ephemeris computations and shows that the unconverged Light Time computation matches the SPICE computations almost all the time.
More specifically, the 99th percentile of error is less than 5 meters, the 75th percentile is less than one meter, and the median error is less than 2 millimeters.
:type name: str :rtype: Aberration
Fields§
§converged: boolIndicates whether the light time calculations should be iterated upon (more precise but three times as many CPU cycles).
stellar: boolFlag to denote if stellar aberration correction is applied. Stellar aberration is due to the motion of the observer (caused by Earth’s orbit around the Sun).
transmit_mode: boolSpecifies whether in reception or transmission mode. True for ‘transmit’ mode, indicating the correction is applied to the transmitted signal from the observer to the target. False for ‘receive’ mode, for signals received from the target.
Implementations§
§impl Aberration
impl Aberration
pub const NONE: Option<Aberration> = None
pub const NONE: Option<Aberration> = None
Disables aberration corrections, e.g. all translations are geometric only (typical use case).
pub const LT: Option<Aberration>
pub const LT: Option<Aberration>
Unconverged light time correction in reception mode without stellar aberration (e.g. a ground station targeting a spacecraft near the Moon)
pub const LT_S: Option<Aberration>
pub const LT_S: Option<Aberration>
Unconverged light time correction in reception mode with stellar aberration
pub const CN: Option<Aberration>
pub const CN: Option<Aberration>
Converged light time correction in reception mode without stellar aberration
pub const CN_S: Option<Aberration>
pub const CN_S: Option<Aberration>
Converged light time correction in reception mode with stellar aberration
pub const XLT: Option<Aberration>
pub const XLT: Option<Aberration>
Unconverged light time correction in transmission mode without stellar aberration (e.g. a Moon orbiter contacting a ground station)
pub const XLT_S: Option<Aberration>
pub const XLT_S: Option<Aberration>
Unconverged light time correction in transmission mode with stellar aberration
pub const XCN: Option<Aberration>
pub const XCN: Option<Aberration>
Converged light time correction in transmission mode without stellar aberration
pub const XCN_S: Option<Aberration>
pub const XCN_S: Option<Aberration>
Converged light time correction in transmission mode with stellar aberration
pub fn new(flag: &str) -> Result<Option<Aberration>, PhysicsError>
pub fn new(flag: &str) -> Result<Option<Aberration>, PhysicsError>
Initializes a new Aberration structure from one of the following (SPICE compatibility):
NONE: No correctionLT: unconverged light time, no stellar aberration, reception modeLT+S: unconverged light time, with stellar aberration, reception modeCN: converged light time, no stellar aberration, reception modeCN+S: converged light time, with stellar aberration, reception modeXLT: unconverged light time, no stellar aberration, transmission modeXLT+S: unconverged light time, with stellar aberration, transmission modeXCN: converged light time, no stellar aberration, transmission modeXCN+S: converged light time, with stellar aberration, transmission mode
Trait Implementations§
§impl Clone for Aberration
impl Clone for Aberration
§fn clone(&self) -> Aberration
fn clone(&self) -> Aberration
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for Aberration
impl Debug for Aberration
§impl Default for Aberration
impl Default for Aberration
§fn default() -> Aberration
fn default() -> Aberration
§impl<'de> Deserialize<'de> for Aberration
impl<'de> Deserialize<'de> for Aberration
§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Aberration, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Aberration, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
§impl Display for Aberration
impl Display for Aberration
§impl PartialEq for Aberration
impl PartialEq for Aberration
§impl Serialize for Aberration
impl Serialize for Aberration
§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl Copy for Aberration
impl Eq for Aberration
impl StructuralPartialEq for Aberration
Auto Trait Implementations§
impl Freeze for Aberration
impl RefUnwindSafe for Aberration
impl Send for Aberration
impl Sync for Aberration
impl Unpin for Aberration
impl UnwindSafe for Aberration
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,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FromDhall for Twhere
T: DeserializeOwned,
impl<T> FromDhall for Twhere
T: DeserializeOwned,
fn from_dhall(v: &Value) -> Result<T, Error>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§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).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.