/
githubmirror
/
cmssw
Обзор
Документация
Войти
/
githubmirror
/
cmssw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Utilities/ReleaseScripts/ignominy/graysearch
95 строк
2 KB
Giulio Eulisse
Snapshot of CMSSW_6_2_0_pre8.
26 июн 2013, 18:12
26 июн 2013, 18:12
214ab73
Код
Авторство
О чём код?
#!/usr/bin/env perl use warnings; sub min { my $min = shift; foreach my $val (@_) { $min = $min > $val ? $val : $min; } return $min; } sub max { my $max = shift; foreach my $val (@_) { $max = $max > $val ? $max : $val; } return $max; } sub rgb2hsv { my ($r, $g, $b) = @_; my ($h, $s, $v); my $max = &max($r, $g, $b); my $min = &min($r, $g, $b); $v = $max; $s = ($max ? ($max - $min)/$max : 0.0); if (! $s) { $h = 0; } else { my $d = $max - $min; if ($r == $max) { $h = 0. + ($g - $b)/$d; } elsif ($g == $max) { $h = 2. + ($b - $r)/$d; } elsif ($b == $max) { $h = 4. + ($r - $g)/$d; } $h /= 6.; $h += 1. if ($h < 0.); } $h = int($h * 1000 + .5)/1000; $s = int($s * 1000 + .5)/1000; $v = int($v * 1000 + .5)/1000; return ($h, $s, $v); } sub rgb2yiq { my ($r, $g, $b) = @_; return (.299 * $r + .587 * $g + .115 * $b, .596 * $r - .275 * $g - .321 * $b, .212 * $r - .523 * $g + .311 * $b); } sub hsv2rgb { my ($h, $s, $v) = @_; if ($s eq 0.) { # die "bad HSV H value: $h -- should be 0\n" if $h; return ($v, $v, $v); } else { $h = 0. if $h eq 1.; $h *= 6.; my $i = int($h); my $f = $h - $i; my $p = $v * (1. - $s); my $q = $v * (1. - $s * $f); my $t = $v * (1. - $s * (1. - $f)); return ($v, $t, $p) if $i == 0; return ($q, $v, $p) if $i == 1; return ($p, $v, $t) if $i == 2; return ($p, $q, $v) if $i == 3; return ($t, $p, $v) if $i == 4; return ($v, $p, $q) if $i == 5; die; } } my $step = .1; my %yvals; for (my $h = 0.; $h <= 1.; $h += $step) { for (my $s = 0.; $s <= 1.; $s += $step) { for (my $v = 0.; $v < 1.; $v += $step) { my $y = int(10 * (&rgb2yiq(&hsv2rgb($h, $s, $v)))[0] + .5); $yvals{$y} ||= []; push(@{$yvals{$y}}, [ $h, $s, $v ]); } } } foreach my $val (sort { $a <=> $b } keys %yvals) { print "$val:\n", map { " HSV: " . join("/", @{$_}) . "\n" } @{$yvals{$val}}; }