--- ray/src/px/falsecolor.csh 1991/05/23 14:22:00 1.2 +++ ray/src/px/falsecolor.csh 1991/05/23 16:41:38 1.3 @@ -8,6 +8,7 @@ onintr quit set mult=470 set label=Nits set scale=1000 +set decades=0 set redv='2*v-1' set grnv='if(v-.5,2-2*v,2*v)' set bluv='1-2*v' @@ -28,6 +29,10 @@ while ($#argv > 0) shift argv set label="$argv[1]" breaksw + case -log: + shift argv + set decades=$argv[1] + breaksw case -r: shift argv set redv="$argv[1]" @@ -65,7 +70,7 @@ while ($#argv > 0) set ndivs="$argv[1]" breaksw default: - echo bad option "'$argv[1]'" + echo bad option "'$argv[1]'" >/dev/tty exit 1 endsw shift argv @@ -83,15 +88,16 @@ btwn(a,b) : if(a-x,-1,b-x); frac(x) : x - floor(x); boundary(a,b) : neq(floor(ndivs*a),floor(ndivs*b)); -red=$redv; -grn=$grnv; -blu=$bluv; +map(x) = x; +red = $redv; +grn = $grnv; +blu = $bluv; -v = li(1)*(mult/scale); -vleft = li(1,-1,0)*(mult/scale); -vright = li(1,1,0)*(mult/scale); -vabove = li(1,0,1)*(mult/scale); -vbelow = li(1,0,-1)*(mult/scale); +v = map(li(1)*(mult/scale)); +vleft = map(li(1,-1,0)*(mult/scale)); +vright = map(li(1,1,0)*(mult/scale)); +vabove = map(li(1,0,1)*(mult/scale)); +vbelow = map(li(1,0,-1)*(mult/scale)); isconta = or(boundary(vleft,vright),boundary(vabove,vbelow)); iscontb = if(btwn(0,v,1),btwn(.4,frac(ndivs*v),.6),0); @@ -114,11 +120,19 @@ if ("$cpict" == "") then else if ("$cpict" == "$picture") then set cpict= endif +if ($decades > 0) then + set pcargs=($pcargs -e "map(x)=log10(x)/$decades+1") + set imap="imap(y)=10^((y-1)*$decades)" +else + set imap="imap(y)=y" +endif pcomb $pcargs -e 'v=(y+.5)/200;vleft=v;vright=v' \ -e 'vbelow=(y-.5)/200;vabove=(y+1.5)/200' \ -e 'ra=0;ga=0;ba=0' -x 100 -y 200 \ > $tempdir/scol.pic -(echo $label; cnt $ndivs |rcalc -e '$1='"($scale)/$ndivs*($ndivs"'-.5-$1)') \ +( echo $label; cnt $ndivs \ + | rcalc -e '$1='"($scale)*imap(($ndivs-.5-"'$1'")/$ndivs)" \ + -e "$imap" ) \ | psign -cf 1 1 1 -cb 0 0 0 -h `ev "floor(2*200/$ndivs+.5)"` \ | pfilt -1 -x /2 -y /2 > $tempdir/slab.pic pcomb $pcargs $picture $cpict \