{

/* Вводится описание объекта. */

/* Вводятся параметры трансляции, поворота и масштабирования. */

/* Задаются процедуры трехмерных преобразований наблюдения. */

/* Матрица matComposite инициализируется как единичная: */ matrix4x4SetIdentity (matComposite);

/* Вызываются процедуры преобразования в порядке

* их применения:

*/

rotate3D (pl, р2, radianAngle);

II Первое преобразование: поворот. scale3D (sx, sy, sz, fixedPt);

// Второе преобразование: масштабирование. translate3D (tx, ty, tz);

// Последнее преобразование: трансляция.

/* Вызываются процедуры отображения преобразованных

* объектов.

*/

}

Преобразование координат между правосторонней и левосторонней системами можно выполнить с помощью преобразования отражения (5.114)

Рис. 5.52. Преобразование координат между правосторонней и левосторонней системами можно выполнить с помощью преобразования отражения (5.114)

ДРУГИЕ ТРЕХМЕРНЫЕ ПРЕОБРАЗОВАНИЯ

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

ТРЕХМЕРНЫЕ ОТРАЖЕНИЯ

Отражение в трехмерном пространстве можно выполнить относительно выбранной оси отражения или относительно плоскости отражения. Вообще, матрицы трехмерного отражения задаются подобно двухмерным матрицам. Отражение относительно данной оси эквивалентно повороту на 180° вокруг этой оси. Отражение относительно плоскости эквивалентно повороту на 180° в четырехмерном пространстве. Если плоскостью отражения является координатная плоскость (ху, хг, ог уг), преобразование можно представлять как переход между левосторонней и правосторонней системами координат (приложение А).

ПЕРЕХОД МЕЖДУ ТРЕХМЕРНЫМИ СИСТЕМАМИ КООРДИНАТ

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

АФФИННЫЕ ПРЕОБРАЗОВАНИЯ

Трансляция, поворот, масштабирование, отражение и сдвиг являются аффинными преобразованиями. Любое аффинное преобразование всегда можно выразить как определенную комбинацию названных пяти преобразований. Другой пример аффинных преобразований - преобразование координатных представлений сцены из одной системы координат в другую, поскольку такой переход можно описать как комбинацию трансляции и поворота. Аффинное преобразование включает только трансляцию, поворот и отражение, сохраняет углы и длины, а также параллельные линии. При любом из трех указанных преобразований длины отрезков и угол между любыми двумя линиями сохраняются.

ФУНКЦИИ ГЕОМЕТРИЧЕСКИХ ПРЕОБРАЗОВАНИЙ В OpenGL

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


⇐ вернуться назад | | далее ⇒