5.1. Введение Аффинные преобразования (affine transformations) являются краеугольным камнем всей компьютерной графики и составляют основу OpenGL, так же как и большинства других графических систем. Однако они являются проблемой для многих программистов, потому что их правильное применение часто вызывает затруднения. Особенно сложной сферой стала путаница понятий точек и векторов. Те и другие выглядят очень похоже и часто выражаются в программах одним и тем же типом данных: как правило, списком из трех чисел вроде (3,0, 2,5, -1,145). Однако подобная практика может привести к

5.2. Введение в преобразования неприятностям в виде серьезных ошибок (bugs), которые крайне сложно выявить при отладке, в основном из-за того, что точки и векторы не преобразуются одинаковым образом. Но нам необходим метод проведения правильных преобразований, и этого можно достичь, используя координатные фреймы (coordinate frames) и соответствующие однородные координаты, как было описано в главе 4.

5.2. Введение в преобразования Вселенная наполнена разными волшебными вещами, терпеливо дожидающимися, пока мы станем более сообразительными.

Е. Филлпоттс (Е. Phillpotts)

Мы уже рассмотрели несколько примеров преобразований, по крайней мере в двух измерениях. Например, в главе 3 преобразование «окно - порт просмотра» использовалось для масштабирования и перемещения в порт просмотра объектов, расположенных в мировом окне, к их окончательному размеру и расположению.

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

На рис. 5.1, а приведены рисунки двух вариантов простейшего домика, полученные до и после того, как была преобразована каждая из его точек. В данном случае домик был уменьшен в размерах, немного повернут, а затем передвинут вверх и вправо. Суммарное преобразование является комбинацией трех элементарных преобразований: масштабирования, поворота и перемещения. На рис. 5.1, б изображен трехмерный домик до и после такого же преобразования: каждая трехмерная точка этого домика подвергнута масштабированию, повороту и перемещению.


⇐ Предыдущая| |Следующая ⇒