5. fejezet - Ponttranszformációk (Linear transformation)

Tartalom

Egybevágósági transzformáció (Congruence transformation)
Identitás (Identity)
Eltolás (Translation)
Forgatás (Rotation)
Tükrözés (Reflection)
Hasonlósági transzformáció (Similarity transformation)
Affin transzformációk (Affine transformations)
Skálázás (Scaling)
Nyírás (Shear)
Projektív transzformáció (Projective transformation)
Térbeli transzformációk szorzata (Concatenation of transformations)
Forgatás a három koordináta-tengely körül
Tetszőleges tengely körüli forgatás (Rotation about an arbitrary axis)
Tetszőleges síkra való tükrözés (Reflection about an arbitrary plane)

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]).

Egybevágósági transzformáció (Congruence transformation)

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.

Identitás (Identity)

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.

Eltolás (Translation)

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.

Forgatás (Rotation)

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:

Tükrözés (Reflection)

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.

Hasonlósági transzformáció (Similarity transformation)

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.

Affin transzformációk (Affine transformations)

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.

Skálázás (Scaling)

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.

Nyírás (Shear)

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:

5.4. ábra. Nyírás.

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:

Projektív transzformáció (Projective transformation)

Megállapítható, hogy minden nem szinguláris 44-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 szorzata (Concatenation of transformations)

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:

  1. Eltoljuk a tárgyat az origóba ().

  2. Elforgatjuk a megadott szöggel ().

  3. Visszatoljuk a tárgyat az eredeti pozíciójába ().

Ennek megfelelően a transzformációs mátrixot a következőképpen kaphatjuk meg:

Forgatás a három koordináta-tengely körül

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:

  1. Csavarás (roll), azaz tengely körüli forgatás,

  2. Billentés (pitch) következik, azaz tengely körüli forgatás,

  3. Fordulás (yaw) azaz tengely körüli forgatás.

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.

Tetszőleges tengely körüli forgatás (Rotation about an arbitrary axis)

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:

  1. Eltoljuk a tengelypontot az origóba.

  2. Végrehajtjuk a megfelelő forgatásokat, úgy hogy a transzfomációk eredményeképpen forgástengely a koordinátatengelyre illeszkedik.

  3. Elvégezzük a szöggel való forgatást a tengely körül.

  4. Végrehajtjuk a 2. lépésben kivitelezett forgatások inverzét.

  5. 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:

5.5. ábra. Iránykoszinuszok

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).

5.6. ábra. tengelykörüli forgatás

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.

5.7. ábra. tengelykörüli forgatás

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.

Tetszőleges síkra való tükrözés (Reflection about an arbitrary plane)

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:

  1. Eltoljuk el a tükrözési síkot egy pontjának segítségével az origóba.

  2. 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.

  3. Az koordinátasíkra a tükrözést végzünk el.

  4. Végrehajtjuk a 2. lépésben kivitelezett forgatások inverzét.

  5. 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.