(in-package :om) (defmethod* rgb->hue ((color oa::omcolor)) (let* ((r (oa::om-color-r color)) (g (oa::om-color-g color)) (b (oa::om-color-b color)) (rgb (list r g b)) (min (list-min rgb)) (max (list-max rgb)) (pos (car (member-pos max rgb))) (hue (cond ((= pos 0) (* 60 (/ (- g b) (- max min)))) ((= pos 1) (* 60 (/ (+ 2.0 (- b r)) (- max min)))) (t (* 60 (/ (+ 4.0 (- r g)) (- max min))))))) (if (minusp hue) (+ 360 hue) hue) )) ;(rgb->hue (om-make-color 0.5 0.8 0.3))