szukanie zaawansowane
 [ Posty: 4 ] 
Autor Wiadomość
Mężczyzna Offline
PostNapisane: 21 paź 2014, o 14:09 
Użytkownik

Posty: 3
Lokalizacja: Polska
Witam.
Zanim przejdę do problemu, zacznę od krótkiego wprowadzenia.
Piszę program, który ma symulować bieg promienia światła przez soczewkę sferyczną (pełne 3D).
Doszedłem do momentu, w którym mam :
wektor promienia,
punkt z którego promień biegnie,
punkt kolizji promienia ze sferą,
wektor normalny do sfery w punkcie kolizji,
i punkt środka sfery oczywiście.

i tu pojawia się problem, gdyż promień ten powinien ulec refrakcji i zmianie wektora - kąt padania/kąt odbicia. Kombinowałem i nic z tego nie wyszło. Nie mam bladego pojęcia jak obrócić wektor promienia o odpowiedni kąt w 3D, na płaszczyźnie to nie problem. Kwestia wyprowadzenia kąta załamania jest banalna, problemem jest obrócić wektor o ten kąt. Wydaje mi się, że wektor padania, załamania i wektor normalny w punkcie kolizji leżą w jednej płaszczyźnie ale za bardzo mi to nie pomogło :S

Pozdrawiam. Liczę na waszą pomoc ;] ps. mam nadzieję, że temat założyłem w dobrym miejscu ^^
Góra
Mężczyzna Offline
PostNapisane: 25 paź 2014, o 12:37 
Użytkownik

Posty: 70
Lokalizacja: Warszawa
hm... dopiero zaczynam algebrę liniową, ale wpadłem na taki pomysł:

skoro mamy obrócić wektor w jakiejś ustalonej płaszczyźnie, to powinno się dać zrobić tak, by przedstawić te dwa wektory w 2D. gdzie to 2D to ta płaszczyzna.
nazwijmy go \vec w = [a,b]. Znamy a, znamy b.
chcemy go obrócić o zadany kąt \alpha tak, aby otrzymać wektor \vec v=[c,d]
Ponieważ go tylko obracamy, to a^2+b^2=c^2+d^2 \\
\therefore d=\sqrt{a^2+b^2-c^2}.

\cos\alpha=\frac{|\vec w|\cdot|\vec v|}{ac+bd} =\frac{|\vec w|^2}{ac+bd}\\
(ac+bd)\cos\alpha=a^2+b^2\\
(ac+b\cdot \sqrt{a^2+b^2-c^2} ) \cos \alpha = a^2+b^2 \\

masz zatem implicytnie funkcję c. Jeśli wyznaczysz jakoś c, to masz i d. (uwaga na znaki plus/minus)
może Ci się przyda. Bo tylko c,d są niewiadomymi, reszta to dane.

dalej widzę żmudne rachunk: pierwiastek na prawo, reszta na lewo. Przyłożyć stronami do kwadratu.
Jak się przyjżysz, to masz funkcję kwadratową. :) A to już chyba nie problem ;)
Uważaj na znaki plus/minus.
Góra
Mężczyzna Offline
PostNapisane: 25 paź 2014, o 16:09 
Użytkownik
Avatar użytkownika

Posty: 1849
Lokalizacja: Warszawa
calgonit napisał(a):
Nie mam bladego pojęcia jak obrócić wektor promienia o odpowiedni kąt w 3D, na płaszczyźnie to nie problem. Kwestia wyprowadzenia kąta załamania jest banalna, problemem jest obrócić wektor o ten kąt.


Zatem załóżmy, że wektor jednostkowy \vec{w}_2 powstaje w wyniku przekształcenia wektora jednostkowego \vec{w}_1 przy obrocie o kąt \alpha, w płaszczyźnie prostopadłej do wektora jednostkowego \vec{n} (przypomnij sobie równanie normalne płaszczyzny).

Zatem wektory \vec{w}_1,  \vec{w}_2 leżą w tej samej płaszczyźnie.
Kąt pomiędzy nimi wynosi \alpha. Z tych faktów oraz z własności iloczynu skalarnego dostajemy układ równań:

\begin{cases}  \vec{w}_1  \cdot  \vec{n}=0  \\  \vec{w}_2  \cdot   \vec{n}=0 \\  \vec{w}_1  \cdot  \vec{w}_2=\cos \alpha  \end{cases}

To powinno zadziałać.
Góra
Mężczyzna Offline
PostNapisane: 7 lis 2014, o 00:13 
Użytkownik

Posty: 3
Lokalizacja: Polska
Dziękuje za odpowiedź. Problem rozwiązałem stosując kwatermiony. Pozwalają obracać punkt w przestrzeni dookoła osi tworzonej przez wektor. Podsyłam link do filmu na YT. Pan Mateusz z YT doskonale wytłumaczył ten problem. Tak czy inaczej dziękuję za odpowiedzi i poświęcony czas :)

Link do filmu https://www.youtube.com/watch?v=ZgOmCYfw6os

Link do momentu gdzie zaczyna tłumaczyć o obrotach
http://youtu.be/ZgOmCYfw6os?t=16m50s
Góra
Utwórz nowy temat Odpowiedz w temacie  [ Posty: 4 ] 


 Zobacz podobne tematy
 Tytuł tematu   Autor   Odpowiedzi 
 wyznacz współrzędne wektora - zadanie 4  cytrynka114  11
 Długość wektora  Michal_Walczuk  1
 Rzut prostokątny wektora  olsson  1
 prosta równoległa do wektora  major37  1
 obliczyć długość wektora na podstawie wektorów prostopadłych  okludyna  18
 
Atom [Regulamin Forum] [Instrukcja LaTeX-a] [Poradnik] [F.A.Q.] [Reklama] [Kontakt]
Copyright (C) Karpatka.pl