Skip to main content

BallisticForces

Struct BallisticForces 

Source
pub struct BallisticForces { /* private fields */ }
Expand description

Gravity and aerodynamic drag delegated to ballistics-engine’s force kernel.

Implementations§

Source§

impl BallisticForces

Source

pub fn new( diameter_m: f64, cd_vs_mach: Vec<(f64, f64)>, atmosphere: Atmosphere, wind_mps: Vec3, ) -> Result<Self>

Build using the vehicle’s actual Cd curve, not a G-model reference curve or BC. At least two ascending, nonnegative Mach values and positive Cd values are required. Wind is a world-frame air velocity vector (positive X is a tailwind).

Source

pub fn with_drag_scale(self, scale: f64) -> Result<Self>

Apply a positive multiplier to the entire Cd curve. Default is 1.0.

Source

pub fn set_wind(&mut self, wind_mps: Vec3) -> Result<()>

Change uniform world-frame wind between public integration steps.

Source

pub fn with_spin( self, twist_rate_in: f64, body_length_m: f64, right_hand: bool, ) -> Result<Self>

Modified point-mass spin: enable the kernel’s Magnus force and yaw of repose for a spinning body. twist_rate_in is the effective twist in inches per turn — rifling language upstream; for a fin-canted rocket it is the roll rate the cant produces per unit velocity. body_length_m is the full airframe length (the stability correlations need it; Self::new only knows the diameter). right_hand selects the roll direction.

The correlations are McCoy bullet shapes, so treat magnitudes as approximate for blunt or finned bodies; signs and scaling are physical.

Source

pub fn with_coriolis( self, latitude_deg: f64, shot_azimuth_deg: f64, ) -> Result<Self>

Modified point-mass Coriolis deflection, for planet-scale arcs. latitude_deg is the launch latitude in [-90, 90]; shot_azimuth_deg is the compass bearing fired along, 0 = north, 90 = east. Do not combine with an inertial-frame crate::CentralGravity model: Coriolis is the rotating-frame term and would double-count Earth rotation.

Source

pub fn with_tipoff_yaw( self, yaw_rad: f64, decay_distance_m: f64, ) -> Result<Self>

Launch tip-off: an initial yaw in radians that decays exponentially with downrange distance over decay_distance_m. Models the rail/launcher disturbance; it perturbs the effective angle of attack early in flight.

Source

pub fn acceleration_in_wind( &self, state: &FlightState, mass_kg: f64, wind_mps: Vec3, ) -> Result<Vec3>

Evaluate using externally sampled wind, for a spatial or time-varying force wrapper.

Trait Implementations§

Source§

impl Clone for BallisticForces

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 Debug for BallisticForces

Source§

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

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

impl ForceModel for BallisticForces

Source§

fn acceleration(&self, state: &FlightState, mass_kg: f64) -> Result<Vec3>

Acceleration in world-frame metres per second squared.

Auto Trait Implementations§

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.