Лекция № 8,9 координатные преобразование объектов.
Общие вопросы преобразования.
В компьютерной графике часто применяются различные геометрические преобразования над объектами: вращение, сжатие, параллельный перенос и др. С помощью них, однократно описав топологию объекта, мы можем получить много различных его экземпляров. Обычно принято разделять преобразования первого рода (собственные движения, сохраняющие ориентацию углов) и преобразования второго рода (зеркальные движения, меняющие ее). К первым относят параллельный перенос, поворот и др., ко вторым – симметрии (относительно точки, прямой, окружности). Математически эти преобразования описываются матрицами преобразований.
В качестве модели здесь выступает описание поверхности трехмерного объекта в виде некоторого подмножества точек декартова пространства. Поэтому рассматриваемые преобразования тесно связанны с системой координат. Координатный метод был введен в XVII веке французскими математиками Декартом и Ферма. В современной компьютерной графике широко используется координатный метод. Этому есть несколько причин:
Каждая точка на экране (или на бумаге при печати на принтере) задается координатами (например, пиксельными).
Координаты используются для описания объектов, которые будут отображаться как пространственные. Например, объекты микромира, объекты на поверхности Земли, объекты космического пространства и тому подобное.
При выполнении многих промежуточных действий отображения используют разные системы координат и преобразования из одной системы в другую.
Преобразование координат и преобразование объектов.
Сначала рассмотрим общие вопросы преобразования координат. Пусть задана n-мерная система координат в базисе (k1, k2, ..., kn), описывающая положение точки в пространстве с помощью числовых значений ki. В компьютерной графике чаще всего используется двумерная (n=2) и трехмерная (n=3) системы координат. Если задать другую, N-мерную, систему координат в базисе (m1, т2, .... mN) и поставить задачу определения координат в новой системе, зная координаты в старой, то решение (если оно существует), можно записать в таком виде:
где fi – функция пересчета i-й координаты.
Можно поставить и обратную задачу – по известным координатам (m1, т2, .... mN) определить координаты (k1, k2, ..., kn) . Решение обратной задачи запишем так:
где Fi – функции обратного преобразования.
В случае, когда размерности систем координат не совпадают (п N), осуществить однозначное преобразование координат зачастую не удается. Например, по двумерным экранным координатам нельзя без дополнительных условий однозначно определить трехмерные координаты отображаемых объектов.
Преобразование объектов можно описать так. Пусть любая точка, которая принадлежит определенному объекту, имеет координаты (k1, k2, ..., kn) в n-мерной системе координат. Тогда преобразование объекта можно определить как изменение положения точек объекта. Новое положение точки пространства отвечает новым значениям координат (т1, т2 .... тn).
Соотношение между старыми и новыми координатами для всех точек объекта:
(т1, т2 .... тn) = F(k1, k2, ..., kn) и будет определять преобразование объекта,
где F – функция преобразования.
Например, преобразование объектов на плоскости можно определить так:
В трехмерном пространстве:
Классификация преобразований.
Преобразования классифицируют:
по системам координат (например, преобразование из полярной системы в прямоугольную);
по виду функций преобразования fi.
По виду функций преобразования различают линейные и нелинейные преобразования.
Если при всех i = 1, 2, .... N, функции fi – линейные относительно аргументов (k1, k2, ..., kn), то есть , где aij – константы, то такие преобразования называются линейными, а при п = N – аффинными.
Если хотя бы для одного i функция fi – нелинейная относительно (k1, k2, ..., kn), тогда преобразование координат в целом не линейно. Например, преобразование – нелинейное, так как в выражении для Y присутствует ху.
Примеры линейных и нелинейных преобразований.
Линейные преобразования (прямые переходят в прямые).
Линейное преобразование применяется к каждой точке (вершине) модели;
Не изменяет топологию модели.
Можно описать уравнением:
Перенос |
|
Параллельный перенос есть перемещение каждой точки в одном и том же направлении на фиксированное расстояние. Преобразование параллельного переноса задается следующими формулами:
|
|
Поворот (2D) |
|
Поворот – это преобразование плоскости, при котором расстояние от центра поворота до точки сохраняется и каждая точка повернута на определенный ориентированный угол, т.е. движение с единственной неподвижной точкой.
|
|
Масштабирование |
|
Преобразование подобия есть преобразование плоскости, при котором расстояния изменяются в некоторое фиксированное число раз (k).
|
|
Сдвиг (2D) |
|
|
|
Нелинейные преобразования.
Произвольное преобразование точек модели