public static Color ColorFromHSV(float hue, float saturation, float value)
{
int hi = (int)(hue / 60) % 6;
float f = hue / 60 - (int)(hue / 60);
var v = value;
var p = value * (1 - saturation);
var q = value * (1 - f * saturation);
var t = value * (1 - (1 - f) * saturation);
if (hi == 0) return new Color(v, t, p);
if (hi == 1) return new Color(q, v, p);
if (hi == 2) return new Color(p, v, t);
if (hi == 3) return new Color(p, q, v);
if (hi == 4) return new Color(t, p, v);
return new Color(v, p, q);
}