pub struct VisibilityAnalysis<'a, O: Origin, R: ReferenceFrame, E> { /* private fields */ }Expand description
Computes ground-station-to-spacecraft and inter-satellite visibility.
Generic over origin O, reference frame R, and ephemeris E.
Ground-to-space pairs are always computed when ground assets are present.
Inter-satellite pairs are additionally computed when enabled via
with_inter_satellite.
Trajectories are looked up from a pre-computed Ensemble by asset id.
Implementations§
Source§impl<'a, O, R, E> VisibilityAnalysis<'a, O, R, E>where
O: TrySpheroid + TryMeanRadius + Copy + Send + Sync + Into<DynOrigin>,
R: ReferenceFrame + Copy + Send + Sync + Into<DynFrame>,
E: Ephemeris + Send + Sync,
E::Error: 'static,
DefaultRotationProvider: TryRotation<R, DynFrame, Tai> + TryRotation<DynFrame, R, Tai>,
<DefaultRotationProvider as TryRotation<R, DynFrame, Tai>>::Error: Error + Send + Sync + 'static,
<DefaultRotationProvider as TryRotation<DynFrame, R, Tai>>::Error: Error + Send + Sync + 'static,
impl<'a, O, R, E> VisibilityAnalysis<'a, O, R, E>where
O: TrySpheroid + TryMeanRadius + Copy + Send + Sync + Into<DynOrigin>,
R: ReferenceFrame + Copy + Send + Sync + Into<DynFrame>,
E: Ephemeris + Send + Sync,
E::Error: 'static,
DefaultRotationProvider: TryRotation<R, DynFrame, Tai> + TryRotation<DynFrame, R, Tai>,
<DefaultRotationProvider as TryRotation<R, DynFrame, Tai>>::Error: Error + Send + Sync + 'static,
<DefaultRotationProvider as TryRotation<DynFrame, R, Tai>>::Error: Error + Send + Sync + 'static,
Sourcepub fn new(
scenario: &'a Scenario<O, R>,
ensemble: &'a Ensemble<AssetId, Tai, O, R>,
ephemeris: &'a E,
) -> Self
pub fn new( scenario: &'a Scenario<O, R>, ensemble: &'a Ensemble<AssetId, Tai, O, R>, ephemeris: &'a E, ) -> Self
Creates a new visibility analysis for the given scenario, ensemble, and ephemeris.
Sourcepub fn with_inter_satellite(self) -> Self
pub fn with_inter_satellite(self) -> Self
Enables inter-satellite visibility computation.
Sourcepub fn with_occulting_bodies(self, bodies: Vec<DynOrigin>) -> Self
pub fn with_occulting_bodies(self, bodies: Vec<DynOrigin>) -> Self
Sets bodies that may occlude the line of sight.
Sourcepub fn with_step(self, step: TimeDelta) -> Self
pub fn with_step(self, step: TimeDelta) -> Self
Sets the time step for event detection sampling.
Sourcepub fn with_min_pass_duration(self, min_pass_duration: TimeDelta) -> Self
pub fn with_min_pass_duration(self, min_pass_duration: TimeDelta) -> Self
Sets the minimum pass duration; shorter passes will be discarded.
Sourcepub fn with_min_range(self, min_range: Distance) -> Self
pub fn with_min_range(self, min_range: Distance) -> Self
Sets the minimum range filter for inter-satellite links.
Sourcepub fn with_max_range(self, max_range: Distance) -> Self
pub fn with_max_range(self, max_range: Distance) -> Self
Sets the maximum range filter for inter-satellite links.
Sourcepub fn compute(&self) -> Result<VisibilityResults, VisibilityError>
pub fn compute(&self) -> Result<VisibilityResults, VisibilityError>
Compute visibility intervals for all pairs.
Sourcepub fn to_passes(
&self,
results: &VisibilityResults,
) -> HashMap<(AssetId, AssetId), Vec<DynPass>>
pub fn to_passes( &self, results: &VisibilityResults, ) -> HashMap<(AssetId, AssetId), Vec<DynPass>>
Convert all ground-space intervals in a VisibilityResults to passes.
Inter-satellite pairs are skipped since passes with ground-station observables are not meaningful for them.
Auto Trait Implementations§
impl<'a, O, R, E> Freeze for VisibilityAnalysis<'a, O, R, E>
impl<'a, O, R, E> RefUnwindSafe for VisibilityAnalysis<'a, O, R, E>
impl<'a, O, R, E> Send for VisibilityAnalysis<'a, O, R, E>
impl<'a, O, R, E> Sync for VisibilityAnalysis<'a, O, R, E>
impl<'a, O, R, E> Unpin for VisibilityAnalysis<'a, O, R, E>
impl<'a, O, R, E> UnsafeUnpin for VisibilityAnalysis<'a, O, R, E>
impl<'a, O, R, E> UnwindSafe for VisibilityAnalysis<'a, O, R, E>
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> 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
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.