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”