pub struct WindTruingRequest {Show 15 fields
pub observations: Vec<WindObservation>,
pub muzzle_velocity_fps: f64,
pub bc: f64,
pub drag_model: DragModelArg,
pub mass_gr: f64,
pub diameter_in: f64,
pub zero_distance_yd: f64,
pub sight_height_in: f64,
pub temperature_f: f64,
pub pressure_inhg: f64,
pub humidity_pct: f64,
pub altitude_ft: f64,
pub twist: TruingTwist,
pub earth: Option<TruingEarthFrame>,
pub called_crosswind_mph: Option<f64>,
}Expand description
Everything the wind fit needs: the observed misses plus the load, rifle, atmosphere and the opt-in earth frame (MBA-1392).
Imperial units for the load/atmosphere fields, matching the truing core’s historical internal convention; the observations themselves are SI. Unlike the drop-based truing commands this carries a KNOWN muzzle velocity — wind is the unknown being fitted, so velocity is an input, not an output.
Fields§
§observations: Vec<WindObservation>One or more observed horizontal misses. Ranges must be distinct.
muzzle_velocity_fps: f64Known muzzle velocity, feet/second (true up first with true-velocity if unsure).
bc: f64Scalar ballistic coefficient for drag_model.
drag_model: DragModelArg§mass_gr: f64Bullet mass in grains.
diameter_in: f64Bullet diameter in inches.
zero_distance_yd: f64Zero distance in yards.
sight_height_in: f64Sight height over bore in inches.
temperature_f: f64Ambient temperature in degrees Fahrenheit.
pressure_inhg: f64Station pressure in inches of mercury.
humidity_pct: f64Relative humidity in percent (0 through 100).
altitude_ft: f64Altitude in feet.
twist: TruingTwistBarrel twist. REQUIRED: spin drift is a lateral effect of the same order as a light wind at long range, so without it the fit would silently report spin drift as wind.
earth: Option<TruingEarthFrame>Latitude + shot azimuth. None leaves Coriolis unmodelled and absorbed into the
solved wind (the report names it as unsubtracted).
called_crosswind_mph: Option<f64>The wind the shooter CALLED, mph, in the same signed convention as the solved
value. Some adds a wind-call correction factor (solved / called) to the report.
Implementations§
Source§impl WindTruingRequest
impl WindTruingRequest
Sourcepub fn validate(&self) -> Result<(), String>
pub fn validate(&self) -> Result<(), String>
Validate the whole request before any (expensive) trajectory work begins.
Mirrors crate::truing::TruingModelInputsV1::validate plus the observation-set
rules from crate::truing::validate_truing_observations: finite positive ranges,
finite misses, no duplicate ranges. Sigmas are all-or-none — a half-weighted set
would silently mix an inverse-variance mean with unit weights.
Trait Implementations§
Source§impl Clone for WindTruingRequest
impl Clone for WindTruingRequest
Source§fn clone(&self) -> WindTruingRequest
fn clone(&self) -> WindTruingRequest
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for WindTruingRequest
impl Debug for WindTruingRequest
Source§impl<'de> Deserialize<'de> for WindTruingRequest
impl<'de> Deserialize<'de> for WindTruingRequest
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 WindTruingRequest
impl RefUnwindSafe for WindTruingRequest
impl Send for WindTruingRequest
impl Sync for WindTruingRequest
impl Unpin for WindTruingRequest
impl UnwindSafe for WindTruingRequest
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.