ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/test/renders/diskcoords.cal
Revision: 1.2
Committed: Sat Dec 1 02:06:05 2018 UTC (6 years, 5 months ago) by greg
Branch: MAIN
Changes since 1.1: +5 -25 lines
Log Message:
Finished additions for BSDF's, etc. to complete primitive testing

File Contents

# Content
1 { RCSid $Id: diskcoords.cal,v 1.1 2018/11/30 17:49:59 greg Exp $ }
2 {
3 Shirley-Chiu coordinate calculation for BRDF data types (plasdata, metdata)
4
5 Assumes material in X-Y plane with Y axis "up" and surface normal is Z-axis
6 }
7 { Compute square position from disk coordinates }
8 norm_radians(p) : if(-p - PI/4, p + 2*PI, p);
9 idr(idx,idy) = sqrt(idx*idx + idy*idy);
10 idp(idx,idy) = norm_radians(atan2(idy, idx));
11
12 idrgn(idp) = floor((idp + PI/4)/(PI/2)) + 1;
13
14 square_a(idr,idp) = select(idrgn(idp),
15 idr,
16 (PI/2 - idp)*idr/(PI/4),
17 -idr,
18 (idp - 3*PI/2)*idr/(PI/4));
19
20 square_b(idr,idp) = select(idrgn(idp),
21 idp*idr/(PI/4),
22 idr,
23 (PI - idp)*idr/(PI/4),
24 -idr);
25
26 square_x(idx,idy) = (square_a(idr(idx,idy),idp(idx,idy)) + 1)/2;
27 square_y(idx,idy) = (square_b(idr(idx,idy),idp(idx,idy)) + 1)/2;
28
29 inc_sqx = square_x(-Idx,-Idy); { Negative because of Klems reversal }
30 inc_sqy = square_y(-Idx,-Idy);
31
32 sqx_in(sx,sy,sz) = inc_sqx; { Only a function of incident ray direction }
33 sqy_in(sx,sy,sz) = inc_sqy;
34
35 sqx_out(sx,sy,sz) = square_x(Ldx(sx,sy,sz),Ldy(sx,sy,sz));
36 sqy_out(sx,sy,sz) = square_y(Ldx(sx,sy,sz),Ldy(sx,sy,sz));