12-23-2017, 12:42 AM
Original Post (for a table of indices of reflection: http://edspi31415.blogspot.com/2017/12/o...angle.html)
Formulas Used
Reflected Angle: θr = θ
Transmitted Angel: θt = asin((n1 * sin θ)/n2)
Critical Angle: θc = asin(n1/n2), n2 > n1
Perpendicular Frensel Parameters (t, r):
t = (2 * n1 * cos θ) / (n1 * cos θ + n2 * cos θt)
r = (n1 * cos θ – n2 * cos θt) / (n1 * cos θ + n2 * cos θt)
Parallel Fresnel Parameters (t, r):
t = (2 * n1 * cos θ) / (n1 * cos θt + n2 * cos θ)
r = (n1 * cos θt – n2 * cos θ) / (n1 * cos θt + n2 * cos θ)
HP Prime Program FLATOPTIC
Formulas Used
Reflected Angle: θr = θ
Transmitted Angel: θt = asin((n1 * sin θ)/n2)
Critical Angle: θc = asin(n1/n2), n2 > n1
Perpendicular Frensel Parameters (t, r):
t = (2 * n1 * cos θ) / (n1 * cos θ + n2 * cos θt)
r = (n1 * cos θ – n2 * cos θt) / (n1 * cos θ + n2 * cos θt)
Parallel Fresnel Parameters (t, r):
t = (2 * n1 * cos θ) / (n1 * cos θt + n2 * cos θ)
r = (n1 * cos θt – n2 * cos θ) / (n1 * cos θt + n2 * cos θ)
HP Prime Program FLATOPTIC
Code:
EXPORT FLATOPTIC()
BEGIN
// 2017-12-17 EWS
// Solar Energy
// Change to degree
HAngle:=1;
// index of refraction
LOCAL L0:={1,1.0045,2.15,2.42,
1.52,1.31,2.65,1.47,
1.54,1.76,3.45,1.33};
LOCAL L1:={"Air","CO2",
"Cubic Zirconia","Diamond",
"Glass","Ice",
"Moissanite (SiC)","Pyrex",
"Salt (NaCl)","Sapphire",
"Silicon","Water"};
LOCAL L2:={"Perpendicular",
"Parallel",
"None"};
LOCAL n1,n2,k1,k2,θ,t,r;
LOCAL θc,θt,θr,x;
INPUT({{k1,L1},{k2,L1},θ,{x,L2}},
"Optic - Flat Interface",
{"Medium 1: ","Medium 2: ",
"Angle (°): ","Polarized?"}
);
// Calculation
PRINT();
θr:=θ;
PRINT("Reflect Angle: "+θr+"°");
n1:=L0(k1); n2:=L0(k2);
IF n2>n1 THEN
θc:=ASIN(n1/n2);
PRINT("Critical Angle: "+θc+"°");
END;
θt:=ASIN(n1*SIN(θ)/n2);
PRINT("Transmitted Angle: "+
θt+"°");
IF x==1 THEN
t:=(2*n1*COS(θ))/
(n1*COS(θ)+n2*COS(θt));
r:=(n1*COS(θ)-n2*COS(θt))/
(n1*COS(θ)+n2*COS(θt));
PRINT("t: "+t);
PRINT("r: "+r);
END;
IF x==2 THEN
t:=(2*n1*COS(θ))/
(n1*COS(θt)+n2*COS(θ));
r:=(n1*COS(θt)-n2*COS(θ))/
(n1*COS(θt)+n2*COS(θ));
PRINT("t: "+t);
PRINT("r: "+r);
END;
END;