Stronę tą wyświetlono już: 11144 razy
Poznane już zostały macierze obrotu Mo oraz macierze kosinusów kierunkowych Mc w związku z czym czas najwyższy dobrać się do macierzy odbić lustrzanych.
Odbicia lustrzane w układzie 2W względem osi x i y
Zanim przejdę do wyprowadzenia wzoru na macierz odbicia lustrzanego, rozpatrzę tutaj dwa najprostsze z możliwych przypadków odbić lustrzanych, którymi są odbicie względem osi x i odbicie względem osi y. Zerknijmy w tym celu na rysunek 1 i odpowiedzmy sobie na pytania: jak do licha będzie wyglądała macierz odbicia lustrzanego dla osi x.
Powróćmy do pytania: jaką macierz trzeba utworzyć, aby przemnożona z wektorem V dała w wyniku wektor V' stanowiący odbicie lustrzane wektora V względem osi x. Odpowiedź jest banalnie prosta, ponieważ wystarczy zauważyć, że wypadkowaVx=Vx' a Vy=-Vy'. Z tego też wniosek, że macierz odbicia lustrzanego względem osi x musi wyglądać następująco:
Jeżeli weźmie się jakiś wektor i pomnoży z macierzą odbicia lustrzanego względem osi x z równania [1], otrzyma się punkt lustrzanego odbicia względem tejże osi.
Podobnie sprawa się ma z odbiciem względem osi y, co obrazuje rysunek 2.
Macierz odbicia lustrzanego dl osi y będzie wyglądała w sposób następujący:
Odbicie lustrzane względem dowolnej osi w układzie 2W
Wyobraźmy sobie teraz taką sytuację, że jest sobie prosta przechodząca przez początek układu współrzędnych, względem której należy wykonać odbicie lustrzane. Załóżmy też, że dany jest kąta α, jaki tworzy ta prosta z osią x. I teraz zastanówmy się, co trzeba zrobić, aby otrzymać lustrzane odbicie? No, na razie nie wiemy jak odbić względem prostej nachylonej pod kątem α, ale wiemy jak dobijać względem osi x, a więc obróćmy lusterko wraz z odbijanym punktem o kąt -α, następnie zróbmy odbicie lustrzane tego punktu względem osi x i na koniec obróćmy nasze lusterko wraz z wektorem odbitym o kąt α. W ten sposób wyprowadzić można ogólny wzór na odbicie wektora względem osi ułożonej pod dowolnym kątem α.
Rozpiszmy więc nasze równanie wyznaczające macierz lustrzanego odbicia względem osi nachylonej o kąt α:
Końcowa postać obliczeń [3] wynika z zastosowania [14] oraz [15] z strony Matematyka → Funkcje → Funkcje trygonometryczne. Na poniższym rysunku widać animację z zastosowaniem wzoru [3] w praktyce.
Możliwe jest również rozpisanie wersji wzoru [3] z zastosowaniem macierzy kosinusów kierunkowych dla danego wektora kierunkowego Vk:
Gdzie ik oraz jk są wersorami, które wylicza się za pomocą wzorów [1] oraz [2] z strony Matematyka → Wektory → Obrót wektora za pomocą wektora kierunkowego.
Odbicie lustrzane z powyższej animacji obiektu w przestrzeni 3W przez płaszczyznę obracającą się względem osi z pokazuje animacja z rysunku 5.
Odbicia lustrzane w 3W
Jeżeli dany jest wektor W, którego wartość |W|≠0, to wersor tego wektora może posłużyć do wyznaczenia macierzy odbicia lustrzanego względem płaszczyzny prostopadłej do wektorów W oraz n poprzez zastosowanie następującego wzoru:
gdzie:
- I - macierz jednostkowa;
- n - wersor wektora W;
- nT - transpozycja wersora wektora W
Jeżeli kogoś interesuje wyprowadzenie tego wzoru, to odsyłam do wykładu na youtube gdzie zostało to omówione bardzo dokładnie. Ja jedynie pokażę tutaj jeszcze dwa przykłady szczególnych rodzajów odbić. Pierwszy z nich dotyczy odbicia względem płaszczyzny prostopadłej do płaszczyzny XZ i obracającej się względem osi y.
Ostatni przypadek szczególny to odbicia względem płaszczyzn prostopadłych do płaszczyzny YZ, animacja tego przypadku widoczna jest na rysunku 7.
Dla przykładowego ogólnego przypadku obracanej płaszczyzny względem osi z, której początkowy wektor prostopadły poniżej zamieszczam animację.
Odbicie lustrzane płaszczyzną daną równaniem
Zdarza się czasami, że dane jest następujące ogólne równanie płaszczyzny płaskiej:
I pierwsze spostrzeżenie jest takie, że gdy parametr D≠0, to płaszczyzna nie przechodzi przez początek układu współrzędnych. W takim przypadku trzeba się pozbyć tego parametru D przesuwając płaszczyznę o wektor. Ten wektor jest dowolnym punktem leżącym na danej płaszczyźnie, ja jednak wybiorę sobie punkt, którego wypadkowa z dla x=0 i y=0 przyjmuje następującą wartość:
Szukany wektor przesunięcia płaszczyzny ma więc następującą postać:
Smutna wiadomość jest taka, że dany nam wektor przesunięcia Wp trzeba również dodać do wszystkich odbijanych wektorów.
Dla uproszczenia sprawy załóżmy, że równanie płaszczyzny ma postać z parametrem D=0:
Zadanie sprowadza się do znalezienia i unormowania dowolnego wektora normalnego tejże płaszczyzny. Wektor normalny płaszczyzny to nic innego jak wektor prostopadły do płaszczyzny. Jak więc wyznaczyć ten wektor? Otóż tak się składa, że parametry A, B oraz C tworzą taki wektor normalny w następujący sposób:
Jak już dalej postępować z takim wektorem normalnym Wn była mowa już wcześniej.
Odbicie lustrzane płaszczyzną daną trzema wektorami
Jeżeli dane są trzy wektory V1, V2 i V3 takie, że nie są one współliniowe to jako należy stworzyć dwa wektory zastępcze VA i VB w sposób następujący:
Wektor normalny Vn można wyznaczyć korzystając z iloczynu wektorowego, czyli za pomocą następującego wzoru:
W znacznie prostszym przypadku, gdy dane są dwa wektory V1 i V2, które nie są współliniowe i wyznaczają jedną płaszczyznę w przestrzeni, w takim przypadku wzór [13] przyjmuje postać następującą:
Jak dalej postępować z takim wektorem normalnym Vn była mowa już wcześniej.
Odbicie lustrzane za pomocą macierzy obrotu.
Dla uproszczenia załóżmy, że dany jest wektor normalny Vn ale nie zapisany we współrzędnych kartezjańskich jako wypadkowe x, y i z lecz we współrzędnych sferycznych jako promień R, kąt α, jaki tworzy rzut prostopadły wektora w współrzędnych kartezjańskich na płaszczyznę XY z osią x oraz kąt Θ zawarty pomiędzy wcześniej wspomnianym rzutem na os XY a wektorem zapisanym we współrzędnych kartezjańskich.
Wyraźmy sobie współrzędne sferyczne w współrzędnych kartezjańskich:
Cała sztuczka polega na tym, aby obrócić płaszczyznę, przez którą przechodzi wektor normalny Vn będącą płaszczyzną prostopadłą do płaszczyzny XY o kąt -α w sposób następujący:
Jak widać wektor Vn obrócony o kąt -α musi się znaleźć w płaszczyźnie XY. Wektor Vn->XY został pokazany na rysunku 10.
Pozostało już tylko obrócić wektor Vn->XY tak, aby pokrył się on z osią X układu współrzędnych kartezjańskich. Zrobić to można mnożąc wektor Vn->XY przez macierz obrotu względem osi y o kąt -Θ:
Po obróceniu wektora Vn->XY otrzymuje się wektor Vn->X, który musi być równoległy do osi x (tak jak to pokazano na rysunku 11).
Składając w całość macierze z wyrażenia [16] oraz [17] tworzy się macierz obrotu dla dowolnego wektora V.
Dzięki macierzy Mo można obrócić dowolny wektor V wraz z wektorem normalnym Vn doprowadzając tym samym do obrócenia płaszczyzny lustrzanego odbicia w płaszczyźnie YZ, a macierz odbicia względem tej płaszczyzny jest następująca:
Ostatecznie więc odbicie lustrzane za pomocą macierzy obrotów Mo będzie wyglądać następująco:
Można oczywiście znaleźć wzór przeliczający współrzędne punktu zapisanego w układzie sferycznym i są to funkcje związane z arsin-usem i arcos-nusem.
Odbicie lustrzane przy użyciu macierzy kosinusów kierunkowych
Ostatnim znanym mi sposobem uzyskiwania obrazu odbitego przez płaszczyznę prostopadłą do pewnego wektora normalnego Vn jest metodą składania obrotów za pomocą macierzy kosinusów kierunkowych. Metoda w zasadzie podobna do poprzedniej, z tą tylko różnicą, że tutaj nie będziemy operować na kątach a na wersorach.
W pierwszej kolejności obrócić należy płaszczyznę prostopadłą do płaszczyzny XY za pomocą wektora kierunkowego. Wektorem kierunkowym jest wektor Vn z pominięciem składowej Vn->z. Na rysunku 12 można zobaczyć wersory wektora kierunkowego ixy oraz jxy, które należy wyznaczyć.
Wyznaczmy więc potrzebne wersory w następujący sposób:
W powyższych wzorach oznaczenie ->x oznacza wyciągnięcie danej wypadkowej wektora, w tym przypadku wypadkowej x
Skoro znane są już wersory, to można już śmiało tworzyć macierz kosinusów kierunkowych dla płaszczyzny XY w sposób następujący:
Obracamy nasz wektor normalny Vn tak, aby pokrywał się on z płaszczyzną XZ:
Wektor kierunkowy Vn obrócony względem osi Z do płaszczyzny XZ można zobaczyć teraz na poniższym rysunku.
Wyznaczmy sobie wersory iXZ oraz jXZ wektora kierunkowego Vn->XY w sposób następujący:
Macierz kosinusów kierunkowych Mc->XZ:
Poskładajmy w jedną całość macierz obrotu:
Pozostało już napisanie równania odbicia lustrzanego:
Poprzez przemnożenie wektora normalnego Vn przez macierz obrotu Mo wektor ten będzie równoległy do osi x jak na rysunku 14.
Na koniec niczym wisienka na torcie, powiem Wam, że można to całe składanie macierzy obrotu Mo, która jest także macierzą kosinusów kierunkowych Mc zrealizować w dużo prostszy sposób poprzez obliczenie wersorów i', j' oraz k' pokazanych na rysunku 15.
[rys] src="rysunki/obr3d.png" alt="Wersory i', j' oraz k' niezbędne do utworzenia macierzy obrotu Mo" nr="15" description="Wersory i', j' oraz k' niezbędne do utworzenia macierzy obrotu Mo."Wersor i' można (a nawet trzeba) wyznaczyć normując wektor normalny Vn w sposób następujący:
Wersor j' prostopadły do niego i leżący na płaszczyźnie odbicia lustrzanego wyznacza wzór:
Oraz trzeci wersor k' prostopadły do pozostałych dwóch:
Teraz pozostaje nic innego, jak poskładać macierz obrotu Mo w sposób następujący: