Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТВЕТЫ К КОМПЬЮТЕРНОЙ ГРАФИКЕ .doc
Скачиваний:
59
Добавлен:
29.10.2018
Размер:
1.26 Mб
Скачать

17.Двумерные и трёхмерные преобразования тел

Из презентации:

Двумерные преобразования

Преобразования координат.

Преобразования координат в явном и неявном виде широко используются в компьютерной графике с целью описания графического объекта в наиболее удобных координатных системах, для изменения масштаба элементов чертежа, построения проекций пространственных образов, направленной деформации объектов.  Пусть задана n-мерная система координат в базисе (k1, k2,…kn), описывающая положение точки в пространстве с помощью числовых значений ki. Если задать другую, N-мерную систему координат в базисе (m1, m2, … ,mn) и поставить задачу определения координат в новой системе, зная координаты в старой, то решение (если оно существует) можно записать в таком виде:

где fi - функции пересчёта i-й координаты. 

По виду функций преобразования различают линейные и нелинейные преобразования. Если при всех i = 1, 2, …, N функции fi - линейные относительно аргументов (k1, k2, …, kn), то есть:

где aij - константы, то такие преобразования называют линейными, а при n = N - аффинными. 

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

Метод однородных координат

В основе этого метода лежит представление о том, что каждая точка в N-мерном пространстве может рассматриваться как проекция точки из (N+1)-мерного пространства. В частности, точка в трехмерном пространстве представляется четырьмя составляющими, например, ее координаты будут заданы как V=(x, y, z, w). Если w не равно 1, то декартовы координаты точки (X,Y,Z) получаются из соотношения :

[ X Y Z 1 ] = [ (x/w) (y/w) (z/w) 1 ]

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

Матрица однородных координат

где матрица преобразований M имеет следующий вид:

Обычно на практике используются нормализованные координаты (параметр S равен 1). На практике, создавая различные программы трехмерного моделирования, требуется прежде всего реализовать подмножество векторных и матричных операций. Используя аппарат однородных координат, разрабатывать системы визуализации трехмерных изображений становится намного проще и удобнее. 

Примеры основных элементарных преобразований, выражаемых с помощью матрицы однородных координат:

Результирующее преобразование представляет собой совокупность последовательных поворотов с заданными углами , вокруг координатных осей декартовой системы координат, связанной с рассматриваемым объектом сцены и записывается в итоге как произведение матриц Mx×My×Mz. Таким образом можно описать поворот системы координат объекта вокруг положения ее центра относительно фиксированной системы координат, связанной, например, с экраном, на произвольный угол. Из аналитической геометрии известно, что последовательно выполняемые повороты некоммутативны, то есть результат зависит от порядка, в котором повороты совершались. В нашем случае, когда матрица M изначально транспонирована для последующего умножения на вертикальный вектор координат (так как это принято в OpenGL), координаты точки после преобразования вычисляются так: 

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

На рисунке представлена схема поворота системы координат из положения [x', y', z'], совпадающего с положением экранной системы координат, в некое произвольное положение [x, y, z]. При этом координаты видовой системы, связанной с объектом сцены, будут выражаться через координаты экранной системы с помощью легко получаемых выражений. Записанные ниже результирующие соотношения, определяющие положение точки с видовыми координатами (x, y, z) в координатах (X, Y, Z) экранной системы, приведены уже в виде произведения трехмерной матрицы преобразований на компоненты вектора (x, y, z)

Рассмотрим ещё несколько примеров матриц аффинных преобразований в однородных нормализованных координатах (все матрицы невырожденные):

Таким образом, совокупность операции по преобразованию координат предмета описывается произведением матриц, которое затем приводится к единой матрице для всех элементов и точек объекта. Предположим, что задано осуществить повороты предмета на угол  вокруг оси, параллельной оси x, и на угол вокруг оси z, проходящих через точку с координатами (x0, y0, z0). Эта операция будет описываться произведением четырех матриц: матрицы, описывающей сдвиг для совмещения точки (x0, y0, z0) с началом координат; двух матриц, описывающих повороты вокруг соответствующих осей; матрицы, описывающей сдвиг для возвращения точки в первоначальное положение.

Рассмотрим похожий пример, но только для плоскости: пусть нам нужно получить функцию расчёта координат (X, Y) для поворота вокруг центра с координатами (x0, y0)

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

При отображении пространственных объектов используют понятие мировых координат - трёхмерных декартовых координат пространства, в котором размещаются объекты. Каждый из объектов обычно имеет собственную объектную систему координат. И, наконец, экранная система координат связана с тем графическим устройством, где в заданной проекции на картинной плоскости (в общем случае - картинной поверхности) отображается создаваемая трёхмерная сцена. Так как практически все устройства графического вывода являются плоскостными, то две из трёх экранных координат (X и Y) располагаются в плоскости экрана соответственно по горизонтали и вертикали, а координата Z направлена перпендикулярно им (если "вглубь" экрана, то получившаяся система координат левосторонняя).