11 (528)











"Ręczne" modyfikacje współrzędnych

Operacje obrotu, translacji oraz skalowania można przedstawić za pomocą macierzy przez którą należy pomnożyć nasze współrzędne wierzchołka. Operację tę można zapisać w postaci jak poniżej:

Powyższe mnożenie współrzędnych X,Y,Z przez macierz można przedstawić za pomocą poniższych wzorów:



1. Macierz translacji:

a więc operację translacji można przedstawić za pomocą wzorów:

x' = x * 1 + y * 0 + z * 0 + 1 * Tx = x + Tx
y' = x * 0 + y * 1 + z * 0 + 1 * Ty = y + Ty
z' = x * 0 + y * 0 + z * 1 + 1 * Tz = z + Tz
gdzie:
x',y',z' - współrzędne wierzchołka po translacji
x,y,z - współrzędne wierzchołka przed translacją
Tx,Ty,Tz - wartości dla kolejnych osi X,Y,Z o jakie nastąpi translacja
[Patrz też: glTranslate();]

2. Macierz obrotu
a) wokół osi X

za pomocą wzorów:
y' = yo + (y - yo)*cos(kat)+(z-zo)*sin(kat);
z' = zo + (z - zo)*cos(kat) - (y-yo)*sin(kat);
b) wokół osi Y

za pomocą wzorów:
x' = xo + (x - xo)*cos(kat)-(z-zo)*sin(kat);
z' = zo + (z - zo)*cos(kat)+ (x-xo)*sin(kat);
c) wokół osi Z

za pomocą wzorów:
x' = xo + (x - xo)*cos(kat)+(y-yo)*sin(kat);
y' = yo + (y - yo)*cos(kat) - (x-xo)*sin(kat);
gdzie:
x, y, z - współrzędne wierzchołka przed obrotem
x', y', z' - po obrocie
xo, yo, zo - punkt wokół którego nastąpi obrót
kat - kąt o jaki nastąpi obrót
[Patrz też: glRotate();]

3. Macierz skalowania

za pomocą wzorów:
x' = x' * Sx
y' = y * Sy
z' = z * Sz
gdzie:
x', y', z' - współrzędne przed skalowaniem
x, y, z - po skalowaniu
Sx, Sy, Sz - mnożniki operacji skalowania (np. 2 oznacza powiększenie dwukrotne itd...)
[Patrz też: glScale();]

Korzystając z powyższych wzorów modyfikujemy współrzędne X,Y,Z wierzchołków poczym przekazujemy je do poleceń definicji prymitywu.






Wyszukiwarka

Podobne podstrony:
11 (311)
ZADANIE (11)
Psychologia 27 11 2012
359 11 (2)
11
PJU zagadnienia III WLS 10 11
Wybrane przepisy IAAF 10 11
06 11 09 (28)
info Gios PDF Splitter And Merger 1 11

więcej podobnych podstron