2
proc lerpcolor { col1 col2 alpha } {
3
set dc [vecsub $col2 $col1]
4
set nc [vecadd $col1 [vecscale $dc $alpha]]
9
foreach {r g b} $col {}
10
set gray [expr ($r + $g + $b) / 3.0]
11
return [list $gray $gray $gray]
14
proc jet_tricolor_scale {} {
16
set mincolorid [expr [colorinfo num] - 1]
17
set maxcolorid [expr [colorinfo max] - 1]
18
set colrange [expr $maxcolorid - $mincolorid]
19
set colhalf [expr $colrange / 2]
20
for {set i $mincolorid} {$i < $maxcolorid} {incr i} {
21
set colpcnt [expr ($i - $mincolorid) / double($colrange)]
23
# The following color definitions for "jet" sort-of came from:
24
#http://stackoverflow.com/questions/7706339/grayscale-to-red-green-blue-matlab-jet-color-scale
25
# but it was missing "green", so I inserted a green somewhere in the middle.
28
set color0 { 0.08 0.0 0.77 }
31
set color1 { 0.0 0.0 1.0 }
34
set color2 { 0.0 1.0 1.0 }
37
set color3 { 0.0 1.0 0.78 }
40
set color4 { 0.0 1.0 0.0 }
43
set color5 { 0.875 1.0 0.0 }
46
set color6 { 1.0 1.0 0.0 }
49
set color7 { 1.0 0.25 0.0 }
52
set color8 { 1.0 0.0 0.0 }
55
set color9 { 0.93 0.0 0.0 }
57
if { $colpcnt < 0.19 } {
58
set nc [lerpcolor $color0 $color1 [expr $colpcnt/(0.19-0.0)]]
59
} elseif { $colpcnt < 0.34 } {
60
set nc [lerpcolor $color1 $color2 [expr ($colpcnt-0.19)/(0.34-0.19)]]
61
} elseif { $colpcnt < 0.4001 } {
62
set nc [lerpcolor $color2 $color3 [expr ($colpcnt-0.34)/(0.4001-0.34)]]
63
} elseif { $colpcnt < 0.445 } {
64
set nc [lerpcolor $color2 $color3 [expr ($colpcnt-0.4001)/(0.445-0.4001)]]
65
} elseif { $colpcnt < 0.535 } {
66
set nc [lerpcolor $color3 $color4 [expr ($colpcnt-0.445)/(0.535-0.445)]]
67
} elseif { $colpcnt < 0.69 } {
68
set nc [lerpcolor $color4 $color5 [expr ($colpcnt-0.535)/(0.69-0.535)]]
69
} elseif { $colpcnt < 0.73} {
70
set nc [lerpcolor $color5 $color6 [expr ($colpcnt-0.69)/(0.73-0.69)]]
71
} elseif { $colpcnt < 0.755} {
72
set nc [lerpcolor $color6 $color7 [expr ($colpcnt-0.73)/(0.755-0.73)]]
74
set nc [lerpcolor $color7 $color8 [expr ($colpcnt-0.755)/(1.0-0.755)]]
77
# set nc [coltogs $nc]
78
foreach {r g b} $nc {}
79
puts "index: $i $r $g $b -- $colpcnt"
81
color change rgb $i $r $g $b