Macierz odbicia
Transkrypt
Macierz odbicia
Macierz odbicia Przez macierz odbicia będziemy rozumieć macierz, opisującą przekształcenie wyznaczające współrzędne punktu odbitego względem danej płaszczyzny. Dla większej przejrzystości oraz pełniejszego zrozumienia powyższe przekształcenie wyprowadzone zostanie w przestrzenie dwuwymiarowej i opisywać będzie odbicie punktu względem prostej opisanej równaniem ax + by + c = 0 Y obraz punktu p’ (px’,py’) wektor normalny do prostej (a’,b’) Punkt oryginalny p (px,py) X Jeżeli znormalizujemy współczynniki a, b równania prostej tak, aby b' = a' = a a2 + b2 b i to otrzymamy współrzędne wektora normalnego do prostej N=[a’,b’]. Znając a + b2 wektor normalny do prostej możemy go przedłużyć, tak aby jeden z jego końców znalazł się w punkcie p(px,py). W tym celu należy wyznaczyć odległość punktu p od prostej, korzystając ze wzoru na równanie prostej z normalizowanymi współczynnikami a'⋅ px + b'⋅ py + c = d . Przy wyznaczaniu współrzędnych przedłużonego wektora N’ możemy posłużyć się twierdzeniem Talesa. 2 d 1 a’ A Liczby 1 i d oznaczają moduły odpowiednio wektorów N i N’. Korzystając z powyższego rysunku możemy zapisać 1 d = stąd A = a '⋅d a' A Także współrzędne wektora N’ można zapisać wzorami [d ⋅ a ' d ⋅ b']. Wiedząc, że jeden z końców wektora N’ leży w punkcie p(px,py) współrzędne puntu, będącego obrazem względem prostej możemy obliczyć odejmując od każdej ze współrzędnych punktu p podwojoną odpowiednią współrzędną wektora N’. Ostatecznie współrzędne punktu p’ opisują następujące wzory px' = px − 2 ⋅ d ⋅ a ' ; py ' = py − 2 ⋅ d ⋅ b' W zapisie macierzowym powyższe przekształcenie ma następującą postać − 2 ⋅ a '⋅a '+1 − 2 ⋅ a '⋅b' 0 − 2 ⋅ a '⋅b' − 2 ⋅ b'⋅b'+1 0 − 2 ⋅ a '⋅c − 2 ⋅ b'⋅c 1 korzystając z tej macierzy należy do punktu dodać współrzędną z=1. Analogicznie, przekształcenie to można rozwinąć do postaci trójwymiarowej, w tym przypadku zamiast równania prostej używać będziemy równania płaszczyzny, wyrażonego wzorem ax + by + cz + d = 0 . Podobnie jak w przypadku poprzednim równanie płaszczyzny powinno mieć znormalizowane współczynniki a,b,c (są to współrzędne wektora normalne do płaszczyzny). Także uwzględniając tą informację możemy zapisać przekształcenie w postaci macierzowej . − 2⋅c⋅a − 2 ⋅ a ⋅ a + 1 − 2 ⋅ b ⋅ a − 2⋅a ⋅b − 2⋅b ⋅b +1 − 2⋅c⋅b − 2⋅a⋅c − 2⋅b⋅c − 2⋅c ⋅c +1 − 2⋅b⋅d − 2⋅c⋅d − 2⋅a⋅d 0 0 0 1 Przekształcenie to można wykorzystać do realizacji efektów bazujących na odbiciach wybranych obiektów np. w lustrze, marmurowej podłodze. Realizacja tego typu zadania sprowadza się do wyznaczenia równania płaszczyzny „lustra” oraz wyznaczenia macierzy odbicia. Podczas wykonywania transformacji punktów bryły, należy je mnożyć w pierwszej kolejności przez macierz transformacji świata, a następnie przez macierz odbicia i kolejne macierze. Poniżej prezentowany jest przykład realizacji odbić. Rys 2 Widok z programu “Mirror”