Hlavní obsah
Vícenásobné transformace
Teď, když už znáš základy posunu, rotace a škálování, pojďme si říct něco o použití všech uvedených dohromady a o některých složitostech, na které jsme narazili na začátku.
Na pořadí záleží
Když provádíš více transformací, jejich pořadí se mění. Rotace následovaná posunem, který je následován škálováním, nepřinese ty stejné výsledky jako posun následován rotací, která je následována škálováním. Zde je příklad programu, který to ukazuje:
Které pořadí použiješ závisí na tom, čeho chceš docílit. Jen měj na paměti, že pohybuješ milimetrovým papírem, ne samotným objektem, a musíš najít pořadí, které bude fungovat.
Transformační matice
Pokaždé, když děláš rotaci, posun nebo škálování, budou informace potřebné k provedení transformace uloženy do tabulky čísel. Tato tabulka nebo matice má jen několik řádků a sloupců, přesto zázrakem matematiky obsahuje všechny informace potřebné k provedení jakékoli řady transformací. A proto mají
pushMatrix()
a popMatrix()
toto slovo ve svém názvu (matrix, neboli matice).A co znamená push a pop část jejich názvu? Ty pocházejí z počítačového konceptu známého jako zásobník, který funguje jako pružinový automat na tácy v jídelně. Když někdo vrátí tác do zásobníku, jeho váha tlačí podložku dolů (push). Když někdo potřebuje tác, vezme si ho z vrcholu zásobníku a zbývající tácy se trochu pozvednou (pop).
Podobným způsobem umístí
pushMatrix()
aktuální stav souřadnicového systému na vrchol paměťové oblasti a popMatrix()
vytáhne tento stav zpět. Předchozí příklad použil pushMatrix()
a popMatrix()
k tomu, aby se ujistil, že je systém souřadnic před každou částí kresby "čistý", nijak nezměněný. Ve všech ostatních příkladech nebyly volání těchto dvou funkcích ve skutečnosti nezbytné, protože nedošlo k žádným následným transformacím, ale stejně to ničemu neuškodí, když se uloží a obnoví stav mřížky. Osvědčeným postupem je používat tyto funkce vždy při provádění transformací.Existuje také funkce
resetMatrix()
, která resetuje matici zpět do jejího původního stavu (tzv. "matice identity"), ale funkce push a pop jsou téměř vždy vhodnějším postupem.Chceš se naučit nebo zopakovat si, jak fungují matice v matematice? Na Khan Academy si můžeš projít Matice, zejména sekci Geometrické transformace s maticemi.
Tento článek je adaptací 2D Transformace od J David Eisenberga, používaný pod Creative Commons Attribution-NonCommercial-ShareAlike License.
Chceš se zapojit do diskuze?
Zatím žádné příspěvky.