pub struct RailForces<F> { /* private fields */ }Expand description
Launch-rail constraint: a force-model wrapper that projects environmental acceleration onto the rail direction while the vehicle is on the rail.
The rail is a segment starting at origin_m and running length_m along
direction. If the initial velocity is zero or along the rail, motion stays
exactly on the rail because every acceleration is collinear with it. After
rail exit the inner model passes through unchanged. Command the thrust axis
along the rail and no steering until exit; pair with
crate::ballistics::BallisticForces::with_tipoff_yaw for the exit disturbance.
Implementations§
Trait Implementations§
Source§impl<F: Clone> Clone for RailForces<F>
impl<F: Clone> Clone for RailForces<F>
Source§impl<F: Debug> Debug for RailForces<F>
impl<F: Debug> Debug for RailForces<F>
Source§impl<F: ForceModel> ForceModel for RailForces<F>
impl<F: ForceModel> ForceModel for RailForces<F>
Source§fn acceleration(&self, state: &FlightState, mass_kg: f64) -> Result<Vec3>
fn acceleration(&self, state: &FlightState, mass_kg: f64) -> Result<Vec3>
Acceleration in world-frame metres per second squared.
Source§fn acceleration_with_axis(
&self,
state: &FlightState,
mass_kg: f64,
body_axis: Vec3,
) -> Result<Vec3>
fn acceleration_with_axis( &self, state: &FlightState, mass_kg: f64, body_axis: Vec3, ) -> Result<Vec3>
Acceleration when the commanded body axis is known, for angle-of-attack-aware
models (body lift, induced drag).
body_axis is the solver-resolved unit
thrust axis at this stage. The default ignores the axis, which keeps every
orientation-blind model (gravity, plain drag) bit-identical.Auto Trait Implementations§
impl<F> Freeze for RailForces<F>where
F: Freeze,
impl<F> RefUnwindSafe for RailForces<F>where
F: RefUnwindSafe,
impl<F> Send for RailForces<F>where
F: Send,
impl<F> Sync for RailForces<F>where
F: Sync,
impl<F> Unpin for RailForces<F>where
F: Unpin,
impl<F> UnsafeUnpin for RailForces<F>where
F: UnsafeUnpin,
impl<F> UnwindSafe for RailForces<F>where
F: UnwindSafe,
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
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
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.