ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cal/cal/metals.cal
Revision: 1.1
Committed: Sat Feb 22 02:07:21 2003 UTC (21 years, 1 month ago) by greg
Branch: MAIN
CVS Tags: rad5R2, rad4R2P2, rad5R0, rad5R1, rad3R7P2, rad3R7P1, rad4R2, rad4R1, rad4R0, rad3R5, rad3R6, rad3R6P1, rad3R8, rad3R9, rad4R2P1
Log Message:
Changes and check-in for 3.5 release
Includes new source files and modifications not recorded for many years
See ray/doc/notes/ReleaseNotes for notes between 3.1 and 3.5 release

File Contents

# Content
1 {
2 Complex indices of refraction for 4 metals:
3
4 copper
5 gold
6 aluminum
7 silver
8
9 Data borrowed from Andrew Glassner's book, "Principles of
10 Digital Image Synthesis" from Morgan Kaufmann
11 publishers.
12
13 The functions below permit the computation of
14 spectral reflectance at any incident angle and
15 wavelength in the 380-775 nm range.
16 }
17
18 spec_copper(ct,wl) : spec_refl(copper_nr,copper_ni,ct,wl);
19 spec_gold(ct,wl) : spec_refl(gold_nr,gold_ni,ct,wl);
20 spec_aluminum(ct,wl) : spec_refl(aluminum_nr,aluminum_ni,ct,wl);
21 spec_silver(ct,wl) : spec_refl(silver_nr,silver_ni,ct,wl);
22
23 {
24 Fresnel's equations
25 }
26 sq(x) : x*x;
27 Sqrt(x) : if(x,sqrt(x),0);
28 fuvA(ct,nr,nk) : sq(nr)*(1-sq(nk)) - (1-sq(ct));
29 fuvB(ct,nr,nk) : sqrt(sq(fuvA(ct,nr,nk)) + 4*sq(sq(nr)*nk));
30 fu2(ct,nr,nk) : (fuvA(ct,nr,nk) + fuvB(ct,nr,nk))/2;
31 fv2(ct,nr,nk) : (-fuvA(ct,nr,nk) + fuvB(ct,nr,nk))/2;
32 fperp2(ct,nr,nk) : (sq(ct-sqrt(fu2(ct,nr,nk))) + fv2(ct,nr,nk)) /
33 (sq(ct+sqrt(fu2(ct,nr,nk))) + fv2(ct,nr,nk));
34 fpara2(ct,nr,nk) : (sq(sq(nr)*(1-sq(nk))*ct - sqrt(fu2(ct,nr,nk))) +
35 sq(2*sq(nr)*nk*ct - Sqrt(fv2(ct,nr,nk)))) /
36 (sq(sq(nr)*(1-sq(nk))*ct + sqrt(fu2(ct,nr,nk))) +
37 sq(2*sq(nr)*nk*ct + Sqrt(fv2(ct,nr,nk))));
38 fresnel2(ct,nr,nk) : (fperp2(ct,nr,nk) + fpara2(ct,nr,nk))/2;
39
40 spec_refl(nrf,nif,ct,wl) : fresnel2(ct,nrf(wl),nif(wl)/nrf(wl));
41
42 {
43 Complex refractive index interpolation functions
44 for our metals.
45 }
46 interp_arr2`(i,x,f):(i+1-x)*f(i)+(x-i)*f(i+1);
47 interp_arr`(x,f):if(x-1,if(f(0)-x,interp_arr2`(floor(x),x,f),f(f(0))),f(1));
48 copper_nr`p24653(i):select(i,1.18828,1.18828,1.1871,
49 1.185312,1.183702,1.182223,1.180822,1.179452,1.178062,1.176602,
50 1.175023,1.173274,1.171306,1.169114,1.166702,1.164034,1.161139,
51 1.158046,1.154787,1.15139,1.150639,1.151381,1.151354,1.150138,
52 1.147313,1.142456,1.135149,1.12497,1.114585,1.102313,1.085276,
53 1.062659,1.034637,1.003658,0.965898,0.921582,0.870931,0.812255,
54 0.740885,0.667504,0.595384,0.527793,0.468,0.415458,0.372648,
55 0.338234,0.310878,0.289246,0.272,0.256103,0.243055,0.232653,
56 0.224696,0.218982,0.215308,0.213646,0.213653,0.21435,0.215,
57 0.214749,0.214074,0.21333,0.21272,0.21238,0.212566,0.213295,
58 0.214605,0.21645,0.218648,0.221044,0.223483,0.225852,0.228145,
59 0.230367,0.232522,0.234613,0.236647,0.238625,0.240554,0.242437);
60 copper_nr(x):interp_arr`((x-380)/5+1,copper_nr`p24653);
61 copper_ni`p24653(i):select(i,2.078662,2.078662,2.09304,
62 2.117618,2.142816,2.168463,2.194386,2.220412,2.246369,2.272084,
63 2.297387,2.322103,2.346061,2.369725,2.393291,2.415747,2.43704,
64 2.457114,2.475917,2.493393,2.511981,2.5307,2.547674,2.562687,
65 2.575524,2.58597,2.593811,2.59883,2.599943,2.598045,2.594923,
66 2.591761,2.58795,2.579443,2.575114,2.576699,2.585936,2.603536,
67 2.627422,2.660953,2.703188,2.753184,2.81,2.875556,2.945518,
68 3.018414,3.092775,3.167127,3.24,3.312184,3.381591,3.448394,
69 3.512766,3.57488,3.634911,3.693233,3.750162,3.805661,3.86,
70 3.91448,3.967796,4.019675,4.069952,4.118678,4.166057,4.212465,
71 4.258351,4.30398,4.349268,4.394238,4.438778,4.48251,4.525993,
72 4.569252,4.612311,4.655197,4.697934,4.740548,4.783062,4.825503);
73 copper_ni(x):interp_arr`((x-380)/5+1,copper_ni`p24653);
74 gold_nr`p24653(i):select(i,1.678455,1.678455,1.675263,
75 1.666817,1.658,1.649184,1.640737,1.634183,1.629351,1.622275,
76 1.612759,1.59989,1.579005,1.548932,1.510154,1.464924,1.417717,
77 1.374532,1.325871,1.268297,1.195681,1.110843,1.021396,0.933039,
78 0.84688,0.767504,0.695794,0.631604,0.571663,0.516924,0.469422,
79 0.429107,0.395941,0.369509,0.348463,0.33137,0.316801,0.303023,
80 0.288205,0.273748,0.259998,0.2473,0.236,0.226102,0.217697,
81 0.210535,0.204364,0.198936,0.194,0.188606,0.183521,0.178812,
82 0.174544,0.170786,0.167605,0.165016,0.163,0.161554,0.160597,
83 0.160049,0.159829,0.159855,0.160027,0.160222,0.160515,0.160903,
84 0.161383,0.161953,0.162609,0.163349,0.164163,0.165023,0.165954,
85 0.166952,0.16801,0.169122,0.170283,0.171487,0.172728,0.174);
86 gold_nr(x):interp_arr`((x-380)/5+1,gold_nr`p24653);
87 gold_ni`p24653(i):select(i,1.953596,1.953596,1.953178,
88 1.953892,1.956,1.958108,1.958822,1.957185,1.952822,1.945549,
89 1.93636,1.925744,1.912865,1.897096,1.87876,1.860113,1.841519,
90 1.821149,1.805653,1.797055,1.790414,1.790218,1.80338,1.832168,
91 1.875281,1.93352,2.004628,2.085559,2.177679,2.276178,2.374557,
92 2.469264,2.557729,2.640573,2.714364,2.779947,2.838163,2.883275,
93 2.896406,2.904831,2.909502,2.911371,2.91139,2.91051,2.909684,
94 2.909863,2.912,2.917045,2.925952,2.939671,2.959155,2.985355,
95 3.019223,3.061712,3.113773,3.179622,3.260394,3.348767,3.442244,
96 3.53833,3.634528,3.728342,3.817474,3.900933,3.978438,4.050759,
97 4.118664,4.182923,4.244306,4.303581,4.361628,4.419346,4.476388,
98 4.532793,4.588597,4.643842,4.698567,4.752808,4.806607,4.86);
99 gold_ni(x):interp_arr`((x-380)/5+1,gold_ni`p24653);
100 aluminum_nr`p24654(i):select(i,0.459522,0.459522,
101 0.464578,0.477268,0.49,0.502732,0.515422,0.528027,0.54054,
102 0.553012,0.565131,0.577244,0.589948,0.603591,0.618,0.632493,
103 0.646781,0.660667,0.674693,0.689087,0.703759,0.718931,0.734853,
104 0.751561,0.769,0.786605,0.786342,0.784987,0.806091,0.844815,
105 0.878276,0.898602,0.915377,0.934823,0.958,0.981445,1.002914,
106 1.024224,1.046286,1.070014,1.09594,1.123162,1.15,1.176546,1.2,
107 1.22,1.243866,1.27122,1.3,1.32833,1.356345,1.384367,1.411292,
108 1.439278,1.47,1.502859,1.53467,1.566741,1.6,1.634324,1.670565,
109 1.708526,1.747843,1.787991,1.83,1.872679,1.919912,1.972871,
110 2.030324,2.090685,2.153505,2.220514,2.285233,2.345712,2.4,
111 2.45085,2.499693,2.545931,2.589417,2.63);
112 aluminum_nr(x):interp_arr`((x-380)/5+1,aluminum_nr`p24654);
113 aluminum_ni`p24654(i):select(i,4.712543,4.712543,
114 4.737463,4.799026,4.86,4.920975,4.982537,5.046061,5.111395,
115 5.175306,5.233723,5.288472,5.344414,5.405324,5.47,5.531815,
116 5.592108,5.653007,5.714261,5.775548,5.836021,5.896012,5.956376,
117 6.017607,6.08,6.138476,6.196043,6.255528,6.318217,6.382319,
118 6.443884,6.502451,6.563588,6.63103,6.69,6.743231,6.801953,
119 6.861834,6.919963,6.977149,7.034889,7.092927,7.15,7.206569,
120 7.26,7.31,7.364944,7.422566,7.48,7.535376,7.588417,7.639844,
121 7.690237,7.740152,7.79,7.841236,7.896558,7.953478,8.01,
122 8.066238,8.11997,8.17108,8.21945,8.265363,8.31,8.354383,
123 8.40055,8.452595,8.501185,8.543206,8.575872,8.598589,8.611949,
124 8.618302,8.62,8.623612,8.625132,8.622376,8.614337,8.6);
125 aluminum_ni(x):interp_arr`((x-380)/5+1,aluminum_ni`p24654);
126 silver_nr`p24654(i):select(i,0.172643,0.172643,0.172179,
127 0.172143,0.173,0.173857,0.173821,0.171576,0.167032,0.162298,
128 0.159271,0.158423,0.157828,0.155916,0.15216,0.147613,0.143045,
129 0.138757,0.135317,0.132764,0.131138,0.130306,0.130009,0.129992,
130 0.130061,0.130105,0.130103,0.130043,0.130125,0.130219,0.130091,
131 0.129646,0.128675,0.126824,0.124775,0.122763,0.121029,0.119768,
132 0.119005,0.118838,0.119176,0.119927,0.121,0.122437,0.124046,
133 0.125766,0.127538,0.129303,0.131,0.132869,0.13459,0.136141,
134 0.137502,0.138652,0.13957,0.14011,0.140229,0.140185,0.14005,
135 0.139897,0.139801,0.139833,0.140154,0.141061,0.142139,0.143315,
136 0.144516,0.145667,0.146695,0.147527,0.148028,0.147986,0.147682,
137 0.147174,0.146517,0.145769,0.144987,0.144227,0.143545,0.143);
138 silver_nr(x):interp_arr`((x-380)/5+1,silver_nr`p24654);
139 silver_ni`p24654(i):select(i,1.801357,1.801357,1.824736,
140 1.886179,1.95,2.013821,2.075264,2.132024,2.183605,2.231833,
141 2.278383,2.324504,2.371326,2.420021,2.470635,2.520932,2.569545,
142 2.615768,2.660014,2.702999,2.744957,2.786577,2.828568,2.871323,
143 2.916154,2.961894,3.007563,3.052436,3.095771,3.137532,3.178189,
144 3.218184,3.257945,3.297745,3.337667,3.377699,3.41783,3.458226,
145 3.499347,3.540295,3.58086,3.620832,3.66,3.697,3.733363,
146 3.769467,3.805689,3.842407,3.88,3.919219,3.959434,4.000389,
147 4.041828,4.083495,4.125135,4.166709,4.208175,4.249203,4.289791,
148 4.329939,4.369645,4.408909,4.447676,4.485809,4.523594,4.561111,
149 4.598441,4.635663,4.672859,4.710108,4.747403,4.784542,4.82189,
150 4.859458,4.897254,4.935289,4.973571,5.012111,5.050918,5.09);
151 silver_ni(x):interp_arr`((x-380)/5+1,silver_ni`p24654);