--- ray/src/cv/source.cal 1991/08/22 08:43:46 1.1 +++ ray/src/cv/source.cal 1992/08/18 13:23:14 2.3 @@ -10,20 +10,31 @@ srcB_vert and srcB_horiz are angles used in type B photometry. - A1 - optional multipier + boxcorr function corrects for distribution modeled + with a rectangular box. lboxcorr provides a more + accurate calculation for nearby surfaces, but requires + that the source box be centered at the origin. + + A1 - optional multipier + A2,A3,A4 - X,Y,Z dimensions of axis-aligned box } + { local definitions } +boxprojection = abs(Dx)*A3*A4 + abs(Dy)*A2*A4 + abs(Dz)*A2*A3; +lboxprojection = ( noneg(abs(Px-Dx*Ts)-A2/2)*A3*A4 + + noneg(abs(Py-Dy*Ts)-A3/2)*A2*A4 + + noneg(abs(Pz-Dz*Ts)-A4/2)*A2*A3 ) / Ts; flatcorr(v) = corr(v) / Rdot; { correction for flat sources } corr(v) = if(AC-.5, A1*v, v); { multiplier correction } +boxcorr(v) = A1 * v / boxprojection; { correction for emitting box } +lboxcorr(v) = A1 * v / lboxprojection; { local box correction } src_theta = Acos(Dz) / DEGREE; { 0-180 } -src_phi = norm_deg( atan2(Dy, Dx) / DEGREE ); { 0-360 } +src_phi = mod( atan2(Dy, Dx) / DEGREE, 360 ); { 0-360 } { bilateral symmetry } src_phi2 = tri( src_phi, 180 ); { 0-180 } { quadrilateral symmetry } src_phi4 = tri( src_phi, 90 ); { 0-90 } - -norm_deg(d) : if( d, d, d+360 ); { Type B photometry coordinates } srcB_vert = atan( -Dx/Dz ) / DEGREE;