Tartalom
Ponttranszformáción olyan megfeleltetést értünk, mely az alakzat minden egyes pontjához egyértelműen hozzárendel egy pontot. Olyan eljárásoknál kell ezt alkalmazni, amelyekben a tárggyal összefüggésben annak valamilyen hasonmása keletkezik. Tipikus példa erre minden leképezési folyamat (például a fényképezés), ahol a tárgyhoz, annak egyes pontjaihoz egy kép pontjait rendeljük. Ide értjük azokat az eseteket is, amikor a tárgy deformációkat szenved. Az általunk tárgyalt legbővebb transzformáció a projektív transzformáció.
A térbeli ponttranszformációk általános alakja, ahol p a transzformálandó, p’ a
transzformált pontba mutató helyvektor,
pedig a
-es transzformációs
mátrix:
ahol
Először az úgynevezett elemi transzformációkat tárgyaljuk, ezekből lehet összetett transzformációkat létrehozni. Minden transzformáció esetén megadjuk az inverz transzformációt is. A leírásnál elsősorban Juhász Imre könyvére támaszkodunk (lásd [48], [96]).
Azokat a transzformációkat, ahol bármely szakasz képe ugyanolyan hosszúságú szakasz
egybevágósági transzformációnak nevezzük. Ilyen tulajdonságú transzformáció az identitás, az
elforgatás, az eltolás és a tükrözés. Az eltolást és elforgatást összefoglalóan mozgásnak szokás
nevezni, ugyanis ilyen esetben van olyan térbeli „mozgás” amivel az egybevágó alakzatok egymással
„fedésbe” hozhatók. Az egybevágósági transzformációk közös jellemzője, hogy a reprezentáló
mátrixok bal felső
-as minor mátrixa ortonormált mátrix –azaz sorai
és oszlopai páronként merőleges egységvektorok– és determinánsa mozgás esetén 1,
tükrözésnél pedig -1.
Az identitás esetén minden ponthoz önmagát rendeljük hozzá, tehát a pontok koordinátái nem változnak. Itt a tárgy mozdulatlan.
Az eltolás esetén a P ponthoz megadott irányban és távolságban levő P’ pontot rendeljük
hozzá. Ez esetben az eltolást egy vektorral adhatjuk meg. Legyen a vektor koordinátája
5.1. ábra. Síkbeli eltolás.[108]
A P’ pont koordinátáját megkapjuk, ha a P pont megfelelő koordinátáihoz hozzáadjuk a d vektor megfelelő koordinátáit:
Ugyanez homogén koordinátás alakban és mátrix szorzással felírva:
adódik az eltolás
mátrixa illetve inverze:
Az eltolás hatására a tárgy önmagával párhuzamosan a d vektornak megfelelő irányba és távolságra tolódik el.
Térbeli forgatásnál szükség van egy e egyenesre, mely körül forgatunk, valamint egy
(theta) szögre, hogy milyen mértékkel. Az
egy irányított szög, ami azt jelenti, hogy
pozitív szög esetén az óramutató járásával ellentétesen, míg negatív szög esetén az
óramutató járásával megegyezően forgatunk. Egyenes körüli elforgatás esetén az egyenes pontjai
fixpontok, azaz a forgatás során a képpont megegyezik az eredeti ponttal. Ha a P pontot az e egyenes
nem tartalmazza, akkor a képe az a P’ pont lesz, melyre teljesül, hogy P és P’ pontnak az e
egyenestől vett távolsága megegyezik, valamint PeP’ szög nagysága és iránya a megadott
szög.
A legegyszerűbb, ha a forgatás tengelyének valamelyik koordináta-tengelyt választjuk. Amennyiben a z tengelyt választjuk, akkor a pontnak és a képpontnak a z tengelytől vett távolsága nem változik. Ezen térbeli elforgatás visszavezethető egy origó körüli síkbeli elforgatásra, ahol az elforgatás szöge megegyezik a térbeli elforgatás szögével. Síkbeli elforgatás esetén pedig:
5.2. ábra. Síkbeli elforgatás.[107]
Ennek megfelelően a z tengely körüli elforgatás mátrixa:
Ha az elforgatás tengelyének az x vagy az y tengely valamelyikét választjuk, akkor a mátrix a következőképpen módosul:
Vegyük észre, hogy az y tengely körüli forgatás esetén a főátló felett a
előjele pozitív ellentétben a másik két forgatással! A forgatás pozitív irányát úgy
határozzuk meg, hogy a forgástengelynek kiválasztott koordináta tengely pozitív oldaláról
nézünk az origóba. A forgás tengely pontonként fix, tehát a másik két tengely elforgatásánál
vesszük figyelembe, hogy az óramutató járásával megegyező, vagy ellentétes irányba forgatunk.
Az óramutató járásával ellentétes irányt (counter clock-wise) nevezzük pozitív illetve a
megegyező irány (clock-wise)negatív forgatásnak. Tehát így értelmezhetünk negatív forgatási
szöget is. A forgatás inverzét megkaphatjuk, ha a szög ellentétét használjuk, azaz a forgatás
mátrixában a
helyett
-t, míg
helyett
-t írunk:
Forgatási mátrix esetében az inverz mátrix megegyezik (otrogonális mátrixok) a transzponált mátrixszal:
A térbeli tükrözés esetén szükség van egy s síkra, amelyre vonatkoztatva végezzük el a tükrözést. A tér egy P pontjához úgy rendeljük hozzá a képét, hogyha P illeszkedik az s síkra, akkor a képe önmaga; ha a P nem illeszkedik az s síkra, akkor azt a P’ pontot rendeljük hozzá, amelyre fennáll, hogy a P-P’ szakasz felezőmerőleges síkja az s sík.
Elemi tükrözési transzformációk esetén a tükrözést a koordinátasíkokra hajtjuk végre. Ha az (x,y) síkra történik a tükrözés, akkor a pontnak az x, valamint y tengelytől való távolsága nem változik, viszont a z tengelytől való távolsága az ellentéte lesz az eredeti ponthoz tartozónak. Ennek megfelelően ennek a tükrözésnek a mátrixa:
Az (y,z), valamint (x,z) síkokra vonatkozó tükrözésnél - ugyanilyen gondolatmenet alapján – az első, illetve a második oszlopban lesz -1.
A tükrözés inverzének mátrixa megegyezik a tükrözés mátrixával. Ez abból következik, hogyha egy pontot ugyanarra a síkra nézve kétszer tükrözünk, akkor a kétszeres tükrözést követően visszakapjuk az eredeti pontot.
Az egybevágósági transzformációk kibővítésével a hasonlósági transzformációkat
kapjuk. Egy ponttranszformációt hasonlóságnak nevezünk, ha bármely két pont képének a
távolsága a pontok távolságával osztva mindig ugyanazt a nullától különböző hányadost adja.
A képtávolságok és a megfelelő tárgytávolságok aránya adja a hasonlóság arányát. Mivel
távolságokról van szó, ezért a hasonlóság aránya pozitív szám. Amennyiben a
hasonlóság aránya
(lambda) egynél kisebb, akkor kicsinyítésről, ha egynél
nagyobb, akkor nagyításról beszélünk. Ha a
értéke pontosan 1, akkor az
azonosság.
Minden hasonlósági transzformáció az origóra történő kicsinyítés, vagy nagyítás
segítségével állítható elő. Ekkor egy P pont képének koordinátái a P pont
koordinátáinak
-szorosaként állnak elő:
A hasonlósági mátrix inverzét megkapjuk, ha a hasonlósági arány reciprokát használjuk.
A transzformációk nagyobb halmazát az affin transzformációk adják. Az affinitás olyan transzformáció, amely párhuzamos egyeneseket párhuzamos egyenesekbe képez le. A párhuzamosságtartás egyik következménye, hogy paralelogrammának paralelogramma a képe, tehát pl. a négyzetrács képe egy paralelogrammarács (lásd [95]).
Az affinitás természetesen nem elfajuló transzformáció, és affin transzformációk egymásutánja is affinitást eredményez.
Természetesen a hasonlósági transzformációk, és ezen belül az egybevágóságok is az affin transzformációk halmazának egy részhalmaza, mivel azok egyenestartó transzformációk. A két legismertebb affinitás a skálázás és a nyírás.
Az euklideszi tér pontjainak homogén alakján ezeket a transzformációkat
-es,
nem szinguláris mátrixokkal való szorzással hajthatjuk végre. Az affin transzformációk
mátrixának utolsó sorának első három eleme 0, negyedik eleme 1 (vagy bármilyen 0-tól
különböző szám). Az ilyen mátrixszal szorozva minden közönséges pont képe közönséges pont, az
ideális pontok képe ideális pont.
Általánosságban elmondható, hogy egy
-es nem szinguláris mátrix (a
mátrix determinánsa nem zérus), melynek negyedik sora
, és
egy affin transzformációt ír le.
A skálázással az origóból a három koordinátatengely mentén megadott mértékű nyújtást, zsugorítást érhetünk el. Ennél a ponttranszformációnál a kép már nem egybevágó mása a tárgynak.
5.3. ábra. Síkbeli skálázás.[109]
A transzformáció mátrixa:
ahol
(„lambda,mű,nű”) a nagyítások az egyes tengelyek mentén.
Ha ezek egyenlők, akkor a tárgy arányos nagyítással (kicsinyítéssel) került leképezésre,
egyébként torzulás lép fel.
Amennyiben egy közös skálázási faktorral szeretnénk számolni, ebben az esetben elegendő az egységmátrix egyetlen elemét módosítani:
A közös skálázási faktor használata pontosan megfelel a kicsinyítésnek vagy nagyításnak.
A skálázás inverzénél a
reciprokával számolunk.
A térbeli nyírás a tér P pontjainak egy fix síkkal párhuzamos csúsztatása. Legyen a fix sík az origón áthaladó. A csúszás mértéke arányos a pontnak a fix síktól való d távolságával. A sík állása megadható egységhosszúságú n normálvektorával, a csúszást pedig a t irány egységvektorával, amely merőleges n-re.
Egy
mértékű nyírás:
alakba írható (lásd [48]). Ennek mátrixát a következőképpen írhatjuk fel:
A fenti ábrákon egy adott tengely irányában végeztük a nyírást. A legelsőn az x tengely
irányában x-y sík mentén, ebben az esetben a transzformációt leíró egyenletrendszer a
következő (kotangens szokásos ctg jelölése helyett a
-ot használtuk):
Mátrix alakban
jelölést bevezetve:
hasonlóan
adódik. A nyírás inverze:
Végezzük el a nyírást speciálisan az x, és y tengely irányában, a z tengely pedig legyen fix. Legyen a nyírási faktor a az x tengely irányában, illetve b az y irányában. Ebben az esetben a mátrix a következőre egyszerűsödik:
A mátrix alapján leolvashatóak a következő egyenlőségek:
Ami
azt jelenti, hogy a tér egy
pontja az
pontba
transzformálódik. Az x és z irányban elvégzett nyírás mátrixa:
Az y és z irányban elvégzett nyírás mátrixa:
Megállapítható, hogy minden nem szinguláris 4
4-es mátrixnak megfeleltethető egy
projektív transzformáció. A projektív transzformációnál csak az a megkötés, hogy az
egyenes képe egyenes maradjon. Így elvesznek viszont olyan tulajdonságok, mint például a
párhuzamosság, vagy a szögtartás. Tehát egy négyzet képe általános négyszög is lehet, kör
képe pedig lehet parabola vagy hiperbola is.
Térbeli transzformációk egymás utáni végrehajtását térbeli transzformációk
szorzásának illetve szorzatának nevezzük. Térbeli alakzatokon több transzformációt
végrehajthatunk egymás után. Ha összetett transzformációt szeretnénk végrehajtani, akkor ennek
elvégzését leegyszerűsíthetjük úgy, hogy az egyes transzformációkat leíró mátrixokat a
megfelelő sorrendben összeszorozzuk, és a pontokat csak ezzel a szorzatmátrixszal kell megszorozni.
Legyen
az első,
a második transzformáció mátrixa. Ekkor:
és
ami átírható
alakba. Ekkor a transzformációs mátrixokat össze lehet szorozni:
amiből
A sorrend lényeges, lévén a mátrixszorzás nem kommutatív, így különböző sorrendben különböző eredményhez, tehát különböző transzformációhoz jutunk.
A pontranszformáció általános megadásánál balról szoroztunk a transzformációs mátrixszal. Ha jobbról szoroztunk volna, akkor egy teljesen ekvivalens rendszert tudtunk volna felépíteni, ilyen pl DirectX által használt rendszer is. Ebben az esetben a transzformációs mátrixok transzponáltjait kell használni, s az összetett transzformáció esetén egyenes sorrendben szorozzuk össze a transzformációs mátrixokat.
Minden összetett transzformáció felírható elemi transzformációk szorzataként. Egy tetszőleges mozgás felírható eltolásokból és forgatásokból; az általános egybevágósági transzformáció eltolásokból, tükrözésekből és forgatásokból; az általános hasonlósági transzformáció egybevágósági transzformációkból és origó középpontú hasonlóságokból, az általános affin transzformáció egybevágósági transzformációkból és skálázásokból állítható elő.
Könnyen belátható, hogy még a forgatás és az eltolás is összetett transzformáció. Mindkettő felírható tükrözés segítségével. Két párhuzamos egyenesre vonatkozó tükrözés szorzata eltolás. Az eltolás iránya merőleges az egyenesekre, nagysága a tengelyek távolságának kétszerese. Két, közös ponttal rendelkező egyenesre vonatkozó tükrözés egymásutánja a két egyenes metszéspontja körüli elforgatásnak felel meg, ahol az elforgatás szöge a két egyenes által bezárt szög kétszerese, iránya pedig a tükrözés sorrendjétől függ. Ebből következik, hogy a mozgás előáll két tükrözés, az egybevágóság pedig legfeljebb három tükrözés szorzataként.
A transzformációs mátrix négy fő részre osztható attól függően, hogy a koordináta-transzformáció során milyen jellegű változásokat eredményeznek az együtthatók:
esetén
A bal felső
-as részmátrix: az elforgatás, tükrözés, skálázás,
A jobb felső
-es részmátrix: az eltolás,
A bal alsó
-as részmátrix: projektív jelleg,
A jobb alsó
-es részmátrix: kicsinyítés, nagyítás (azonos
mértékű skálázás).
Például szeretnénk egy tárgyat a z tengellyel párhuzamos egyenesen lévő
koordinátájú pontban adott szöggel forgatni. Ezt a forgatást három elemi transzformáció
szorzatára lehet felbontani:
Ennek megfelelően a transzformációs mátrixot a következőképpen kaphatjuk meg:
Egy általános forgatás előállítható a három koordinátatengely körüli forgatással, viszont figyelembe kell venni, hogy a forgatások sorrendje nem felcserélhető. Pl. DirectX-ben a D3DXMatrixRotationYawPitchRoll függvénnyel lehet elvégezni a forgatást, ahol a sorrend:
Ha balról szorzunk a transzformációs mátrixszal (
,
akkor a összetett transzformáció esetén fordított sorrendben (lásd a Térbeli transzformációk
szorzata fejezetet) kell összeszoroznunk a transzformációs mátrixokat:

ha jobbról szorzunk, akkor az előbbi mátrix transzponáltját kapjuk. Mivel a forgatások sorrendje kötött, ezért általánosan a tetszőleges tengely körüli forgatást használjuk.
A tetszőleges tengely körüli forgatás gyakori feladat a robotikában, az animációk
készítésében és a szimulációk esetében. Követve az tranzformációk egymás utáni
végrehajtásáról tanultakat, egyszerűen adódik a megoldás. Vezessük vissza a problémát a
koordináta-tengely körüli forgatásra. Tegyük fel, hogy a térbeli tengely adott két pontjával:
ill.
, továbbá a
forgatás szöge legyen
.
Ebben az esetben a következő transzformációkat kell sorban végrehajtanunk:
Eltoljuk a
tengelypontot az origóba.
Végrehajtjuk a
megfelelő forgatásokat, úgy hogy a transzfomációk eredményeképpen forgástengely
a
koordinátatengelyre illeszkedik.
Elvégezzük a
szöggel való forgatást a
tengely körül.
Végrehajtjuk a 2. lépésben kivitelezett forgatások inverzét.
Elvégezzük el az 1. lépésben lévő eltolás inverzét.
Az egyszerűség kedvéért előállítjuk az
vektort, amely a
forgás tengellyel párhuzamos, majd normalizáljuk:
Az
vektor komponenseit az origón átmenő tengely íránykoszinuszainak nevezzük (lásd
5.5. ábra), és teljesül a következő összefüggés:
A második lépésben két forgatásra lesz szükség. Az első egy
koordinátatengely körüli
pozitív irányú forgatás
szöggel, úgy hogy a forgástengely az
koordinátasíkra fog illeszkedni (lásd 5.6. ábra).
Az 5.6. ábráról leolvasható, hogy
,
és a forgatás szögének szögfüggvényei:
és ebből adódik a forgatás mátrixa:
A második egy
koordinátatengely körüli negatív irányú forgatás
szöggel, úgy hogy a forgástengely a
koordinátatengelyre illeszkedjen.
Az 5.7. ábráról leolvashatóak a forgatás szögének szögfüggvényei:
és ebből adódik a forgatás mátrixa figyelembe véve a negatív irányt:
A teljes transzformáció a transzformációs mátrixok fordított sorrendben történő összeszorzásából adódik
ahol a belső öt mátrixot szokás külön is kiemelni:
azaz
Az (5.1)-ben lévő általános forgatási mátrixot Rodrigues formulának vagy
Rodrigues-féle forgatási mátrixnak nevezzük, melynek a legtöbb irodalomban teljesen más
levezetését tanulmányozhatjuk (lásd [105],vagy [11]). Belátható, hogy ha az öt forgatási
mátrixot összeszorozzuk és elvégezzük a trigonometrikus függvényeken értelmezett azonos
átalakításokat (lásd [98]), akkor az
mátrix következő alakját kapjuk:
Mivel a forgatás mátrixának az inverze a mátrix transzponáltja, ezért teljesül, hogy
A fentiekben megadott levezetés azért szerencsés, mert
segítségével könnyedén áttérhetünk a tetszőleges síkra való tükrözés megoldására
is.
Szintén gyakori feladat, amikor egy testet az egyik oldalapjának a síkjára szeretnénk tükrözni. Vezessük vissza a problémát a koordinátasíkra való tükrözésre. Figyelembe véve az előző fejezet levezetését adódik:
Eltoljuk el a tükrözési síkot egy
pontjának
segítségével az origóba.
Megfelelő forgatásokat hajtunk végre, úgy hogy a tükrözési sík normálvektora a
koordinátatengely pozitív irányába mutasson, ezáltal a tükrözési sík illeszkedni fog
a
, azaz az
koordináta síkra.
Az
koordinátasíkra a tükrözést végzünk el.
Végrehajtjuk a 2. lépésben kivitelezett forgatások inverzét.
Elvégezzük az 1. lépésben leírt eltolás inverzét.
Tehát ha adott a sík
és
, három nem egy egyenesre eső (nem kollineáris)
pontjával, akkor a sík normál vektora könnyedén kiszámolható az
,
vektorok vektoriális szorzatából:
amelyet normalizálunk
ahol az
vektor komponenseit íránykoszinuszoknak nevezzük, s az 5.5. ábra
alapján igaz, hogy
A 2. lépésben lévő forgatási mátrixok ugyanazok lesznek, mint amelyeket a tetszőleges tengely körüli forgatásnál alkalmaztunk. A teljes transzformáció a transzformációs mátrixok fordított sorrendben történő összeszorzásából adódnak
ahol a belső öt mátrixot szokás külön is kiemelni:
azaz
Az (5.2)-ben lévő általános tükrözési mátrixnak nincs külön neve az irodalomban, levezetése megtalálható a [98] cikkben. Belátható, hogy ha az öt mátrixot összeszorozzuk és elvégezzük a trigonometrikus függvényeken értelmezett azonos átalakításokat, akkor a következő alakot kapjuk:
mivel
a tükrözés inverze önmaga, ezért
Szokás még az
(5.3)-ben levő szorzást is elvégezni, mivel az eredmény nem lesz bonyolult:
ahol
. Ugyanezt az eredmény
használja a DirectX a D3DXMatrixReflect függvényben.