diff --git a/crates/comet_colors/src/laba.rs b/crates/comet_colors/src/laba.rs index c8d05a6..13dd601 100644 --- a/crates/comet_colors/src/laba.rs +++ b/crates/comet_colors/src/laba.rs @@ -58,11 +58,11 @@ impl Laba { } pub fn to_lcha(&self) -> Lcha { - let atan: f32 = self.b.atan2(self.a); + let hue: f32 = self.b.atan2(self.a).to_degrees(); Lcha::new( self.lightness, (self.a*self.a + self.b*self.b).sqrt(), - if atan >= 0.0 { atan } else { atan + 360.0 }, + if hue < 0.0 { hue + 360.0 } else { hue }, self.alpha ) } diff --git a/crates/comet_colors/src/oklaba.rs b/crates/comet_colors/src/oklaba.rs index 67baeeb..5d150d4 100644 --- a/crates/comet_colors/src/oklaba.rs +++ b/crates/comet_colors/src/oklaba.rs @@ -78,10 +78,11 @@ impl Oklaba { } pub fn to_oklcha(&self) -> Oklcha { + let hue = self.b.atan2(self.a).to_degrees(); Oklcha::new( self.lightness, (self.a*self.a + self.b*self.b).sqrt(), - self.b.atan2(self.a), + if hue >= 0.0 { hue } else { hue + 360.0 }, self.alpha ) } diff --git a/crates/comet_colors/src/oklcha.rs b/crates/comet_colors/src/oklcha.rs index 6db6693..4388c7c 100644 --- a/crates/comet_colors/src/oklcha.rs +++ b/crates/comet_colors/src/oklcha.rs @@ -10,6 +10,7 @@ pub struct Oklcha { impl Oklcha { pub fn new(lightness: f32, chroma: f32, hue: f32, alpha: f32) -> Self { + println!("lightness: {}, chroma: {}, hue: {}, alpha: {}", lightness, chroma, hue, alpha); assert!((0.0..=1.0).contains(&lightness) && (0.0..=1.0).contains(&chroma) && (0.0..=360.0).contains(&hue) && (0.0..=1.0).contains(&alpha), "Ligthness needs to be in range 0..1\nChroma needs to be in range 0..1\nHue needs to be in range 0..360\nAlpha needs to be in range 0..1"); Self { lightness, @@ -36,10 +37,11 @@ impl Oklcha { } pub fn from_oklaba(oklaba: Oklaba) -> Self { + let hue = oklaba.b().atan2(oklaba.a()).to_degrees(); Self { lightness: oklaba.lightness(), - chroma: (oklaba.a()*oklaba.a() + oklaba.b()*oklaba.b()).sqrt(), - hue: oklaba.b().atan2(oklaba.a()), + chroma: (oklaba.a() * oklaba.a() + oklaba.b() * oklaba.b()).sqrt(), + hue: if hue >= 0.0 { hue } else { hue + 360.0 }, alpha: oklaba.alpha() } }