All pastes #261374 Raw Edit

Mine

public text v1 · immutable
#261374 ·published 2006-11-29 04:42 UTC
rendered paste body
sub rgb_to_hsv {
    my ($r, $g, $b) =  shift @_;
    my $max = 0;
    my $min = 255;

    for ($r, $g, $b) { $max = $_ if $max < $_ }
    for ($r, $g, $b) { $min = $_ if $min > $_ }

    my ($h, $s, $v);

    #H
    if ($max == $min) {
	$h = undef;
    }
    elsif (($max == $r) && ($g >= $b)) {
	$h = 60 * (($g-$b)/($max-$min)) + 0;
    }
    elsif (($max== $r) && ($g < $b)) {
	$h = 60 * (($g-$b)/($max-$min)) + 360;
    }
    elsif ($max == $g) {
	$h = 60 * (($b-$r)/($max-$min)) + 120;
    }
    elsif ($max == $b) {
	$h = 60 * (($r-$g)/($max-$min)) + 240;
    }
    
    #S
    if ($max == 0) {
	$s = 0;
    }
    else {
	$s = 1 - ($min / $max)
    }

    #V
    $v = $max;

    return ($h, $s, $v);
}