2017-02-02 1 views
1

Snell's law besagt, dass das Verhältnis der Sinusse des Einfallswinkels und Brechung zu dem Kehrwert des Verhältnisses der Brechungsindices der angegebenen Materialien entsprechen:Snells Gesetz - wie mit ungültigen Werten in asin() umgehen?

\frac{\sin{\Theta _{1}}}{\sin{\Theta _{2}}} = \frac{n _{2}}{n _{1}}

I ein einfaches Programm implementieren wollte um das Gesetz zu visualisieren. Da \Theta _{1}, n _{1} und n _{1} bekannt sind, ist hier, wie ich berechnen \Theta _{2}:

theta2 = asin((sin(theta1) * n1)/n2); 

Das Problem ist, dass für bestimmte Werte von n _{1} und n _{1} (zum Beispiel 1,52 und 1,0 für Glas und Luft beziehungsweise), das Ergebnis der (sin(theta1) * n1)/n2 kann für größere Winkel mehr als 1,0 betragen, wodurch asin NaN zurückgegeben wird. Die Art, wie ich damit klarkomme, ist zu überprüfen, ob (sin(theta1) * n1)/n2 größer als 1,0 ist, und wenn das der Fall ist, ziehen Sie zuerst 1 davon ab, berechnen Sie \Theta _{2} mit dem neuen Wert und fügen Sie dann 0.5 * M_PI (oder 90,0 Grad) hinzu. Gibt es einen besseren Weg?

+0

Warum fügen Sie den Hack für NaN-Werte von 'Theta2' hinzu? Entspricht das nicht der totalen inneren Reflexion? Dies ist der Fall, wenn kein gebrochener Strahl vorhanden ist. https://en.wikipedia.org/wiki/Snell's_law#Total_internal_reflection_and_critical_angle –

Antwort

8

Aus den gleichen Wikipedia page, dass Sie verbunden:

Wenn du Licht von einem Medium mit einem höheren Brechungsindex auf einen mit einem niedrigen Brechungsindex, Snell-Gesetz in einigen Fällen zu verlangen scheint (wann immer der Winkel Einfall ist groß genug), dass der Sinus des Brechungswinkels größer als eins ist. Dies ist natürlich unmöglich, und das Licht wird in solchen Fällen vollständig durch die Grenze reflektiert, ein Phänomen bekannt als total internal reflection.

Also, Sie tun es falsch. Überprüfen, ob dieser Wert höher als 1 ist, ist eine gute Sache, wenn Sie vermeiden wollen, mit NaNs umzugehen; aber wenn es passiert, benutzen Sie auf keinen Fall einen mathematischen Trick, um das zu umgehen! Es hat eine genaue physikalische Bedeutung, und diese Bedeutung muss beibehalten werden!

+0

Darüber hinaus können Sie [Fresnelsche Gleichungen] (https://en.wikipedia.org/wiki/Fresnel_equations#Power_or_intensity_equations) verwenden, um die Intensität des zu berechnen reflektierte und übertragene (gebrochene) Wellen. – nibot