ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/rayinit.cal
(Generate patch)

Comparing ray/src/rt/rayinit.cal (file contents):
Revision 2.16 by greg, Tue Oct 8 18:59:44 2013 UTC vs.
Revision 2.19 by greg, Mon Jun 10 13:56:52 2019 UTC

# Line 37 | Line 37
37  
38          select(N, a1, a2, ..)           - return aN
39  
40 +        min(a1, a2, ..)                 - return minimum argument
41 +        max(a1, a2, ..)                 - return maximum argument
42 +
43          sqrt(x)                         - square root function
44  
45          sin(x), cos(x), tan(x),
# Line 93 | Line 96 | xor(a,b) : if( a, not(b), b );
96   abs(x) : if( x, x, -x );
97   sgn(x) : if( x, 1, if(-x, -1, 0) );
98   sq(x) : x*x;
96 max(a,b) : if( a-b, a, b );
97 min(a,b) : if( a-b, b, a );
99   inside(a,x,b) : and(x-a,b-x);
100   frac(x) : x - floor(x);
101   mod(n,d) : n - floor(n/d)*d;
# Line 150 | Line 151 | turbulencez(x,y,z,s) : if( s-1.01, 0,
151  
152                          { Normal distribution from uniform range (0,1) }
153  
154 < un2`P(t) : t - (2.515517+t*(.802853+t*.010328))/
154 > un2`P.(t) : t - (2.515517+t*(.802853+t*.010328))/
155                  (1+t*(1.432788+t*(.189269+t*.001308))) ;
156 < un1`P(p) : un2`P(sqrt(-2*log(p))) ;
156 > un1`P.(p) : un2`P.(sqrt(-2*log(p))) ;
157  
158 < unif2norm(p) : if( .5-p, -un1`P(p), un1`P(1-p) ) ;
158 > unif2norm(p) : if( .5-p, -un1`P.(p), un1`P.(1-p) ) ;
159  
160   nrand(x) = unif2norm(rand(x));
161  
162                          { Local (u,v) coordinates for planar surfaces }
163 < crosslen`P = Nx*Nx + Ny*Ny;
163 > crosslen`P. = Nx*Nx + Ny*Ny;
164                          { U is distance from projected Z-axis }
165 < U = if( crosslen`P - FTINY,
166 <                (Py*Nx - Px*Ny)/crosslen`P,
165 > U = if( crosslen`P. - FTINY,
166 >                (Py*Nx - Px*Ny)/crosslen`P.,
167                  Px);
168                          { V is defined so that N = U x V }
169 < V = if( crosslen`P - FTINY,
170 <                Pz - Nz*(Px*Nx + Py*Ny)/crosslen`P,
169 > V = if( crosslen`P. - FTINY,
170 >                Pz - Nz*(Px*Nx + Py*Ny)/crosslen`P.,
171                  Py);
172 +
173 +                        { Local hemisphere direction for *func & *data types }
174 +                        { last 3 real args = unnormalized up-vector }
175 + Vux`P. = arg(AC-1)*NzP - arg(AC)*NyP;
176 + Vuy`P. = arg(AC)*NxP - arg(AC-2)*NzP;
177 + Vuz`P. = arg(AC-2)*NyP - arg(AC-1)*NxP;
178 + vnorm`P. = 1/sqrt(Vux`P.*Vux`P. + Vuy`P.*Vuy`P. + Vuz`P.*Vuz`P.);
179 + Vnx`P. = Vux`P.*vnorm`P.;
180 + Vny`P. = Vuy`P.*vnorm`P.;
181 + Vnz`P. = Vuz`P.*vnorm`P.;
182 + Unx`P. = NyP*Vnz`P. - NzP*Vny`P.;
183 + Uny`P. = NzP*Vnx`P. - NxP*Vnz`P.;
184 + Unz`P. = NxP*Vny`P. - NyP*Vnx`P.;
185 +                        { Transform vectors, normalized (dx,dy,dz) away from surf }
186 + Ldx(dx,dy,dz) = dx*Unx`P. + dy*Uny`P. + dz*Unz`P.;
187 + Ldy(dx,dy,dz) = dx*Vnx`P. + dy*Vny`P. + dz*Vnz`P.;
188 + Ldz(dx,dy,dz) = dx*NxP + dy*NyP + dz*NzP;
189 +                        { Incident vector transformed to our coords }
190 + Idx = Ldx(-Dx,-Dy,-Dz);
191 + Idy = Ldy(-Dx,-Dy,-Dz);
192 + Idz = RdotP;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines