pub struct DragTable {
pub mach_values: Vec<f64>,
pub cd_values: Vec<f64>,
}Expand description
Drag table data structure
Fields§
§mach_values: Vec<f64>§cd_values: Vec<f64>Implementations§
Source§impl DragTable
impl DragTable
Sourcepub fn new(mach_values: Vec<f64>, cd_values: Vec<f64>) -> Self
pub fn new(mach_values: Vec<f64>, cd_values: Vec<f64>) -> Self
Create a new drag table from mach and cd arrays
Sourcepub fn try_new(
mach_values: Vec<f64>,
cd_values: Vec<f64>,
) -> Result<Self, String>
pub fn try_new( mach_values: Vec<f64>, cd_values: Vec<f64>, ) -> Result<Self, String>
Validated constructor for user-supplied drag decks. Enforces: equal-length axes, at least 2 points, strictly-ascending finite non-negative Mach, and finite positive Cd. Returns a descriptive, 1-based-row error string on failure (never panics).
Sourcepub fn from_csv_str(csv: &str) -> Result<Self, String>
pub fn from_csv_str(csv: &str) -> Result<Self, String>
Parse a user drag deck from CSV text: two columns mach,cd per line. Blank lines and
lines starting with # are ignored; a single leading header row is skipped once, but only
when its first column is not itself a valid number (e.g. mach,cd) — a first row whose
first column does parse as a float (e.g. 0.5 or 0.5,O.2) is data, not a header, so a
missing/invalid second column there is a hard error, not a silent skip. Any unparseable
row is a hard error citing its 1-based line number. Values are validated via try_new.
Sourcepub fn from_file(path: impl AsRef<Path>) -> Result<Self, String>
pub fn from_file(path: impl AsRef<Path>) -> Result<Self, String>
Load and validate a user drag deck from a CSV file path.
Sourcepub fn interpolate(&self, mach: f64) -> f64
pub fn interpolate(&self, mach: f64) -> f64
Interpolate drag coefficient for a Mach number, holding the nearest tabulated endpoint outside the table’s measured domain.
Sourcepub fn linear_interpolate(&self, mach: f64, idx: usize) -> f64
pub fn linear_interpolate(&self, mach: f64, idx: usize) -> f64
Linear interpolation between two points
Sourcepub fn cubic_interpolate(&self, mach: f64, idx: usize) -> f64
pub fn cubic_interpolate(&self, mach: f64, idx: usize) -> f64
Cubic Hermite interpolation using four points and centered chord-slope tangents.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for DragTable
impl RefUnwindSafe for DragTable
impl Send for DragTable
impl Sync for DragTable
impl Unpin for DragTable
impl UnsafeUnpin for DragTable
impl UnwindSafe for DragTable
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.