1 |
|
{ RCSid $Id$ } |
2 |
|
{ |
3 |
|
Compute interior bin for (full) Klems BSDF basis (0-144) |
4 |
+ |
Returns 145 (Nkbins) for wrong-side rays |
5 |
|
|
6 |
|
Modified from Tregenza.cal, which is similar but different |
7 |
|
|
20 |
|
|
21 |
|
kazn(azi,inc) : if((360-.5*inc)-azi, floor((azi+.5*inc)/inc), 0); |
22 |
|
|
23 |
< |
kbin2(pol,azi) = select(kfindrow(1, pol), |
23 |
> |
kbin2(pol,azi) = if(pol-90, -1, |
24 |
> |
select(kfindrow(1, pol), |
25 |
|
kazn(azi,360/knaz(1)), |
26 |
|
kaccum(1) + kazn(azi,360/knaz(2)), |
27 |
|
kaccum(2) + kazn(azi,360/knaz(3)), |
31 |
|
kaccum(6) + kazn(azi,360/knaz(7)), |
32 |
|
kaccum(7) + kazn(azi,360/knaz(8)), |
33 |
|
kaccum(8) + kazn(azi,360/knaz(9)) |
34 |
< |
); |
34 |
> |
) ); |
35 |
|
|
36 |
|
kbin(Nx,Ny,Nz,Ux,Uy,Uz) = kbin2(Acos(-Dx*Nx-Dy*Ny-Dz*Nz), |
37 |
|
Atan2(-Dx*Ux-Dy*Uy-Dz*Uz, |