private function convertHSVtoRGB(float $hue, float $saturation, float $value): string
    {
        // First
        $hue *= 6;

        // Second
        $i = floor($hue);
        $f = ($hue - $i);

        // Third
        $m = ($value * (1 - $saturation));
        $n = ($value * (1 - $saturation * $f));
        $k = ($value * (1 - $saturation * (1 - $f)));

        // Forth
        switch ($i) {
            case 0:
                list($red, $green, $blue) = array($value, $k, $m);
                break;
            case 1:
                list($red, $green, $blue) = array($n, $value, $m);
                break;
            case 2:
                list($red, $green, $blue) = array($m, $value, $k);
                break;
            case 3:
                list($red, $green, $blue) = array($m, $n, $value);
                break;
            case 4:
                list($red, $green, $blue) = array($k, $m, $value);
                break;
            case 5:
            case 6:
                // for when $H=1 is given
            default:
                list($red, $green, $blue) = array($value, $m, $n);
                break;
        }

        return sprintf('#%02x%02x%02x', ($red * 255), ($green * 255), ($blue * 255));
    }