WIP
This commit is contained in:
parent
572116ba4a
commit
2948a9ea5d
7 changed files with 83 additions and 7 deletions
47
hsb.nim
Normal file
47
hsb.nim
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
import math, colors
|
||||
|
||||
proc hsbToRgb*(h:float64, s:float64, v:float64): Color =
|
||||
var
|
||||
H = h
|
||||
R = 0'f64
|
||||
G = 0'f64
|
||||
B = 0'f64
|
||||
|
||||
while H < 0'f64:
|
||||
H = H + 360'f64
|
||||
while H >= 360'f64:
|
||||
H = H - 360'f64
|
||||
|
||||
if v <= 0'f64:
|
||||
R = 0'f64
|
||||
G = 0'f64
|
||||
B = 0'f64
|
||||
elif s <= 0'f64:
|
||||
R = v
|
||||
G = v
|
||||
B = v
|
||||
else:
|
||||
let
|
||||
hf = H / 60'f64
|
||||
i = int(floor(hf))
|
||||
f = hf - float64(i)
|
||||
pv = v * (1'f64 - s)
|
||||
qv = v * (1'f64 - s * f)
|
||||
tv = v * (1'f64 - (1'f64 - f))
|
||||
|
||||
case i:
|
||||
of 0:
|
||||
R = v; G = tv; B = pv
|
||||
of 1: R = qv; G = v; B = pv
|
||||
of 2: R = pv; G = v; B = tv
|
||||
of 3: R = pv; G = qv; B = v
|
||||
of 4: R = tv; G = pv; B = v
|
||||
of 5: R = v; G = pv; B = qv
|
||||
of 6: R = v; G = tv; B = pv
|
||||
of -1: R = v; G = pv; B = qv
|
||||
else:
|
||||
R = v; G = v; B = v
|
||||
|
||||
result = rgb(clamp(int(R*255), 0, 255),
|
||||
clamp(int(G*255), 0, 255),
|
||||
clamp(int(B*255), 0, 255))
|
||||
Loading…
Add table
Add a link
Reference in a new issue