pub struct ClusterBCDegradation;Implementations§
Source§impl ClusterBCDegradation
impl ClusterBCDegradation
pub fn new() -> Self
Sourcepub fn predict_cluster(&self, caliber: f64, weight_gr: f64, bc_g1: f64) -> usize
pub fn predict_cluster(&self, caliber: f64, weight_gr: f64, bc_g1: f64) -> usize
Predict which cluster a bullet belongs to.
Rule-based classifier ported verbatim from the Python reference
predict_cluster. caliber must be in INCHES (the sectional-density and
form-factor thresholds are inch-referenced); passing meters misclassifies.
Sourcepub fn predict_cluster_for_drag_model(
&self,
caliber: f64,
weight_gr: f64,
bc: f64,
drag_model: DragModel,
) -> usize
pub fn predict_cluster_for_drag_model( &self, caliber: f64, weight_gr: f64, bc: f64, drag_model: DragModel, ) -> usize
Predict a cluster from a BC expressed in its active reference-model space.
The legacy classifier is G1-keyed. G7 values are converted to the same approximate G1 space used by the Python source of truth before applying those unchanged gates. Other drag models retain the legacy behavior.
Sourcepub fn get_bc_multiplier(&self, velocity_fps: f64, cluster_id: usize) -> f64
pub fn get_bc_multiplier(&self, velocity_fps: f64, cluster_id: usize) -> f64
Get the BC multiplier for a given velocity and cluster.
Mirrors the Python reference: iterate the cluster’s bands (descending
threshold); at the first band whose threshold <= velocity, return the
band multiplier if it is the top band, otherwise linearly interpolate
between it and the band above. Below the lowest threshold, return the last
band’s multiplier. Unknown clusters fall back to cluster 0 (matching Python,
which coerces an unknown id to the standard profile — NOT to 1.0).
Sourcepub fn get_cluster_name(&self, cluster_id: usize) -> &'static str
pub fn get_cluster_name(&self, cluster_id: usize) -> &'static str
Get cluster name for display
Sourcepub fn apply_correction(
&self,
bc: f64,
caliber: f64,
weight_gr: f64,
velocity_fps: f64,
) -> f64
pub fn apply_correction( &self, bc: f64, caliber: f64, weight_gr: f64, velocity_fps: f64, ) -> f64
Legacy G1 entry point retained for API compatibility.
The active multiplier ladder is G7-referenced, so G1 correction is intentionally
an identity. Use Self::apply_correction_for_drag_model with DragModel::G7
to apply the calibrated ladder.
Sourcepub fn apply_correction_for_drag_model(
&self,
bc: f64,
caliber: f64,
weight_gr: f64,
velocity_fps: f64,
drag_model: DragModel,
) -> f64
pub fn apply_correction_for_drag_model( &self, bc: f64, caliber: f64, weight_gr: f64, velocity_fps: f64, drag_model: DragModel, ) -> f64
Apply cluster-based BC correction when the BC is in G7 reference-model space.
The velocity ladders are G7-derived ratios and are not physically valid for G1/G2/etc.; non-G7 inputs are returned byte-identically unchanged (MBA-1179). For G7, the classifier’s thresholds are G1-keyed, so the BC is converted to an approximate G1 equivalent for classification only; the selected multiplier still scales the original G7 value.
Trait Implementations§
Source§impl Clone for ClusterBCDegradation
impl Clone for ClusterBCDegradation
Source§fn clone(&self) -> ClusterBCDegradation
fn clone(&self) -> ClusterBCDegradation
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for ClusterBCDegradation
Source§impl Debug for ClusterBCDegradation
impl Debug for ClusterBCDegradation
Source§impl Default for ClusterBCDegradation
impl Default for ClusterBCDegradation
Source§fn default() -> ClusterBCDegradation
fn default() -> ClusterBCDegradation
Auto Trait Implementations§
impl Freeze for ClusterBCDegradation
impl RefUnwindSafe for ClusterBCDegradation
impl Send for ClusterBCDegradation
impl Sync for ClusterBCDegradation
impl Unpin for ClusterBCDegradation
impl UnsafeUnpin for ClusterBCDegradation
impl UnwindSafe for ClusterBCDegradation
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,
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>
self from the equivalent element of its
superset. Read moreSource§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).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.