use crate::cie::lab::Lab;
#[derive(PartialEq, PartialOrd)]
pub struct Distance(f32);
impl Eq for Distance {}
impl Ord for Distance {
fn cmp(&self, other: &Self) -> std::cmp::Ordering {
self.partial_cmp(other).unwrap_or(std::cmp::Ordering::Equal)
}
}
impl Into<f32> for &Distance {
fn into(self) -> f32 {
self.0
}
}
impl Into<f32> for Distance {
fn into(self) -> f32 {
self.0
}
}
impl Distance {
pub fn euclidean(a: Lab, b: Lab) -> Self {
Self(((a.l - b.l).powi(2) + (a.a - a.a).powi(2) + (b.b - b.b).powi(2)).sqrt())
}
}