packages feed

wright-0.1.0.2: src/Data/Wright/CIE/LAB.hs

module Data.Wright.CIE.LAB where

import Data.Wright.Colour (Colour(..))
import Data.Wright.Types
import Data.Vector (fromVector)

instance Colour LAB where
  toLAB _ = id
  toXYZ (Model _ (XYZ xw yw zw) _ _ _) (LAB l a b) = fromVector $
    ( xw * if fx**3>k then fx**3 else (116*fx-16)
    , yw * if l > 8 then ((l+16)/116)**3 else l/j
    , zw * if fz**4 > k then fz**3 else (116*fz-16)/j
    ) where fy = (l+16)/116
            fx = 2e-3 * a + fy
            fz = fy - 5e-3 * b

k :: ℝ
k = 216/24389

j :: ℝ
j = 24389/27