source: subversion/applications/rendering/tah-heatmap/heatmap-rgb-value.pl @ 15441

Revision 15441, 1.0 KB checked in by avar, 5 years ago (diff)

A script to generate a 4096x4096 heatmap image of the globe based on t@h tile sizes

Line 
1#!/usr/bin/env perl
2use feature ':5.10';
3use strict;
4use warnings;
5
6my ($arg, $max) = @ARGV;
7if (-f $arg) {
8    open my $fh, "<", $arg or die "Can't open file `$arg': $!";
9    while (<$fh>)
10    {
11        chomp;
12        say rgb_str($max ? ($_ / $max) : $_);
13    }
14} else {
15    say rgb_str($max ? ($_ / $max) : $_);
16}
17
18sub rgb_str
19{
20    "rgb(" . join(',', heatmap(shift)) . ")";
21}
22
23# From http://google.com/codesearch/p?hl=en#v85D9_xn8lk/viewcvs.py/gmod/graphbrowse/cgi/graphbrowse%3Frev%3D1.10&q=heat map rgb lang:perl
24sub heatmap {
25    my($v)=@_;
26
27    die "Heatmap input out of range: $v" if $v < 0 || $v > 1;
28
29    my @rgb;
30
31    for my $offset (-0.25,0,0.25) {
32        my $x = $v + $offset;
33        my $y;
34        if ($x <= .125) {
35            $y = 0;
36        } elsif ($x <= .375) {
37            $y = ($x-.125)/.25;
38        } elsif ($x <= .625) {
39            $y = 1;
40        } elsif ($x <= .875) {
41            $y = (.875 - $x )/.25;
42        } else {
43            $y = 0;
44        }
45        push @rgb => $y * 255;
46    }
47    map { int } @rgb;
48}
Note: See TracBrowser for help on using the repository browser.