1 ! Copyright (C) 2007 Eduardo Cavazos
2 ! See http://factorcode.org/license.txt for BSD license.
4 USING: kernel combinators arrays sequences math math.functions ;
10 : H ( hsv -- H ) first ;
12 : S ( hsv -- S ) second ;
14 : V ( hsv -- V ) third ;
16 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
18 : Hi ( hsv -- Hi ) H 60 / floor 6 mod ;
20 : f ( hsv -- f ) [ H 60 / ] [ Hi ] bi - ;
22 : p ( hsv -- p ) [ S 1 swap - ] [ V ] bi * ;
24 : q ( hsv -- q ) [ [ f ] [ S ] bi * 1 swap - ] [ V ] bi * ;
26 : t ( hsv -- t ) [ [ f 1 swap - ] [ S ] bi * 1 swap - ] [ V ] bi * ;
34 : hsv>rgb ( hsv -- rgb )
36 { { 0 [ [ V ] [ t ] [ p ] tri ] }
37 { 1 [ [ q ] [ V ] [ p ] tri ] }
38 { 2 [ [ p ] [ V ] [ t ] tri ] }
39 { 3 [ [ p ] [ q ] [ V ] tri ] }
40 { 4 [ [ t ] [ p ] [ V ] tri ] }
41 { 5 [ [ V ] [ p ] [ q ] tri ] } } case 3array ;