Уроки OpenGL + C#.

Геометрические преобразования в трехмерном пространстве. Введение.

 

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

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


Основными операциями, которые относятся к геометрическим преобразованиям двумерных графических объектов, являются:

- перенос начала координат;
- масштабирование;
- поворот осей координат.

Теперь подробнее об этих операциях.

2. Поворот

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

x' = x cos w + y sin w,

y' = -x sin w + y cos w.

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


Матрица поворота

3. Перенос

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

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

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

Перенос

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

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

Матрица, необходимая для выполнения операции масштабирования имеет вид:

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

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


Обсуждение данного урока: Алгоритмы геометрических преобразований в компьютерной графике. OpenGl.
Далее: 9.2 Реализация программы демонстрации трансформации (управление с помощью опроса клавиш).