Fő tartalom
Programozás
Tantárgy/kurzus: Programozás > 4. témakör
6. lecke: TranszformációkTöbbszörös transzformációk
Most, hogy megismerted az eltolás, elforgatás, és az átméretezés alapjait, beszéljünk egy kicsit ezek együttes használatáról, és néhány olyan nehézségről, amit az elején elhallgattunk!
A sorrend számít
Amikor több transzformációt használsz, a sorrend fontos lesz. Egy elforgatás utáni eltolás, majd egy átméretezés nem ugyanazt az eredményt fogja adni, mint amikor az eltolást követi a forgatás, majd az átméretezés. Íme egy program, mely ezt szemlélteti:
A sorrend azon múlik, milyen hatást szeretnél elérni. Azt tartsd észben, hogy a milliméter papírt mozgatod, nem magát az objektumot, és neked kell rájönnöd, hogy melyik sorrend a legmegfelelőbb számodra.
A transzformációs mátrix
Minden alkalommal, amikor elforgatást, eltolást vagy átméretezést hajtasz végre, a transzformáció végrehajtásához szükséges információ egy számtáblázatban halmozódik. Ennek a táblának vagy mátrixnak noha csak néhány sora és oszlopa van, a varázslatos matematika segítségével mégis tartalmazza az összes információt, ami a transzformációk sorozatának végrehajtásához szükséges. Ez az oka annak, amiért a
pushMatrix()
és popMatrix()
függvényekben szerepel a mátrix szó.Mi az a push (magyarul betesz) és pop (magyarul kivesz) a nevek részeként? Ezek a veremként ismert számítógépes fogalomhoz kapcsolódnak, ami valahogy úgy működik, mint a rugós tálcaadagolók az amerikai menzákon. Ha valaki visszatesz egy tálcát, annak súlya egy kicsit lenyomja a többit. Ha valaki kivesz egy tálcát a tetejéről, akkor a többi egy kicsit felemelkedik.
Hasonlóképpen, a
pushMatrix()
elhelyezi a koordináta-rendszer aktuális állapotát a memóriaterület tetején, és a popMatrix()
kiveszi ezt az állapotot. Az előző példában használt pushMatrix()
és popMatrix()
biztosította azt, hogy a koordináta-rendszer „tiszta” volt minden rajzoláskor. Az összes többi példánál nem volt igazából szükséges ezen függvények meghívása, mert nem használtunk egymást követő transzformációkat, viszont nem árt, ha elmentjük és visszaállítjuk a négyzetháló állapotát. Javasoljuk, hogy mindig használd ezeket a függvényeket, amikor transzformációkat hajtasz végre!Van még emellett egy
resetMatrix()
függvény, mely visszaállítja a mátrixot az eredeti állapotába (az „egységmátrixba”) – de az esetek többségében a push és pop függvényeket érdemes használni.Szeretnél tanulni a mátrixokról vagy áttekinteni azt? Végignézheted a Mátrixok anyagrészt a Khan Academyn, vagy akár konkrétan a Geometriai transzformációk mátrixokkal fejezetet.
A tananyag a 2D Transformations adaptációja, mely J David Eisenberg munkája, és a következő licenc alatt elérhető: Creative Commons Attribution-NonCommercial-ShareAlike.
Szeretnél részt venni a beszélgetésben?
Még nincs hozzászólás.