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

Pokud používáš webový filtr, ujisti se, že domény: *.kastatic.org and *.kasandbox.org jsou vyloučeny z filtrování.

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.
Umíš anglicky? Kliknutím zobrazíš diskuzi anglické verze Khan Academy.