ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cal/cal/skyfact.cal
Revision: 1.1
Committed: Thu Feb 29 03:14:30 2024 UTC (3 months, 1 week ago) by greg
Branch: MAIN
Log Message:
feat: Added files for converting sky photos to hyperspectral images

File Contents

# User Rev Content
1 greg 1.1 { RCSid $Id$ }
2     {
3     Sky factors taken from Preethem et al. 1999 Table 2 (appendix)
4    
5     Used to compute sky spectra
6    
7     2/28/2024
8     }
9     interp_arr2`(i,x,f):(i+1-x)*f(i)+(x-i)*f(i+1);
10     interp_arr`(x,f):if(x-1,if(f(0)-x,interp_arr2`(floor(x),x,f),f(f(0))),f(1));
11    
12     S0`p1826(i):select(i,63.4,65.8,94.8,104.8,105.9,96.8,
13     113.9,125.6,125.5,121.3,121.3,113.5,113.1,110.8,106.5,108.8,
14     105.3,104.4,100,96,95.1,89.1,90.5,90.3,88.4,84,85.1,81.9,82.6,
15     84.9,81.3,71.9,74.3,76.4,63.3,71,77,65.2,47.7,68.6,65);
16    
17     S1`p1826(i):select(i,38.5,35,43.4,46.3,43.9,37.1,36.7,
18     35.9,32.6,27.9,24.3,20.1,16.2,13.2,8.6,6.1,4.2,1.9,0,-1.6,-3.5,
19     -3.5,-5.8,-7.2,-8.6,-9.5,-10.9,-10.7,-12,-14,-13.6,-12,-13.3,
20     -12.9,-10.6,-11.6,-12.2,-10.2,-7.8,-11.2,-10.4);
21    
22     S2`p1826(i):select(i,3,1.2,-1.1,-0.5,0.7,-1.2,-2.6,
23     -2.9,-2.8,-2.6,-2.6,-1.8,-1.5,-1.3,-1.2,-1,0.5,0.3,0,0.2,0.5,
24     2.1,3.2,4.1,4.7,5.1,6.7,7.3,8.6,9.8,10.2,8.3,9.6,8.5,7,7.6,8,
25     6.7,5.2,7.4,6.8);
26    
27     S0(x) : interp_arr`((x-380)/10+1,S0`p1826);
28     S1(x) : interp_arr`((x-380)/10+1,S1`p1826);
29     S2(x) : interp_arr`((x-380)/10+1,S2`p1826);
30    
31     ybar`nm10(i):select(i,
32     2.00E-05, 0.00027, 0.000396, 0.00121, 0.004, 0.0116, 0.023,
33     0.038, 0.06, 0.09098, 0.13902, 0.20802, 0.323, 0.503, 0.71,
34     0.862, 0.954, 0.9949501, 0.995, 0.952, 0.87, 0.757, 0.631,
35     0.503, 0.381, 0.265, 0.175, 0.107, 0.061, 0.032, 0.017,
36     0.00821, 0.004102, 0.001877941, 0.000897684, 0.000431955,
37     0.000210375, 0.000104035, 5.24E-05, 2.68E-05, 1.39E-05);
38    
39     Nybar : ybar`nm10(0);
40    
41     ybar(x):interp_arr`((x-380)/10+1,ybar`nm10);
42    
43     funSum(f,n) : if(n-.5, f(n)+funSum(f,n-1), 0);
44    
45     ybarSum : funSum(ybar`nm10, Nybar);
46    
47     multSum(f1,f2,n) : if(n-.5, f1(n)*f2(n)+multSum(f1,f2,n-1), 0);
48    
49     photopicWeighted(sfn) : multSum(ybar`nm10, sfn, Nybar) / ybarSum;
50    
51     S0normf : photopicWeighted(S0`p1826);
52     S1normf : photopicWeighted(S1`p1826);
53     S2normf : photopicWeighted(S2`p1826);
54    
55     { Multiplication factors for S1 and S2 }
56     Mden(x,y) : 0.0241 + 0.2562*x - 0.7341*y;
57     M1(x,y) : (-1.3515 - 1.7703*x + 5.9114*y) / Mden(x,y);
58     M2(x,y) : (0.0300 - 31.4424*x + 30.0717*y) / Mden(x,y);
59    
60     RelSpecPower(wl,x,y) : S0(wl) + M1(x,y)*S1(wl) + M2(x,y)*S2(wl);