Přednáška 7 Transformace D Transformace Transformace je proces, při kterém dochází ke změně poloh, orientace nebo velikosti jednotlivých zobrazovaných objektů (geometrie objektů. Transformace souřadnicového sstému Projekce (v 3D Lineární transformace: posunutí otočení změna měřítka zrcadlení zkosení Lineární transformace: T(v+w T(v + T(w T( λv λt(v! Pro některé lineární transformace NEEXISTUJE opačná (inverzní transformace Počítačová grafika, PV, UPCE-KID, [/] Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 Vektorová a rastrová grafika Souřadnicové sstém Vektorová grafika transformace se aplikuje na všechn (řídící bod (vrchol daného objektu. astrová grafika transformace se aplikuje na všechn piel rastru (více viz. přednáška. Nejpoužívanější SS jsou karteziánský a polární SS. r r.cos( r.sin( r + α arctg Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 3 Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 4
SSZ a USS Transformační matice USS Univerzální (Uživatelský souřadnicový sstém, světové souřadnice SSZ Souřadnicový sstém zařízení [piinx, piin] [, ] pi [3,767] [piax, pia] Počítačová grafika, PV, UPCE-KID, [/] pix Vztah přepočítávající obrazovkové souřadnice na reálné realx realinx + (pix piinx / dx real reala (pi piin / d dx (piax piinx / (realax realinx d (pia piin / (reala realin Vztah přepočítávající reálné souřadnice na obrazovkové pix piinx + (realx realinxdx pi piin + (reala reald real [realinx, reala] [-,] [5,-] [realax, realin] Přednáška 7 5 realx Souřadnice bodu P [, ] se vlivem transformace upraví na P [, ] transformační matice Způsob zápisu transformace (eplicitní a maticové Eplicitní vjádření ' 3 ' + Řádkový vektor (preferováno v literatuře o PG [ ' ' ] [ ] 3 [ ] [ ] P' P Sloupcový vektor (standardní matematický zápis ' ' P' P Počítačová grafika, PV, UPCE-KID, [/] ' ' ' 3 ' Tento způsob bude používán při výkladu Přednáška 7 6 Homogenní souřadnice Inverzní transformace Některé transformace nelze vjádřit pomocí matice, např.: což vede na nekorektní maticový zápis: ' + 3 ' + Pro jednotný maticový výpočet budeme používat čtvercovou matici o rozměru (n+ (n+. Vektor rozšíříme o souřadnici w (homogenizační faktor, w<>, nejčastěji w, původní souřadnice upravíme vnásobením nebo vdělením hodnotou w. ' [ ' ' ] [ ] Transformační matice má pro D prostor rozměr 33. 3 [ ' w' ] [ w] 3 Inverzní transformační matice - [ ' ' ] [ ] I Příklad (otočení cos( sin( cos( α cos( sin( α sin( cos ( + sin ( cos( sin( sin( ; cos( cos( α sin( α sin( cos( cos( sin( sin( α cos( cos( α sin( sin( cos( I sin( cos( Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 7 Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 8
Neeistující inverzní transformace Posunutí Inverzní transformace neeistuje, pokud Příklad: Transformace: projekce bodu na osu ' ' [ ' ' ] [ ] det Neeistuje inverzní transformace. Logické vsvětlení:??? Posunutí (move bodu P do bodu P o vektor Vektor posunutí p ( X, ( X X, Eplicitní výpočet souřadnic P X X + + X aticové vjádření posunutí X X p ' [,] ' p Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 9 Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 Otočení Otočení (rotation bodu P kolem počátku O[,] o orientovaný úhel β do bodu P Eplicitní výpočet souřadnic P X X cos β sin β [,] β r cos α r sin α r cos (α + β r sin (α + β sin(α + β sin α cos β + cos α sin β cos(α + β cos α cos β -sin α sin β X sin β + cos β aticové vjádření otočení cos β sin β sin β cos β cos β sin β sin β cos β [,] β Pomocí vzorců pro cos a sin součtu úhlů rovnice upravíme: r cos (α + β r cos α cos β -r sin α sin β r sin (α + β r sin α cos β + r cos α sin β cos β - sin β sin β + cos β Otočení okolo obecného bodu [X, ] lze řešit složenou transformací: posunutí otočení zpětné posunutí. Kladné hodnot β určují otočení proti směru hodinových ručiček, záporné hodnot β určují otočení ve směre hodinových ručiček. Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7
Otočení rastrového obrázku Dopředné a zpětné mapování lgoritm zlepšující kvalitu transformace viz přednáška: astrová grafika Zkosení Zkosení (shear je transformace udávaná koeficientem mír zkosení SH ve směru os, respektive SH ve směru os. Eplicitní výpočet souřadnic P X X + SHX SH X + aticové vjádření zkosení Sh SH X SH SH.5 [,] Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 3 Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 4 Změna měřítka Změna velikosti objektu (scale ve směru souřadnicových os o koeficient S, S S (, ----> zmenšení objektu S > ----> zvětšení objektu Pro S< dochází ke změně měřítka v opačném směru. Eplicitní výpočet souřadnic P X S X S aticové vjádření SX S S ' [,] ' Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 5 Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 6
Souměrnost Jednotlivé případ souměrnosti Zvláštní případ změn měřítka (smetr bsolutní hodnota koeficientů je rovna jedné Souměrnost osová a středová Používají se výraz překlopení, zrcadlení (reflection, flip, mirror souměrnost podle os souměrnost podle os středová souměrnost S - - S - - Středová souměrnost je ekvivalentní otočení o 8 [,] [,] Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 7 Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 8 Skládání transformací Příklad skládání transformací Postupné aplikování jednotlivých transformací na bod P Záleží na pořadí, pro skládání transformací NEPLTÍ komutativní zákon. Vjádření jedinou maticí, kterou dostaneme postupným násobením matic, představujících jednotlivé částečné transformace Násobení zprava P ' P r [,] p (- r,- r p (- r,- r r α Příklad: Otočení o úhel α okolo bodu [, ] + Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 9 Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7
Přesnost a kumulace chb Zásad: Výpočt provádět s reálnými proměnnými Zaokrouhlení provádět pouze pro účel vkreslení Při vícenásobných transformacích dochází ke kumulování chb Doporučení: vužívat tp double místo tpu float Příklad: Opakované otáčení úsečk (např. sekundová ručička krok 6 (-6 počáteční stav :[.,.], [.,.] koncový stav při použití souřadnic tpu float min. (6 otočení: [.8, -.7587E-5] 8 hod. (88 otočení: [.38, -.9669533E-4] koncový stav při použití souřadnic tpu double min. (6 otočení: [99.99999999999973, -4.85757373E-4] 8 hod. (88 otočení: [99.99999999986587, -.95499356E-] Podpora v Javě Graphics! Pouze transformace zobrazovacího režimu, neřeší samotnou transformaci (změnu vkreslovaných dat translate (int, int posunutí počátku souřadnicového Tet Tet Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 Podpora v Javě Podpora v Javě GraphicsD! Pouze transformace zobrazovacího režimu, neřeší samotnou transformaci (změnu vkreslovaných dat void translate(double t, double t void translate(int, int void rotate(double theta void rotate(double theta, double, double shear(double sh, double sh scale(double s, double s ffinetransform gettransform( void transform(ffinetransform T ffinetransform ffinetransform( - jednotková matice transformace ffinetransform(ffinetransform T ffinetransform(double[] flatmatri 4 nebo 6 prvků ffinetransform(float[] flatmatri 4 nebo 6 prvků ffinetransform(double m, double m, double m, double m, double m, double m ffinetransform(float m, float m, float m, float m, float m, float m m - the X coordinate scaling element of the 33 matri m - the coordinate shearing element of the 33 matri m - the X coordinate shearing element of the 33 matri m - the coordinate scaling element of the 33 matri m - the X coordinate translation element of the 33 matri m - the coordinate translation element of the 33 matri Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 3 Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 4
Podpora v Javě ffinetransform concatenate(ffinetransform T ffinetransform createinverse( invert( getatri(double[] flatmatri rotate(double theta rotate(double theta, double anchor, double anchor scale(double s, double s shear(double sh, double sh translate(double t, double t Skutečná transformace (změna vkreslovaných dat transform(pointd ptsrc, PointD ptdst transform(pointd[] ptsrc, int srcoff, PointD[] ptdst, int dstoff, int numpts T T s sh m m m m sh s t t m m Počítačová grafika, PV, UPCE-KID, [/] Přednáška 7 5