use qtty::length::LengthUnit;
use qtty::Quantity;
use super::{ConicKind, ConicValidationError};
#[inline]
pub(super) fn classify_eccentricity_unchecked(eccentricity: f64) -> ConicKind {
if eccentricity < 1.0 {
ConicKind::Elliptic
} else if eccentricity > 1.0 {
ConicKind::Hyperbolic
} else {
ConicKind::Parabolic
}
}
pub(super) fn validate_eccentricity(eccentricity: f64) -> Result<(), ConicValidationError> {
if !eccentricity.is_finite() || eccentricity < 0.0 {
return Err(ConicValidationError::InvalidEccentricity);
}
Ok(())
}
pub(super) fn validate_positive_length<U: LengthUnit>(
value: Quantity<U>,
error: ConicValidationError,
) -> Result<(), ConicValidationError> {
if !value.is_finite() || value <= Quantity::new(0.0) {
return Err(error);
}
Ok(())
}