If you're seeing this message, it means we're having trouble loading external resources on our website.

Ha webszűrőt használsz, győződj meg róla, hogy a *.kastatic.org és a *.kasandbox.org nincsenek blokkolva.

Fő tartalom

Tö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.
Tudsz angolul? Kattints ide, ha meg szeretnéd nézni, milyen beszélgetések folynak a Khan Academy angol nyelvű oldalán.