1 |
#!/bin/csh -f |
2 |
# RCSid: $Id: pveil.csh,v 3.2 2003/02/22 02:07:27 greg Exp $ |
3 |
# |
4 |
# Add veiling glare to picture |
5 |
# |
6 |
if ($#argv != 1) then |
7 |
echo "Usage: $0 input.pic > output.pic" |
8 |
exit 1 |
9 |
endif |
10 |
set ifile=$1 |
11 |
set td=/tmp |
12 |
set gf=$td/av$$.gs |
13 |
set cf=$td/av$$.cal |
14 |
set tf=($gf $cf) |
15 |
onintr quit |
16 |
findglare -r 400 -c -p $ifile \ |
17 |
| sed -e '1,/^BEGIN glare source$/d' -e '/^END glare source$/,$d' \ |
18 |
> $gf |
19 |
if ( -z $gf ) then |
20 |
cat $ifile |
21 |
goto quit |
22 |
endif |
23 |
( rcalc -e '$1=recno;$2=$1;$3=$2;$4=$3;$5=$4*$5' $gf \ |
24 |
| tabfunc SDx SDy SDz I ; cat ) > $cf << '_EOF_' |
25 |
N : I(0); |
26 |
K : 9.2; { should be 9.6e-3/PI*(180/PI)^2 == 10.03 ? } |
27 |
bound(a,x,b) : if(a-x, a, if(x-b, b, x)); |
28 |
Acos(x) : acos(bound(-1,x,1)); |
29 |
sq(x) : x*x; |
30 |
mul(ct) : if(ct-cos(.5*PI/180), K/sq(.5), K/sq(180/PI)*ct/sq(Acos(ct))); |
31 |
Dx1 = Dx(1); Dy1 = Dy(1); Dz1 = Dz(1); { minor optimization } |
32 |
cosa(i) = SDx(i)*Dx1 + SDy(i)*Dy1 + SDz(i)*Dz1; |
33 |
sum(i) = if(i-.5, mul(cosa(i))*I(i)+sum(i-1), 0); |
34 |
veil = le(1)/WE * sum(N); |
35 |
ro = ri(1) + veil; |
36 |
go = gi(1) + veil; |
37 |
bo = bi(1) + veil; |
38 |
'_EOF_' |
39 |
getinfo < $ifile | egrep '^((VIEW|EXPOSURE|PIXASPECT|PRIMARIES|COLORCORR)=|[^ ]*(rpict|rview|pinterp) )' |
40 |
pcomb -f $cf $ifile |
41 |
quit: |
42 |
rm -f $tf |