Skip to main content

RailForces

Struct RailForces 

Source
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§

Source§

impl<F> RailForces<F>

Source

pub fn new( inner: F, origin_m: Vec3, direction: Vec3, length_m: f64, ) -> Result<Self>

Build a rail. direction is normalized at construction and must be nonzero and finite; length_m must be finite and positive.

Trait Implementations§

Source§

impl<F: Clone> Clone for RailForces<F>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<F: Debug> Debug for RailForces<F>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<F: ForceModel> ForceModel for RailForces<F>

Source§

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>

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

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

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.