public static function hsbToRgb(Space\Hsb $hsb)
{
$s = $hsb->getSaturation() / 100;
$v = $hsb->getBrightness() / 100;
if ($hsb->getSaturation() == 0) {
$r = round($v * 255);
$g = round($v * 255);
$b = round($v * 255);
} else {
$h = $hsb->getHue() / 360;
$h = $h * 6;
if ($h == 6) {
$h = 0;
}
$i = floor($h);
$var1 = $v * (1 - $s);
$var2 = $v * (1 - $s * ($h - $i));
$var3 = $v * (1 - $s * (1 - ($h - $i)));
switch ($i) {
case 0:
$r = $v;
$g = $var3;
$b = $var1;
break;
case 1:
$r = $var2;
$g = $v;
$b = $var1;
break;
case 2:
$r = $var1;
$g = $v;
$b = $var3;
break;
case 3:
$r = $var1;
$g = $v;
$b = $var3;
break;
case 4:
$r = $var3;
$g = $var1;
$b = $v;
break;
default:
$r = $v;
$g = $var1;
$b = $var2;
}
$r = round($r * 255);
$g = round($g * 255);
$b = round($b * 255);
}
return new Space\Rgb($r, $g, $b);
}