public static function rgbToHsb(Space\Rgb $rgb)
{
// Calculate the hue.
$r = $rgb->getRed();
$g = $rgb->getGreen();
$b = $rgb->getBlue();
$min = min($r, min($g, $b));
$max = max($r, max($g, $b));
$delta = $max - $min;
$h = 0;
if ($delta > 0) {
if ($max == $r && $max != $g) {
$h += ($g - $b) / $delta;
}
if ($max == $g && $max != $b) {
$h += 2 + ($b - $r) / $delta;
}
if ($max == $b && $max != $r) {
$h += 4 + ($r - $g) / $delta;
}
$h /= 6;
}
// Calculate the saturation and brightness.
$r = $rgb->getRed() / 255;
$g = $rgb->getGreen() / 255;
$b = $rgb->getBlue() / 255;
$max = max($r, $g, $b);
$min = min($r, $g, $b);
$b = $max;
$d = $max - $min;
$s = $d == 0 ? 0 : $d / $max;
return new Space\Hsb(round($h * 360), round($s * 100), round($b * 100));
}