rgb2hsv

BlitzMax Forums/BlitzMax Programming/rgb2hsv

Try this:
Function RGBtoHSV(r:Float,g:Float,b:Float,h:Float Var,s:Float Var,v:Float Var)
Local mmin:Float=Min(r, Min(g, b))
Local mmax:Float=Max(r, Max(g, b))

v=mmax

Local delta:Float=mmax-mmin

If mmax<>0
s=delta/mmax
Else
s=0
h=-1
Return
EndIf

If r=mmax
h=(g-b)/delta
ElseIf g=mmax
h=2+(b-r)/delta
Else
h=4+(r-g)/delta
EndIf

h=h*60
If h<0 Then h=h+360

DebugLog "--------------------------------"
DebugLog h+" "+s+" "+v


End Function

Local h:Float
Local s:Float
Local v:Float

RGBtoHSV 1, 0, 0,h,s,v
RGBtoHSV 1, 1, 0,h,s,v
RGBtoHSV 0, 1, 0,h,s,v
RGBtoHSV 0, 1, 1,h,s,v
RGBtoHSV 0, 0, 1,h,s,v ' <- blue
RGBtoHSV 1, 0, 1,h,s,v

DebugLog Chr(10)

RGBtoHSV 1,.2,.1,h,s,v
RGBtoHSV .5,.5, 0,h,s,v
RGBtoHSV .1, 1,.2,h,s,v
RGBtoHSV 0,.5,.5,h,s,v
RGBtoHSV .2,.1, 1,h,s,v ' <- blue'ish
RGBtoHSV .5, 0,.5,h,s,v

End