pub struct ClosedOrbit {
base_orbit: OrbitBase,
period: (I32F32, I32F32, I32F32),
max_image_dt: I32F32,
done: BitBox<usize, Lsb0>,
segments: Vec<OrbitSegment>,
}Expand description
Represents a closed orbit with a fixed period, image time information, and completion status.
Fields§
§base_orbit: OrbitBaseThe base configuration and parameters of the orbit.
period: (I32F32, I32F32, I32F32)The period of the orbit defined as a tuple:
- First element represents the total orbit time.
- Second and third element represent the x/y-period respectively.
max_image_dt: I32F32Maximum time interval between images that ensures proper coverage of the orbit.
done: BitBox<usize, Lsb0>A bitvector indicating the completion status of orbit segments.
segments: Vec<OrbitSegment>A vector containing all of the orbits segments.
Implementations§
Source§impl ClosedOrbit
impl ClosedOrbit
Sourceconst EXPORT_ORBIT_ENV: &'static str = "EXPORT_ORBIT"
const EXPORT_ORBIT_ENV: &'static str = "EXPORT_ORBIT"
ENV Var marking that the orbit configuration should be exported
Sourceconst TRY_IMPORT_ENV: &'static str = "TRY_IMPORT_ORBIT"
const TRY_IMPORT_ENV: &'static str = "TRY_IMPORT_ORBIT"
ENV Var marking that it should be tried to import the orbit configuration
Sourceconst DEF_FILEPATH: &'static str = "orbit.bin"
const DEF_FILEPATH: &'static str = "orbit.bin"
File were the orbit should be serialized to/deserialized from
Sourcepub fn new(
base_orbit: OrbitBase,
lens: CameraAngle,
) -> Result<Self, OrbitUsabilityError>
pub fn new( base_orbit: OrbitBase, lens: CameraAngle, ) -> Result<Self, OrbitUsabilityError>
Creates a new ClosedOrbit instance using a given OrbitBase and CameraAngle.
§Arguments
try_orbit: The base orbit to initialize the closed orbit.lens: The camera lens angle used to determine image overlaps.
§Returns
Ok(ClosedOrbit)if the orbit is closed and sufficient overlap exists.Err(OrbitUsabilityError)if the orbit doesn’t meet the requirements.
Sourcepub fn clear_done(&mut self)
pub fn clear_done(&mut self)
Clears all completion tracking for the orbit.
Sourcepub fn try_from_env() -> Option<Self>
pub fn try_from_env() -> Option<Self>
Tries to import a previously serialized orbit if environment variable TRY_IMPORT_ORBIT=1.
Sourcepub fn try_export_default(&self)
pub fn try_export_default(&self)
Tries to export the current orbit to disk if EXPORT_ORBIT=1 is set in the environment.
Sourcefn import_from(filename: &'static str) -> Result<Self, Error>
fn import_from(filename: &'static str) -> Result<Self, Error>
Deserializes a saved orbit from disk.
Sourcefn export_to(&self, filename: &'static str) -> Result<(), EncodeError>
fn export_to(&self, filename: &'static str) -> Result<(), EncodeError>
Serializes the orbit to a given file path using fixed-size encoding.
Sourcefn get_serde_config() -> Configuration<LittleEndian, Fixint>
fn get_serde_config() -> Configuration<LittleEndian, Fixint>
Returns a bincode serialization config with little-endian fixed-width layout.
Sourcefn compute_segments(
base_point: &Vec2D<I32F32>,
vel: &Vec2D<I32F32>,
) -> Vec<OrbitSegment>
fn compute_segments( base_point: &Vec2D<I32F32>, vel: &Vec2D<I32F32>, ) -> Vec<OrbitSegment>
Computes all forward-wrapped orbit segments.
Sourcepub fn get_p_t_reordered(
&self,
shift_start: usize,
shift_end: usize,
) -> Box<dyn Iterator<Item = BitRef<'_>> + '_>
pub fn get_p_t_reordered( &self, shift_start: usize, shift_end: usize, ) -> Box<dyn Iterator<Item = BitRef<'_>> + '_>
Returns an iterator that reorders the done bitvector sequence based on a specified shift.
§Arguments
shift_start: The starting index of the reordering shift.shift_end: The ending index of the reordering shift.
§Returns
- An iterator over the reordered
donebitvector segment.
§Panics
- If
shift_startorshift_endexceed the length of the bitvector.
Sourcepub fn mark_done(&mut self, first_i: usize, last_i: usize)
pub fn mark_done(&mut self, first_i: usize, last_i: usize)
Marks a specified range of orbit segments as completed in the done bitvector.
§Arguments
first_i: The first index of the range to mark as completed.last_i: The last index of the range to mark as completed.
pub fn get_closest_deviation(&self, pos: Vec2D<I32F32>) -> (VecAxis, I32F32)
Sourcepub fn max_image_dt(&self) -> I32F32
pub fn max_image_dt(&self) -> I32F32
Returns the maximum image time interval for the orbit.
§Returns
I32F32representing the maximum imaging time interval.
Sourcepub fn base_orbit_ref(&self) -> &OrbitBase
pub fn base_orbit_ref(&self) -> &OrbitBase
Returns a reference to the base orbit configuration.
§Returns
- A reference to the associated
OrbitBase.
Sourcepub fn period(&self) -> (I32F32, I32F32, I32F32)
pub fn period(&self) -> (I32F32, I32F32, I32F32)
Returns the period tuple of the closed orbit.
§Returns
- A tuple
(I32F32, I32F32, I32F32)representing the orbit’s period.
Sourcepub fn will_visit(&self, pos: Vec2D<I32F32>) -> bool
pub fn will_visit(&self, pos: Vec2D<I32F32>) -> bool
Sourcepub fn get_i(&self, pos: Vec2D<I32F32>) -> Option<usize>
pub fn get_i(&self, pos: Vec2D<I32F32>) -> Option<usize>
Returns the done-vector index corresponding to the current position, if on the orbit.
Sourcepub(super) fn segments(&self) -> &Vec<OrbitSegment>
pub(super) fn segments(&self) -> &Vec<OrbitSegment>
Returns a reference to all orbit segments.
Sourcepub fn get_coverage(&self) -> I32F32
pub fn get_coverage(&self) -> I32F32
Calculates the coverage from the done - bitmap
Trait Implementations§
Source§impl Debug for ClosedOrbit
impl Debug for ClosedOrbit
Source§impl<'de> Deserialize<'de> for ClosedOrbit
impl<'de> Deserialize<'de> for ClosedOrbit
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for ClosedOrbit
impl RefUnwindSafe for ClosedOrbit
impl Send for ClosedOrbit
impl Sync for ClosedOrbit
impl Unpin for ClosedOrbit
impl UnwindSafe for ClosedOrbit
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> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§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 moreSource§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
Source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
Source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
Source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.