Программирование графики с использованием Direct3D



         

Масштабирование


Выполнение операции масштабирования над сеткой или гранью изменяет ее размер и местоположение. Сначала давайте посмотрим, как с помощью операции масштабирования можно изменить размеры объекта. Если мы возьмем наш куб, размерами 1x1x1 и произведем операцию масштабирования с коэффициентом 1/2, длина каждой грани нашего куба станет равна 1/2 (получим куб размером 1/2x1/2x1/2). Если же мы используем коэффициент масштабирования, равный 2, то мы удвоим размеры нашего куба, получив куб с размером каждой грани 2единицы (то есть куб размерами 2x2x2). На рис. 2.13. показаны результаты рассмотренных операций масштабирования.


Рис. 2.13. Результаты масштабирования куба размерами 1x1x1 с коэффициентами 1/2 и 2

Рис. 2.13. Результаты масштабирования куба размерами 1x1x1 с коэффициентами 1/2 и 2

Как упоминалось ранее, операция масштабирования также изменяет местоположение объекта. На рис. 2.13 центр куба совпадает с началом координат. Если бы этого не было, то операция масштабирования повлияла и на местоположение куба и на его размер. Операция масштабирования не увеличивает непосредственно объект: она проводится над вершинами объекта. Когда коэффициент масштабирования больше 1, вершины удаляются от начала координат. Когда коэффициент масштабирования меньше 1, вершины приближаются к началу координат. На рис. 2.14 показан результат операции масштабирования с теми же коэффициентами, что и на рис. 2.13, но исходный куб был сдвинут вправо по оси Y и куб, полученный в результате операции масштабирования, располагается дальше от начала координат.


Рис. 2.14. Перемещение и изменение размеров куба в результате операции масштабирования

Рис. 2.14. Перемещение и изменение размеров куба в результате операции масштабирования

Часто этот эффект нежелателен, если нам необходимо масштабировать объект без изменения его местоположения. В этом случае мы перемешаем объект в начало координат, масштабируем его и возвращаем на прежнее место. Некоторые графические системы (включая Direct3D) допускают операции масштабирования, которые изменяют размеры объекта без изменения его местоположения, независимо от того, совпадает ли центр объекта с началом координат.


Содержание  Назад  Вперед