pub struct BcSegmentV1 {
pub velocity_min_mps: f64,
pub velocity_max_mps: f64,
pub ballistic_coefficient: f64,
}Expand description
One band of a ProjectileV1::bc_segments ladder: the BC that flies while the bullet’s
airspeed lies in [velocity_min_mps, velocity_max_mps).
- Band BCs are in lb/in², referenced to the same curve as the scalar
ballistic_coefficient(projectile.drag_model, or a reference-kindprojectile.drag_table), and held to the same bounds. - Bands are selected by airspeed: the bullet’s speed relative to the air mass, not over the ground.
- The array runs from the fastest band to the slowest.
velocity_min_mpsstrictly descends, and each band ends at or below the start of the band before it: touching edges and gaps are legal, overlaps are not. The order is only a validation rule; the lookup itself does not depend on it. - A ladder holds
MIN_BC_SEGMENTS_V1toMAX_BC_SEGMENTS_V1bands. - In an interior gap between two bands the scalar
ballistic_coefficientflies. Below the lowest band, or at or above the highest, the nearest edge band applies, so under a gapless ladder the scalar never flies. - A one-band ladder flies its band’s BC at every speed, so that BC must match the scalar
ballistic_coefficientto withinONE_BAND_BC_RELATIVE_TOLERANCE_V1; the band’s edges then change nothing. - Every interior band-to-band edge and every gap edge is blended with a smoothstep across
a narrow window centred on it, so the integrator never sees the drag jump in one step
(
velocity_segment_bcinsrc/bc_estimation.rs).
Fields§
§velocity_min_mps: f64Lower edge of the band, m/s, inclusive. Finite and >= 0.
velocity_max_mps: f64Upper edge of the band, m/s, exclusive. Finite and > velocity_min_mps; there is no
upper bound.
ballistic_coefficient: f64This band’s BC, lb/in² against the same curve as the scalar ballistic_coefficient
(projectile.drag_model, or a reference-kind projectile.drag_table). Same bounds as
the scalar.
Trait Implementations§
Source§impl Clone for BcSegmentV1
impl Clone for BcSegmentV1
impl Copy for BcSegmentV1
Source§impl Debug for BcSegmentV1
impl Debug for BcSegmentV1
Source§impl<'de> Deserialize<'de> for BcSegmentV1
impl<'de> Deserialize<'de> for BcSegmentV1
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>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl PartialEq for BcSegmentV1
impl PartialEq for BcSegmentV1
Source§impl Serialize for BcSegmentV1
impl Serialize for BcSegmentV1
impl StructuralPartialEq for BcSegmentV1
Auto Trait Implementations§
impl Freeze for BcSegmentV1
impl RefUnwindSafe for BcSegmentV1
impl Send for BcSegmentV1
impl Sync for BcSegmentV1
impl Unpin for BcSegmentV1
impl UnsafeUnpin for BcSegmentV1
impl UnwindSafe for BcSegmentV1
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<T> Scalar 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>
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.