1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
new Float:g_HSV = 145.0; // HSV Farbe festlegen (0-360°)
// Funktion aufrufen:
new Float:flRed, Float:flGreen, Float:flBlue;
HSVtoRGB(g_HSV, 1.0, 1.0, flRed, flGreen, flBlue );
PrintHintTextToAll ("Debug: %i -->> r=%i g=%i b=%i", RoundFloat(g_HSV), RoundFloat(flRed*255.0), RoundFloat(flGreen*255.0), RoundFloat(flBlue*255.0));
// Funktion:
HSVtoRGB(&Float:h, Float:s, Float:v, &Float:r, &Float:g, &Float:b){
if (s == 0)
{
r = v; g = v; b = v;
} else {
new Float:fHue, Float:fValue, Float:fSaturation;
new Float:f; new Float:p,Float:q,Float:t;
if (h == 360.0) h = 0.0;
fHue = h / 60.0;
new i = RoundToFloor(fHue);
f = fHue - i;
fValue = v;
fSaturation = s;
p = fValue * (1.0 - fSaturation);
q = fValue * (1.0 - (fSaturation * f));
t = fValue * (1.0 - (fSaturation * (1.0 - f)));
switch (i)
{
case 1:
{
r = q; g = fValue; b = p;
}
case 2:
{
r = p; g = fValue; b = t;
}
case 3:
{
r = p; g = q; b = fValue;
}
case 4:
{
r = t; g = p; b = fValue;
}
case 5:
{
r = fValue; g = p; b = q;
}
default:
{
r = fValue; g = t; b = p;
}
}
}
}
|