9.1 Алгоритмы геометрических преобразований в компьютерной графике. OpenGl.

Общие сведения

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

Основными операциями, которые относятся к геометрическим преобразованиям двумерных графических объектов, являются:
  • Перенос начала координат
  • Масштабирование
  • Поворот осей координат
Рассмотрим эти операции более подробно.

Перенос

При выполнении данной операции происходит перенос начала координат на некоторую величину.

Обозначим старую систему координат СК1, новую – СК2. При переносе новое начало координат в системе координат СК1 лежит в точке (Tx, Ty), в новой же системе СК2 старое начало координат является точкой (-Tx, -Ty). Начало координат (x,y) системы СК1 в системе СК2 станет точкой (x-Tx, y-Ty).

Стоит упомянуть, что при переносе сохраняются как направление осей координат, так и масштаб.

Матрица, необходимая для выполнения операции переноса имеет следующий вид:
Уроки OpenGL + C#: Геометрическое преобразование Рисунок 1. Геометрическое преобразование "Перенос".

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

При выполнении операции масштабирования отрезок единичной длины на оси X становится отрезком длиной Sx на оси X’; отрезок единичной длины на оси Y становится отрезком длиной Sy на оси Y’. Получается, что в новой системе точка с координатой (1,1) преобразуется в точку (Sx, Sy), точка (x,y) будет иметь координаты (x*Sx, y*Sy).

Стоит отметить, что при масштабировании начало координат и направление осей новой и старой систем координат совпадают, меняется лишь масштаб по осям.

Матрица, необходимая для выполнения операции масштабирования имеет следующий вид:
Уроки OpenGL + C#: Геометрическое преобразование Рисунок 2. Геометрическое преобразование "Масштабирование".

Поворот

Рассмотрим частный случай поворота в пространстве XYZ – поворот относительно оси Z, проходящей перпендикулярно плоскости XY.

Предположим, что центр вращения совпадает с началом координат. Тогда при повороте системы координат XY в декартовой плоскости на некоторый произвольный угол w относительно центра вращения, координаты произвольной точки С в системе координат (x’,y’) можно выразить через координаты этой точки в изначальной системе координат (x, y):

x' = x cos w + y sin w,

y' = -x sin w + y cos w

Для выполнения операции поворота используется следующая матрица:

Уроки OpenGL + C#: Геометрическое преобразование Рисунок 3. Геометрическое преобразование "Поворот".
OpenGL поддерживает встроенную систему матриц для описания трансформации сцены или объектов, но для понятия принципов работы трансформации объектов в трехмерном пространстве мы рассмотрим данные математические перемещения, реализовав их самостоятельно.
Добавить комментарий
Расширенный режим добавления комментариев доступен на форуме: загрузка изображений, цитирование, форматирование текста, и т.д.
Ваше имя:
Текст сообщения:
Комментарии (2):
mike124
mike124,  
Цитата
Тогда, при повороте системы координат XY в декартовой плоскости на некоторый произвольный угол а относительно центра вращения, координаты произвольной точки С в системе координат (x’,y’) можно выразить через координаты этой точки в изначальной системе координат (x, y):
x' = x cos w + y sin w,
y' = -x sin w + y cos w.
Что такое w и откуда оно взялось?
alita
alita,  
Имелся ввиду угол a.
Выше в статье должно быть написано "...произвольный угол w относительно..."
^