1 van 1

Hoe de brekingswet (Snellius ) in 3dVector-vorm om te keren?

Geplaatst: za 12 nov 2022, 10:23
door crz_06
Is er een eenvoudige manier om de brekingswet (De wet van Snellius ) in 3dVector-vorm om te keren? M.a.w., als de invallende en uitgezonden 3d vectoren 𝐢 en 𝐭 (beide met norm = 1) bekend zijn, hoe vind je dan de normaalvector van het grensoppervlak (tussen media met brekingsindex n1 en n2, resp.) die nodig zijn om de gewenste richtingsverandering te bereiken door breking?

Ik heb nog geen simpele oplossing gevonden, dus elke suggestie wordt gewaardeerd. Wellicht dat in deze Youtube video een uitleg wordt gegeven maar ik heb geen wiskundige of programmer achtergrond, dus eventuele oplossingen met quaternionen kan ik zo snel niet op waarde schatten).
Als er een formule bestaat wil ik die uiteindelijk toepassen in een Python code in mijn CAD programma.
Afbeelding

Re: Hoe de brekingswet (Snellius ) in 3dVector-vorm om te keren?

Geplaatst: za 12 nov 2022, 12:26
door Xilvo
Ik kom op een normaalvector \(\vec{n}=\vec{i}+\frac{n_2}{n_1}\vec{t}\).
Die is dan nog niet genormeerd.

Re: Hoe de brekingswet (Snellius ) in 3dVector-vorm om te keren?

Geplaatst: za 12 nov 2022, 13:39
door Xilvo
Toelichting:
\(\frac{n_2}{n_1}=\frac{\sin \theta_1}{\sin \theta_2}\)

De normaalvector moet in het vlak van \(\vec{i}\) en \(\vec{t}\) liggen en er dus een lineaire combinatie van zijn: \(\vec{n}=b(\vec{i}+a\vec{t})\) waarin \(b=\frac{1}{|\vec{i}+a\vec{t}|}\) een factor is om de lengte 1 te maken.

De lengte van het kruisproduct van twee eenheidsvectoren is gelijk aan de sinus van de hoek ertussen.
\(\sin \theta_1=|\vec{i}\times \vec{n}|\) en \(\sin \theta_2=|\vec{t}\times \vec{n}|\)

\(\frac{n_2}{n_1}=\frac{|\vec{i} \times \vec{n}|}{|\vec{t} \times \vec{n}|}=\frac{b|\vec{i}\times\vec{i}+a\vec{i}\times\vec{t}|}{b|\vec{i}\times\vec{t}+a\vec{t}\times\vec{t}|}=\frac{|a\vec{i}\times\vec{t}|}{|\vec{i}\times\vec{t}|}\)

waaruit volgt dat \(a=\frac{n_2}{n_1}\)