r Grafika komputerowa Prekstałcenia 2D i 3D. Prekstałcenia 2D. Translacje (presunięcia) Punkt na płascźnie (,) możem presunąć na nowa pocję oając o współręnch punktów wielkość presunięcia. Dla każego punktu P(,), któr ma bć presunięt o nowego punktu P (, ) o jenostek włuż osi o i jenostek włuż osi o, możem efiniować operację presunięcia jako + + Jeżeli współręne punktów prestawim jako wektor wiersowe P [ ] [ ] P T [ ] to powżse równanie można apisać w następując sposób P P+T.2 Skalowanie W celu preskalowania obiektu wuwmiarowego, należ premnożć współręne punktów, wnacające wierchołki figur, pre opowienie współcnniki skalujące s s W apisie macierowm powżse równania można prestawić a pomocą następującego apisu s [ ] [ ] s powżsch worów wraźnie wiać, iż skalowanie obiektu może obwać się nieależnie la osi ora osi, co może bć wkorstane o eformacji obiektu..3 Obrot Operacja obrotu jest niewątpliwie najbariej skomplikowanm prekstałceniem i polega na obróceniu współręnch określonego punktu wokół śroka ukłau współręnch P(,) r P(,) a b Rs. Obrót punktu P(,) wokół śroka ukłau współręnch - -
Poniżej amiescone jest wprowaenie worów opisującch obrot wokół osi (prostopałej o ekranu monitora, a co a tm iie nie wiocnej na powżsm rsunku) cos β r sin β r r cos( α + β ) r sin( α + β ) r [ cosα cos β sinα sin β ] r [ sinα cos β + cosα sin β ] r cosα sinα r r r sinα + cosα r r Ostatecnie współręne punktu P (, ), powstającego w wniku obrotu punktu P(,) o kąt α wokół śroka ukłau współręnch, można wnacć następującch ależności cosα sinα sinα + cosα Analogicnie można wprowaić wor la poostałch osi. Wokół osi : Wokół osi : cosα sinα cosα sinα sinα + cosα sinα + cosα 3a) apis w postaci macierowej W postaci macierowej operacje obrotu można apisać cos( α) sin( α) [ ] [ ] cos( α) sin( α) ; jeżeli prjmiem R sin( α) cos( α) sin( α) cos( α) P [ ] [ ] P to P P R W prpaku operacji macierowch można stosować różną konwencje wkonwania operacji tn. można mnożć wektor wiersowe pre maciere lub maciere pre wektor kolumnowe. Także pr mianie kolejności iałań należ pamiętać o transpocji macier T T P M M P ( ) T.4 Współręne jenorone ora macierow apis prekstałceń 2D Wsstkie powżse prekstałcenia można apisać w następując sposób P T + P - 2 -
P P P S P R Jak wiać operacje obrotu i skalowania można okonać a pomocą pojencego mnożenia współręnch punktu pre opowienio łożoną macier, niestet nie można tego okonać operacją translacji la otchcasowej postaci macier. W celu ujenolicenia operacji okonwanch na macierach należ wraić współręne punktów w ukłaie współręnch jenoronch. W ukłaie współręnch jenoronch należ oać trecią współręną la punktu, mówim, że wa estaw współręnch jenoronch (,,w) i (,,w ) repreentują ten sam punkt, wte i tlko wte, g jeen jest wielokrotnością rugiego. Prkłaowo, współręne (2, 4,.5) i (4, 8, 3) są repreentacjami tego samego punktu. Na postawie powżsej efinicji można auważć, że każ punkt ma wiele różnch repreentacji we współręnch jenoronch. Powrót ukłau współręnch jenoronch o prestreni 2D obwa się w wniku ielenia każej e współręnch pre skłaową w [/w, /w,]. Doanie kolejnej współręnej nie może w żanm wpaku powoować mian repreentacji punktu w prestreni, atem współręna roserająca wektor musi spełniać następujące warunki *w; *w; wnioskiem płnącm tch worów jest wartość współręnej w. W wiąku powżsm macier translacji musi mieć wmiar 33 i prbiera następującą postać [ ] maciere obrotów i skalowania prestawione są poniżej. [ ] cosα sinα sinα cosα [ ] s s W efekcie ujenolicenia romiarów macier możem łożć maciere: obrotów, translacji ora skalowania w jeną macier, mnożąc kolejno wmienione maciere. Macier uskana w ten sposób nawana jest cęsto macierą transformacji. Tworąc macier transformacji należ pamiętać, że mnożenie macier nie jest operacją premienną. Prkłaowo: chcem obrócić wokół osi pewien ocinek a następnie presunąć go o pewien wektor. Jeżeli macier obrotu premnożm pre macier translacji to uskam amieron efekt (akłaając, że śroek ocinaka jest w punkcie (,)), jenak w prpaku mian kolejności mnożeń uskam efekt ruchu ocinka po łuku, którego promień bęie równ wektorowi presunięcia. Po transformacji współręnch punktu, pr użciu macier transformacji należ pamiętać o poieleniu współręnej i pre współręną w - 3 -
2. Prekstałcenia 3D P(,,) Rs 2. Punkt w prestreni trójwmiarowej. Do opisu punktu w prestreni należ użć trech współręnch P(,,). Onacenie osi w moelu 3D jest sprawą umowną, jenak apominając na chwilę o trecim wmiare, o rau wiać, iż najbariej naturalne bęie opisanie ekranu monitora osiami i. G umsłowim sobie ten fakt ocwistm staje się astosowanie osi o określenia oległości mię obserwatorem (powierchnią ekranu) a obiektem w prestreni 3D. Doatkowo należ wrócić uwagę, że można astosować wa tp ukłau współręnch, w jenm współręne bęą rosł w głąb monitora, natomiast w innm poejściu bęą prbierał cora to mniejse wartości. Pierws tp ukłau nawan jest cęsto lewoskrętnm i jego bęiem użwać. Ogólna asaa prekstałceń 3D jest rowinięciem prekstałceń 2D, także główną mianą jest oanie współręnej, natomiast w apisie macierowm bęiem operować na macierach o romiarach 44. Poniżej poane są postaci macier opisującch opowienie operacje w prestrenie 3D. 2. Macierowe równania opisujące operacje obrotów. Macier rotacji wokół osi. [ w ] [ w] cosα sinα sinα cosα - 4 -
Macier rotacji wokół osi. [ w ] [ w] cosα sinα sinα cosα Macier rotacji wokół osi. [ w ] [ w] cosα sinα sinα cosα b) Macierowe równania opisujące operacje translacji. [ w ] [ w] T T T 3. Transformacje ora wbór ukłau współręnch Transformacji można okonwać na wa sposob, w pierwsm akłaam, że ukła współręnch poostaje be mian, a jenie okonujem prekstałceń współręnch punktów brł, natomiast w innm poejściu, współręne brł poostawiam niemienione, a transformacji poajem ukła współręnch. Jeżeli prjrm się okłaniej otacającemu nas światu, ojiem o wniosku, że o realnego oworowania wielu jawisk museni jesteśm o użcia kilku lub kilkunastu ukłaów współręnch. Prkłaem może bć moelowanie ruchu samochou, ukłaem współręnch la samego samochou jest ukła współręnch świata, natomiast każe kół pojau umiescone jest we własnm ukłaie oniesienia, w którm wkonuje ruch wokół i ewentualnie (skręt kół). kolei każ ukłaów współręnch poscególnch kół umiescon jest w opowienim miejscu w ukłaie współręnch samochou. Animacja obiektu samochou wra kręcącmi się kołami polega na transformowaniu właściwch obiektów w ich własnch ukłaach oniesienia, a następnie okonania transformacji opowienich ukłaów współręnch. rugiej stron może się arć, że bęiem chcieli nać współręne obiektu, preniesionego jenego o rugiego ukłau współręnch. Prkłaem może bć poniżs rsunek, jak wiim punkt stojąc nasego punktu wienia w miejscu, w różnch ukłaach oniesienia prjmuje inne współręne. - 5 -
Uk Uk2 2 Uk3 8 Rs 3 Punk P umiescon w różnch ukłaach współręnch Jeżeli prjrm się uważniej to ojiem o wniosku, że naleienie współręnch punktu w ukłaie Uk nając jego koornat w ukłaie Uk2 sprowaa się o naleienia prekstałcenia owrotnego o prekstałcenia, które okonało transformacji pocątku ukłau współręnch Uk2 wglęem ukłau Uk. Jeżeli pre M m n prjmiem prekstałcenie, które mienia repreentacje punktu w ukłaie n na współręne w ukłaie m i jeżeli P m onaca współręne w ukłaie m, a P n onaca współręne w ukłaie n to m n P M m n P. W nasm prkłaie, w ukłaie Uk2 punkt P ma współręne (6,6), natomiast pocątek ukłau Uk2 jest umiescon w punkcie (4,2) ukłau Uk, także prekstałcenie ukłau Uk2 w Uk można smbolicnie apisać jako T(4,2). Postawiając o woru otrmujem współręne w ukłaie Uk. [ 6 6 ] [ 8 ] 4 2 gonie w otrmanm wnikiem w ukłaie Uk punkt P ma współręne (,8). Jeżeli auważm,że prekstałcenie ukłau Uk2 w ukła Uk polega na presunięciu ukłau Uk2 o wektor (-4,-2) lub ukłau Uk o wektor (4,2) to możem napisać M M stą. 2 2 m n M n m M także P n M m n P m Ogólnie można powieieć, że oblicenie współręnch punktu w określonm ukłaie współręnch sprowaa się o premnożenia koornat punktu pre macier owrotną o macier opisującej transformacje wbranego ukłau współręnch. 2 4. Transformacje kamer Transformacje kamer, c też okłaniej mówiąc wioku, polegają na ustaleniu położenia punktu obserwacji świata (obiektu), w jego ukłaie współręnch. Karowanie owolnego obiektu można wkonać na wa sposob. W pierwsm wkonujem ruch kamerą, poostawiając obiekt w miejscu, tak ab swm wiokiem obejmowała określone cęści brł. W innm poejściu można unieruchomić kamerę natomiast okonać opowieniego presunięcia ora rotacji obiektu. Efekt ogląan na ekranie w obu prpakach jest jenakow. e wglęu na operację rutowania akłaam, że kamera jest unieruchomiona i orientowana tak, że spogląa włuż osi, w jej oatnim kierunku. Pamiętając, o tm że kamera jest statcna, musim okonać transformacji współręnch obiektów, umiesconch w ukłaie współręnch świata, o ukłau współręnch kamer. Baując na informacjach punktu 3 wiem, że operacja taka sprowaa się o premnożenia - 6 -
wiem, że operacja taka sprowaa się o premnożenia współręnch każego punktów w ukłaie współręnch świata, pre macier owrotną o macier opisującej transformacje ukłau współręnch kamer. 5. Rutowanie i perspektwa anim ujrm trójwmiarow obiekt na monitore musim okonać prekstałcenia trójwmiarowego moelu awartego w pamięci komputera na jego wuwmiarow rut. asaę na jakiej opiera się ta operacja łatwo sobie wobraić patrąc na owoln premiot pre okno. Jeżeli każego punktu, obserwowanego obiektu, poprowaim prostą ocierającą o nasch ocu, to prosta w miejscu prejścia pre sbę aje rut punktu na płascnę. Dla ułatwienia akłaam, że płascna rutowania jest prostopała o osi i umiescona w oległości Płascna rutowania P(,,) P p ( p, p,) Rs 4 Rut punktu P(,,) na płascnę rutowania umiesconą w oległości rutnia P(,,) rutnia P(,,) p p Rs 5 Wiok rs. 4 włuż osi Rs 6 Wiok rs 4 włuż osi poobieństwa trójkątów możem apisać p ora prekstałca- jąc p ; p p ; powżsch worów wiać, że współręna opowiaa a efekt pomniejsania lub więksania brł wra ich oległością. Doatkowo należ auważć, że transformacji możem poawać jenie punkt, którch współręna. Równanie to można prestawić w postaci macierowej - 7 -
- 8 - M perspektw stą [ ] [ ] w W naleienie współręnch punktu P p, rsunku 4, sprowaa się o prelicenia współręnch jenoronch [,,,W] na współręne 3D pre ielenie każej e skłaowch pre wra W/ ora pominiecie współręnej W. [ ] W W W p p W innm poejściu można umieścić rutnie w punkcie natomiast śroek rutowania w punkcie, stuacja taka prestawiona jest na rsunku Rs.7 Wioki włuż osi, w alternatwnm sformułowaniu rutu Wnacenie macier perspektw la tak sformułowanego rutu sprowaa się o transformacji wceśniej utworonej macier o jenostek włuż osi. Powżsa macier powala na okonanie rutowania obiektów na płascnę umiesconą w punkcie i posiaającą punkt bieżności. Powżsa macier posiaa poważną waę otóż nie uwglęnia serokości kąta po jakim kamera obserwuje scenę Doatkowo należ wieieć, że cęść scen (lub obiektu) ogranicona prenią ora tlną powierchnią obcinającą wnaca tw. brłę wienia (rs 8). Wsstkie obiekt awarte wewnątr tej brł bęą wiiane pre kamerę (obserwatora) i ostaną narsowane na ekranie. Kstałt brł wienia eterminuje roaj rutowania trójwmiarowej scen na płascnę ekranu i tak, jeżeli brła ma kstałt prostopałościanu mam o cnienia rutami równoległmi it. Tpowm rutem jest rut perspektwicn. Dięki niemu uskujem łuenie, że obiekt bęące bliżej kamer są więkse natomiast wra oalaniem się opowienio się mniejsają. W takim prpaku brła wienia ma kstałt lekko ściętego ostrosłupa, utworonego pre pocje kamer (wierchołek) ora tlną płascnę obcinającą (postawa). Kąt, po jakim łącą się ścianki ostrosłupa w wierchołku określan jest pre kąt wienia kamer i powinien bć mniejs o 8. rutnia rutnia p P(,,) p P(,,)
Prenia płascna obcinająca Tlna płascna obcinająca fov *tan(fov/2) front Rs. 8 Wiok brł wienia włuż osi. roumienie sposobu tworenia macier uwglęniającej płascn obcinające ora kąt, po jakimi kamera wii scenę, ułatwim prjmując położenie punktu bieżności w oległości jenej jenostki o rutni, cli. Ocwiste jest, że kąt, po jakim wii kamera, jest bepośrenio wiąan wielkością samej rutni (rutnie można sobie wobraić jako powierchnię migawki kamer/aparatu, na której tworon jest obra). rutnia Wsokość rutni Serokość rutni Rs 9 Położenie rutni w płascźnie. Na powżsm rsunku prestawiona jest prkłaowa postać rutni, jeżeli punkt bieżności najuje się w oległości o płascn projekcji, to la kąta fov9 romiar rutni wnosą 22. więksając kąt wienia kamer jenoceśnie więksam romiar samej rutni, w wiąku tm współręne i punktów polegającch rutowaniu powinn polegać opowieniemu skalowaniu. Karując obiekt e miennmi kątami wienia kamer auważm, że obiekt bęie się wawał więks, jeśli kąt ostanie mniejson i owrotnie. W wiąku tm jako parametr skalując można wkorstać funkcję fov ctg gie fov jest katem wienia kamer w pionie lub poiomie. Także macier perspektw prjmuje następującą 2 postać - 9 -
w h fov ; w fov w ctg ; h ctg h ; 2 2 Parametr fov w i fov h są kątami wioku opowienio w poiomie i pionie, ich wartości powinn awierać się w preiale o o 8 < fov < 8. O powżsch informacji wiem, że współręne, wiocnch punktów, po operacji rutowania awierają się w preiale o - o. e wglęu na specfikę algortmu wkrwającego niewiocne powierchnie współręne, po rutowaniu, powinn się awierać w preiale o o, tn. preniej płascźnie obcinającej opowiaać bęie wartość, natomiast tlnej płascźnie wartość. W wsstkie punkt, którch współręne nie bęą się awierał w wmienionm preiale ostaną akwalifikowane jako niewiocne. Operacje skalowania współręnch można realiować pr pomoc następującego woru front ; gie front -oległość preniej płascn obcinającej o kamer; - oległość tlnej płascn obcinającej o kamer. Prjmując front front jako Q front macier rutowania (projekcji) prbiera ostatecnie następującą postać w h Q Q front 5. Macier skalowania pola wiualiacji Obsar ekranu lub okna, na którm rsowana jest grafika nawa się cęsto polem wiualiacji. W poprenim poroiale poano, że obra utworon bepośrenio na rutni ma najcęściej romiar 22, pr cm jego śroek leż w punkcie (,) rutni. aaniem macier skalowania pola wiualiacji jest preskalowanie wspomnianego obrau (22 punkt) o żąanej wielkości ora umiescenia preskalowanego obrau w opowienim punkcie ekranu. Należ pamiętać, że w ukłaie współręnch monitora punkt (,) najuje się w lewm, górnm rogu także można powieieć, że obra na rutni jest owrócon o gór nogami w stosunku o obrau w ukłaie współręnch monitora. Biorąc po uwagę wsstkie powżse informacje można stwierić, że każa e współręnch powinna With With ostać preskalowana pr pomoc następującego wrażenia + + 2 2 ; gie: współręna punktu na rutni; With serokość pola wiualiacji; - presunięcie pola wiualiacji wglęem pocątku ekranu. Analogicnie należ postąpić w prpaku skalowania współręnch, należ jenak pamiętać o owróceniu obrau - -
Height Height + + ; gie współręna punktu na rutni; Height wsokość pola 2 2 wiualiacji; - presunięcie pola wiualiacji wglęem pocątku ekranu. W apisie macierowm powżse prekstałcenia można apisać: With / 2 + With / 2 Height / 2 + Height / 2 6. Kanał renerowania (rsowania) Kanał renerowania można potraktować jako serię prekstałceń, prenosącch moel obiektu trójwmiarowego jego własnego ukłau współręnch o ukłau współręnch powierchni ekranu. Kanał renerowania może bć prestawion na poniżsm rsunku Prestreń lokalna obiektu Prekstałcenia o współręnch świata (macier transformacji) Prestreń świata (scen) Prekstałcenia wioku (macier wioku) Prestreń obserwatora (kamer) Prekstałcenia o prestreni ekranu -rutowanie -skalowanie pola wiualiacji Rs Kanał renerowania. Prestreń ekranu aania o wkonania w trakcie ćwiceń W oparciu o teoretcne wprowaenie i pliki nagłówkowe należ stworć następujące klas TVector2 TVector3 TVector4 TMacier - -