1function reflection_restore_session(){ 2 tmp=parseFloat(sessionStorage.getItem("angle")); 3 if(isNaN(tmp)) 4 tmp=0; 5 document.getElementById("angle").value=tmp; 6 7 sessionStorage.getItem("direction")=="out" ? tmp="out" : tmp="in"; 8 document.getElementById(tmp).checked=true; 9 10 sessionStorage.getItem("r_plot_rp")=="false" ? tmp=false : tmp=true; 11 document.getElementById("r_plot_rp").checked=tmp; 12 13 sessionStorage.getItem("r_plot_rs")=="false" ? tmp=false : tmp=true; 14 document.getElementById("r_plot_rs").checked=tmp; 15 16 sessionStorage.getItem("r_plot_r")=="true" ? tmp=true : tmp=false; 17 document.getElementById("r_plot_r").checked=tmp; 18 19 sessionStorage.getItem("r_plot_logy")=="true" ? tmp=true : tmp=false; 20 document.getElementById("r_plot_logy").checked=tmp; 21 } 22 23function reflection(){ 24 document.getElementById("wl_reflectance").innerHTML=document.getElementById("wavelength").value; 25 wl=parseFloat(document.getElementById("wavelength").value); 26 if(!n_defined || wl<wl_n_min || wl>wl_n_max || (n0>=1&&n0<1.01&&k0==0) ){ 27 document.getElementById("Reflection_calculator").style.display="none"; 28 return; 29 } 30 document.getElementById("Reflection_calculator").style.display="block"; 31 n0=n(wl); 32 k0=k(wl); 33 34 angle=parseFloat(document.getElementById("angle").value); 35 if(isNaN(angle)||angle<0)angle=0; 36 if(angle>90)angle=90; 37 document.getElementById("angle").value=angle; 38 sessionStorage.setItem("angle",angle); 39 40 direction="in"; 41 if(document.getElementById("out").checked) 42 direction="out"; 43 sessionStorage.setItem("direction",direction); 44 45 if(direction=="in"){ 46 n1=Complex.one; 47 n0>=0?n2=new Complex(n0,k0):n2=new Complex(-1*n0,k0);//regular or metamaterials with n<0 48 } 49 else{ 50 n0>=0?n1=new Complex(n0,k0):n1=new Complex(-1*n0,k0); 51 n2=Complex.one; 52 } 53 sin1=Complex.sin(new Complex(deg2rad(angle),0)); 54 sin2=Complex.mult(Complex.div(n1,n2),sin1);//sin2=n1/n2*sin1 55 cos1=Complex.sqrt(Complex.sub(Complex.one,Complex.pow(sin1,2))); 56 cos2=Complex.sqrt(Complex.sub(Complex.one,Complex.pow(sin2,2))); 57 Rs_complex=Complex.div(Complex.sub(Complex.mult(n1,cos1),Complex.mult(n2,cos2)),Complex.add(Complex.mult(n1,cos1),Complex.mult(n2,cos2)) ); 58 Rp_complex=Complex.div(Complex.sub(Complex.mult(n2,cos1),Complex.mult(n1,cos2)),Complex.add(Complex.mult(n1,cos2),Complex.mult(n2,cos1)) ); 59 Rs=Complex.abs2(Rs_complex); 60 Rp=Complex.abs2(Rp_complex); 61 document.getElementById("Rnp").innerHTML=((Rs+Rp)/2).toPrecision(5); 62 document.getElementById("Rs").innerHTML=Rs.toPrecision(5); 63 document.getElementById("Rp").innerHTML=Rp.toPrecision(5); 64 phi_s=rad2deg(Complex.car2pol(Rs_complex).im); 65 phi_p=rad2deg(Complex.car2pol(Rp_complex).im); 66 document.getElementById("phi_s").innerHTML=phi_s.toFixed(3*(phi_s!=0&&phi_s!=180&&phi_s!=-180)); 67 document.getElementById("phi_p").innerHTML=phi_p.toFixed(3*(phi_p!=0&&phi_p!=180&&phi_p!=-180)); 68 69 n_abs=Math.sqrt(Math.pow(n0,2)+Math.pow(k0,2)); 70 //Brewster's angle 71 direction=="in"?θ_b=rad2deg(Math.atan(n_abs)):θ_b=rad2deg(Math.atan(1/n_abs)); 72 document.getElementById("θ_b").innerHTML=θ_b.toFixed(3); 73 //Critical angle (only for escaping beam) 74 if(direction=="out"){ 75 if(n_abs>=1)θ_c=rad2deg(Math.asin(1/n_abs));//conventional materials 76 else θ_c=rad2deg(Math.asin(n_abs));//metamaterials with -1<n<1 77 document.getElementById("θ_c").innerHTML=θ_c.toFixed(3); 78 document.getElementById("CriticalAngle").style.display="inline"; 79 } 80 else document.getElementById("CriticalAngle").style.display="none"; 81} 82 83function reflection_plot(){ 84 r_plot_rp=document.getElementById('r_plot_rp').checked; 85 sessionStorage.setItem("r_plot_rp",r_plot_rp); 86 r_plot_rs=document.getElementById('r_plot_rs').checked; 87 sessionStorage.setItem("r_plot_rs",r_plot_rs); 88 r_plot_r=document.getElementById('r_plot_r').checked; 89 sessionStorage.setItem("r_plot_r",r_plot_r); 90 r_plot_logy=document.getElementById('r_plot_logy').checked; 91 sessionStorage.setItem("r_plot_logy",r_plot_logy); 92 Rs_array=new Array(); 93 Rp_array=new Array(); 94 R_array=new Array(); 95 i=0; 96 for(θ=0;θ<=90;θ+=0.1){ 97 sin1=Complex.sin(new Complex(deg2rad(θ),0)); 98 sin2=Complex.mult(Complex.div(n1, n2),sin1);//sin2=n1/n2*sin1 99 cos1=Complex.sqrt(Complex.sub(Complex.one,Complex.pow(sin1,2))); 100 cos2=Complex.sqrt(Complex.sub(Complex.one,Complex.pow(sin2,2))); 101 Rs_complex=Complex.div(Complex.sub(Complex.mult(n1,cos1),Complex.mult(n2,cos2)),Complex.add(Complex.mult(n1,cos1),Complex.mult(n2,cos2))); 102 Rp_complex=Complex.div(Complex.sub(Complex.mult(n1,cos2),Complex.mult(n2,cos1)),Complex.add(Complex.mult(n1,cos2),Complex.mult(n2,cos1))); 103 Rs=Complex.abs2(Rs_complex); 104 Rp=Complex.abs2(Rp_complex); 105 Rs_array[i]=[θ,Rs]; 106 Rp_array[i]=[θ,Rp]; 107 R_array[i]=[θ,(Rs+Rp)/2]; 108 i++; 109 } 110 r_plot_logy ? y_axis_type='logarithmic' : y_axis_type='linear'; 111 chart=new Highcharts.Chart({ 112 chart:{renderTo:'r_plot_container',type:'line',zoomType:'xy'}, 113 plotOptions:{line:{marker:{enabled:false}}}, 114 title:{text:0}, 115 xAxis:{title:{enabled:true,text:'Angle of incidence, deg.'},gridLineWidth:1,min:0,max:90.01,tickInterval:10}, 116 yAxis:{title:{text:'Reflectance'},lineWidth:1,max:1,type:y_axis_type}, 117 //yAxis:{title:{text:'Reflectance'},lineWidth:1,min:0,max:1,tickInterval:0.2}, 118 tooltip:{shared:true,crosshairs:true, 119 formatter:function(){ 120 var s='<b>'+this.x.toFixed(1)+'°</b>'; 121 $.each(this.points,function(i,point){s+='<br/>'+point.series.name+': '+point.y.toFixed(5);}); 122 return s; 123 } 124 }, 125 //legend:{layout:'vertical',align:'left',verticalAlign:'top',x:60,y:0,floating:true,borderWidth:0}, 126 legend:{enabled:false}, 127 credits:{href:"https://refractiveindex.info",text:"RefractiveIndex.INFO",position:{align:'right',x:-25,verticalAlign:'top',y:30},style:{fontFamily:'cursive',fontSize:'10'}}, 128 exporting:{filename:"reflectance",}, 129 navigation:{buttonOptions:{verticalAlign:'bottom',y:0}}, 130 series:[{name:'P-polarized',color:'#AA4643',data:Rp_array,visible:r_plot_rp},{name:'S-polarized',color:'#4572A7',data:Rs_array,visible:r_plot_rs},{name:'Non-polarized',color:'#89A54E',data:R_array,visible:r_plot_r}] 131 }); 132}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.