К счастью, подавляющее большинство преобразований, которые используются в компьютерной графике, можно свести в конечному множеству аффинных преобразований. Это множество включает вращение, плоскопараллельное смещение (сдвиг) и масштабирование. Внеся небольшие изменения, таким же образом можно выразить и проективные преобразования - параллельное и перспективное.

4.6. Поворот, сдвиг и масштабирование Рассматривая преобразования, нам придется все время переключаться от геометрических объектов как абстрактных сущностей к их конкретным представлениям в определенных фреймах. В прикладной программе мы имеем дело с представлениями объектов. В этом раз-

Объекты и геометрические преобразования

деле сначала будет показано, что наиболее важные аффинные преобразования можно сформулировать независимо от конкретного представления. Затем будут выведены матрицы этих преобразований, которые позволяют работать с представлениями точек и векторов. О том, как эти преобразования реализованы в OpenGL, рассказывается в разделе 4.8.

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

4.6.1. Плоскопараллельное смещение Плоскопараллельное смешение, или сдвиг (translation),- это операция, которая смещает точки на фиксированное расстояние вдоль заданного направления (рис. 4.29). Сдвиг задается только вектором смещения d, поскольку для всех точек Р на объекте справедливо соотношение

P'=P + d.

Обратите внимание на то, что такое определение операции никак не связано с системой отсчета или фреймом представления. Сдвиг имеет 3 степени свободы, поскольку можно произвольно задать три компонента вектора смещения.

Сдвиг

Рис 4.29. Сдвиг: а - объект в исходной позиции; б - сдвинутый объект


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