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

# User Rev Content
1 greg 1.1 #!/bin/csh -f
2     # SCCSid "$SunId$ LBL"
3     #
4     # Create false color image with legend
5     #
6 greg 1.5 set td=/usr/tmp/fc$$
7 greg 1.1 onintr quit
8 greg 1.9 set mult=179
9 greg 1.1 set label=Nits
10     set scale=1000
11 greg 1.3 set decades=0
12 greg 1.5 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 greg 1.1 set ndivs=8
16     set picture='-'
17     set cpict=
18 greg 1.5 set legwidth=100
19     set legheight=200
20 greg 1.1 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 greg 1.3 case -log:
35     shift argv
36     set decades=$argv[1]
37     breaksw
38 greg 1.1 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 greg 1.2 shift argv
61 greg 1.1 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 greg 2.3 case -e:
71     set doextrem
72     set needfile
73     breaksw
74 greg 1.1 case -n:
75 greg 1.2 shift argv
76 greg 1.1 set ndivs="$argv[1]"
77 greg 1.2 breaksw
78 greg 1.1 default:
79 greg 1.3 echo bad option "'$argv[1]'" >/dev/tty
80 greg 1.1 exit 1
81     endsw
82     shift argv
83     end
84 greg 1.5 mkdir $td
85     cat > $td/pc0.cal <<_EOF_
86 greg 1.8 PI : 3.14159265358979323846 ;
87 greg 1.1 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 greg 1.7 btwn(a,x,b) : if(a-x,-1,b-x);
95 greg 1.5 clip(x) : if(x-1,1,if(x,x,0));
96 greg 1.1 frac(x) : x - floor(x);
97 greg 2.2 boundary(a,b) : neq(floor(ndivs*a+.5),floor(ndivs*b+.5));
98 greg 1.1
99 greg 1.6 isconta = if(btwn(0,v,1),or(boundary(vleft,vright),boundary(vabove,vbelow)),-1);
100 greg 1.5 iscontb = if(btwn(0,v,1),btwn(.4,frac(ndivs*v),.6),-1);
101 greg 1.1
102 greg 1.5 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 greg 1.4 v = map(li(1)*norm);
116 greg 1.5
117 greg 1.4 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 greg 1.1
122 greg 1.5 map(x) = x;
123 greg 1.1
124     ra = ri(nfiles);
125     ga = gi(nfiles);
126     ba = bi(nfiles);
127     _EOF_
128 greg 1.5 set pc0args=(-f $td/pc0.cal)
129     set pc1args=(-f $td/pc1.cal)
130 greg 1.1 if ($?docont) then
131 greg 1.5 set pc0args=($pc0args -e "in=iscont$docont")
132 greg 1.1 endif
133     if ("$cpict" == "") then
134 greg 1.5 set pc1args=($pc1args -e 'ra=0;ga=0;ba=0')
135 greg 1.1 else if ("$cpict" == "$picture") then
136     set cpict=
137     endif
138 greg 2.3 if ($?needfile && "$picture" == '-') then
139     cat > $td/picture
140     set picture=$td/picture
141     endif
142 greg 1.3 if ($decades > 0) then
143 greg 1.5 set pc1args=($pc1args -e "map(x)=if(x-10^-$decades,log10(x)/$decades+1,0)")
144 greg 1.3 set imap="imap(y)=10^((y-1)*$decades)"
145     else
146     set imap="imap(y)=y"
147     endif
148 greg 1.5 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 greg 1.3 ( echo $label; cnt $ndivs \
152     | rcalc -e '$1='"($scale)*imap(($ndivs-.5-"'$1'")/$ndivs)" \
153     -e "$imap" ) \
154 greg 2.3 | 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 greg 1.1 quit:
172 greg 1.5 rm -rf $td