{ SCCSid "$SunId$ LBL" } { Source distribution coordinates (degrees). Theta is measured from the negative z-axis, phi is measured from the positive x-axis according to the right-hand rule. srcB_vert and srcB_horiz are angles used in type B photometry. 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. The dimensions of the box, which must be aligned with the x,y,z axes, are given in meters regardless of the units being used in the scene file. A1 - optional multipier A2,A3,A4 - X,Y,Z dimensions of axis-aligned box (in meters!) } { 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 = 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 } { Type B photometry coordinates } srcB_vert = atan( -Dx/Dz ) / DEGREE; srcB_horiz = Asin(Dy) / DEGREE; { w/ symmetry } srcB_vert2 = abs( srcB_vert ); srcB_horiz2 = abs( srcB_horiz );