3 |
|
{ |
4 |
|
Coordinate computations for mkillum output. |
5 |
|
|
6 |
< |
For the spherical case, A1-A3 is the value at the positive pole, |
7 |
< |
A4-A6 is the value at the negative pole, and A7 is the pole influence: |
6 |
> |
There are no arguments for the spherical case: |
7 |
|
|
8 |
|
il_alt - Altitude (1 to -1) for spherical coordinates |
9 |
|
il_azi - Azimuth (0 to 2*PI) for sphere |
10 |
|
|
11 |
< |
For the hemispherical case, A1-A3 and A4 are the pole value and |
13 |
< |
influence, respectively, and A5-A13 are the unit vectors for the |
11 |
> |
For the hemispherical case, A1-A9 are the unit vectors for the |
12 |
|
hemisphere's coordinate system: |
13 |
|
|
14 |
|
il_alth - Altitude (1 to 0) for hemispherical coordinates |
15 |
|
il_azih - Azimuth (0 to 2*PI) for hemisphere |
16 |
|
} |
17 |
|
|
20 |
– |
norm_rad(r) : if( r, r, r+2*PI ); |
21 |
– |
{ sphere coordinates } |
18 |
|
il_alt = Dz; |
19 |
< |
il_azi = norm_rad(atan2(Dy, Dx)); |
19 |
> |
il_azi = norm_rad(Atan2(Dy, Dx)); |
20 |
|
|
21 |
< |
s_val(v, vN, vS) = if( il_alt-A7, |
22 |
< |
linterp((il_alt-A7)/(1-A7), v, vN), |
27 |
< |
if ( -il_alt-A7, |
28 |
< |
linterp((-il_alt-A7)/(1-A7), v, vS), |
29 |
< |
v ), |
30 |
< |
v ); |
31 |
< |
{ sphere values } |
32 |
< |
s_red(r,g,b) = s_val(r, A1, A4); |
33 |
< |
s_grn(r,g,b) = s_val(g, A2, A5); |
34 |
< |
s_blu(r,g,b) = s_val(b, A3, A6); |
35 |
< |
s_gry(v) = s_val(v, grey(A1,A2,A3), grey(A4,A5,A6)); |
21 |
> |
il_alth = sq(-Dx*A7-Dy*A8-Dz*A9); |
22 |
> |
il_azih = norm_rad(Atan2(-Dx*A4-Dy*A5-Dz*A6, -Dx*A1-Dy*A2-Dz*A3)); |
23 |
|
|
24 |
< |
{ hemisphere coordinates } |
38 |
< |
il_alth = sq(-Dx*arg(11)-Dy*arg(12)-Dz*arg(13)); |
39 |
< |
il_azih = norm_rad(atan2(-Dx*arg(8)-Dy*arg(9)-Dz*arg(10), |
40 |
< |
-Dx*arg(5)-Dy*arg(6)-Dz*arg(7))); |
41 |
< |
|
42 |
< |
h_val(v, vN) = if( il_alth-A4, linterp((il_alth-A4)/(1-A4), v, vN), noneg(v) ); |
43 |
< |
{ hemisphere values } |
44 |
< |
h_red(r,g,b) = h_val(r, A1); |
45 |
< |
h_grn(r,g,b) = h_val(g, A2); |
46 |
< |
h_blu(r,g,b) = h_val(b, A3); |
47 |
< |
h_gry(v) = h_val(v, grey(A1,A2,A3)); |
24 |
> |
norm_rad(r) = if( r, r, r+2*PI ); |