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

Ако си зад уеб филтър, моля, увери се, че домейните *. kastatic.org и *. kasandbox.org са разрешени.

Основно съдържание

Множество трансформации

След като се запозна с основите на транслацията, ротацията и мащабирането, нека поговорим за това как да ги използваме заедно и да споменем и някои по-сложни неща, с които се сблъскахме в началото.

Редът има значение

Когато изпълняваш няколко трансформации, редът има значение. Ротация, последвана от транслация, последвана от мащабиране няма да даде същия резултат, както транслация, последвана от ротация, последвана от мащабиране. Ето една примерна програма, която го онагледява:
Редът, който използваш, зависи от това какъв ефект искаш да постигнеш. Само не забравяй, че местиш графичната хартия, а не самия обект, и ще откриеш правилния за случая ред.

Матрица за трансформация

Всеки път, когато извършваш ротация, транслация или мащабиране, информацията, необходима за извършване на трансформацията, се събира в таблица с числа. Тази таблица, или матрица, има само няколко реда и колони, но въпреки това, благодарение на чудото на математиката, съдържа цялата информация, необходима за извършването на поредица от трансформации. Ето защо функциите pushMatrix() и popMatrix() съдържат думата "Matrix" (матрица) в имената си.
А защо съдържат и думите push и pop? Те идват от компютърно понятие, известно като '"стек", което работи като диспенсър с пружина, например като тези в американските закусвални. Когато някой върне поднос в стека, теглото му натиска платформата надолу. Когато някой иска да вземе поднос, той го взима от върха на стека, а останалите подноси се повдигат малко нагоре.
По подобен начин pushMatrix() поставя текущото състояние на координатната система в горната част на паметта, а popMatrix() издърпва това състояние обратно навън. Предишният пример използваше pushMatrix() и popMatrix(), за да се увери, че координатната система е "чиста" преди всеки етап от рисуването. Във всички други случаи извикването на тези две функции не е задължително, защото няма последователни трансформации, но не вреди да запазваме и да възстановяваме състоянието на мрежата. Като добра практика винаги използвай тези функции, когато изпълняваш някакви трансформации.
Има и функция resetMatrix(), която връща матрицата до най-началното ѝ състояние ("единична матрица"), но функциите push и pop почти винаги са по-добрият подход.
Ако искаш да научиш или да си припомниш как работят матриците в алгебрата, можеш да разгледаш уроците за Матрици в Кан Академия, и по-конкретно Геометрични трансформации с матрици.

Тази статия е адаптация на 2D трансформации от J David Eisenberg, използвана под лиценз Creative Commons Attribution-NonCommercial-ShareAlike .

Искаш ли да се присъединиш към разговора?

Все още няма публикации.
Разбираш ли английски? Натисни тук, за да видиш още дискусии в английския сайт на Кан Академия.