ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/px/falsecolor.csh
Revision: 2.3
Committed: Fri Aug 21 15:46:11 1992 UTC (31 years, 8 months ago) by greg
Content type: application/x-csh
Branch: MAIN
Changes since 2.2: +25 -4 lines
Log Message:
added -e option for printing extrema on image

File Contents

# Content
1 #!/bin/csh -f
2 # SCCSid "$SunId$ LBL"
3 #
4 # Create false color image with legend
5 #
6 set td=/usr/tmp/fc$$
7 onintr quit
8 set mult=179
9 set label=Nits
10 set scale=1000
11 set decades=0
12 set redv='1.6*v-.6'
13 set grnv='if(v-.375,1.6-1.6*v,8/3*v)'
14 set bluv='1-8/3*v'
15 set ndivs=8
16 set picture='-'
17 set cpict=
18 set legwidth=100
19 set legheight=200
20 while ($#argv > 0)
21 switch ($argv[1])
22 case -m:
23 shift argv
24 set mult="$argv[1]"
25 breaksw
26 case -s:
27 shift argv
28 set scale="$argv[1]"
29 breaksw
30 case -l:
31 shift argv
32 set label="$argv[1]"
33 breaksw
34 case -log:
35 shift argv
36 set decades=$argv[1]
37 breaksw
38 case -r:
39 shift argv
40 set redv="$argv[1]"
41 breaksw
42 case -g:
43 shift argv
44 set grnv="$argv[1]"
45 breaksw
46 case -b:
47 shift argv
48 set bluv="$argv[1]"
49 breaksw
50 case -i:
51 shift argv
52 set picture="$argv[1]"
53 breaksw
54 case -p:
55 shift argv
56 set cpict="$argv[1]"
57 breaksw
58 case -ip:
59 case -pi:
60 shift argv
61 set picture="$argv[1]"
62 set cpict="$argv[1]"
63 breaksw
64 case -cl:
65 set docont=a
66 breaksw
67 case -cb:
68 set docont=b
69 breaksw
70 case -e:
71 set doextrem
72 set needfile
73 breaksw
74 case -n:
75 shift argv
76 set ndivs="$argv[1]"
77 breaksw
78 default:
79 echo bad option "'$argv[1]'" >/dev/tty
80 exit 1
81 endsw
82 shift argv
83 end
84 mkdir $td
85 cat > $td/pc0.cal <<_EOF_
86 PI : 3.14159265358979323846 ;
87 scale : $scale ;
88 mult : $mult ;
89 ndivs : $ndivs ;
90
91 or(a,b) : if(a,a,b);
92 EPS : 1e-7;
93 neq(a,b) : if(a-b-EPS,1,b-a-EPS);
94 btwn(a,x,b) : if(a-x,-1,b-x);
95 clip(x) : if(x-1,1,if(x,x,0));
96 frac(x) : x - floor(x);
97 boundary(a,b) : neq(floor(ndivs*a+.5),floor(ndivs*b+.5));
98
99 isconta = if(btwn(0,v,1),or(boundary(vleft,vright),boundary(vabove,vbelow)),-1);
100 iscontb = if(btwn(0,v,1),btwn(.4,frac(ndivs*v),.6),-1);
101
102 ro = if(in,clip($redv),ra);
103 go = if(in,clip($grnv),ga);
104 bo = if(in,clip($bluv),ba);
105
106 ra = 0;
107 ga = 0;
108 ba = 0;
109
110 in = 1;
111 _EOF_
112 cat > $td/pc1.cal <<_EOF_
113 norm : mult/scale/le(1);
114
115 v = map(li(1)*norm);
116
117 vleft = map(li(1,-1,0)*norm);
118 vright = map(li(1,1,0)*norm);
119 vabove = map(li(1,0,1)*norm);
120 vbelow = map(li(1,0,-1)*norm);
121
122 map(x) = x;
123
124 ra = ri(nfiles);
125 ga = gi(nfiles);
126 ba = bi(nfiles);
127 _EOF_
128 set pc0args=(-f $td/pc0.cal)
129 set pc1args=(-f $td/pc1.cal)
130 if ($?docont) then
131 set pc0args=($pc0args -e "in=iscont$docont")
132 endif
133 if ("$cpict" == "") then
134 set pc1args=($pc1args -e 'ra=0;ga=0;ba=0')
135 else if ("$cpict" == "$picture") then
136 set cpict=
137 endif
138 if ($?needfile && "$picture" == '-') then
139 cat > $td/picture
140 set picture=$td/picture
141 endif
142 if ($decades > 0) then
143 set pc1args=($pc1args -e "map(x)=if(x-10^-$decades,log10(x)/$decades+1,0)")
144 set imap="imap(y)=10^((y-1)*$decades)"
145 else
146 set imap="imap(y)=y"
147 endif
148 pcomb $pc0args -e 'v=(y+.5)/yres;vleft=v;vright=v' \
149 -e 'vbelow=(y-.5)/yres;vabove=(y+1.5)/yres' \
150 -x $legwidth -y $legheight > $td/scol.pic
151 ( echo $label; cnt $ndivs \
152 | rcalc -e '$1='"($scale)*imap(($ndivs-.5-"'$1'")/$ndivs)" \
153 -e "$imap" ) \
154 | psign -s -.15 -cf 1 1 1 -cb 0 0 0 \
155 -h `ev "floor($legheight/$ndivs+.5)"` > $td/slab.pic
156 if ( $?doextrem ) then
157 pextrem -o $picture > $td/extrema
158 set minpos=`sed 2d $td/extrema | rcalc -e '$2=$2;$1=$1+'"$legwidth"`
159 set minval=`rcalc -e '$1=($3*.3+$4*.59+$5*.11)*'"$mult" $td/extrema | sed -e 2d -e 's/\(.....\).*$/\1/'`
160 set maxpos=`sed 1d $td/extrema | rcalc -e '$2=$2;$1=$1+'"$legwidth"`
161 set maxval=`rcalc -e '$1=($3*.3+$4*.59+$5*.11)*'"$mult" $td/extrema | sed -e 1d -e 's/\(.....\).*$/\1/'`
162 psign -s -.15 -a 2 -h 16 $minval > $td/minv.pic
163 psign -s -.15 -a 2 -h 16 $maxval > $td/maxv.pic
164 pcomb $pc0args $pc1args $picture $cpict \
165 | pcompos $td/scol.pic 0 0 -t .2 $td/slab.pic 0 20 \
166 - $legwidth 0 $td/minv.pic $minpos $td/maxv.pic $maxpos
167 else
168 pcomb $pc0args $pc1args $picture $cpict \
169 | pcompos $td/scol.pic 0 0 -t .2 $td/slab.pic 0 20 - $legwidth 0
170 endif
171 quit:
172 rm -rf $td