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.
Fields§
§converged: bool
Indicates whether the light time calculations should be iterated upon (more precise but three times as many CPU cycles).
stellar: bool
Flag 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: bool
Specifies 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 Display for Aberration
impl Display for Aberration
§impl PartialEq for Aberration
impl PartialEq for Aberration
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,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§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.§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<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.