5. системы координат, типы преобразований графической информации
Перейдем теперь к рассмотрению вопросов обработки векторных изображений. Как мы уже знаем, векторное изображение хранится в виде набора координат своих базовых элементов – отрезков и дуг. Над векторными изображениями можно выполнять так называемые аффинные преобразования – перенос, поворот и масштабирование. При аффинных преобразованиях сохраняются углы между элементами векторного изображения.
5.1. Проблемы геометрического моделирования
Методы выполнения аффинных преобразований хорошо известны из аналитической геометрии. Например, рассмотрим перенос (трансляцию) и поворот. Пусть на плоскости имеется двухмерная система координат XOY. В этой системе точка М имеет координаты х, у. Пусть на той же плоскости имеется еще одна система координат. Тогда в этой новой системе та же точка М будет иметь в общем случае иные координаты х', y'. Отметим, что одна система координат переводится в другую при перемещении ее центра вдоль отрезка, соединяющего начала координат обоих систем. Тогда переход от одной прямоугольной декартовой системы координат к другой описывается формулами:
|
|
(2) |
Здесь a, b, d, g, m, l - произвольные числа.
Данное преобразование показано на Рис. 5.1.

Рис. 5.1 - Общий случай перехода от одной координатной системы к другой.
Плоскопараллельный перенос (трансляция) точки заключается в алгебраическом сложении ее координат с приращениями dx и dy:
|
x'=x+dx y'=y+dy |
(3) |
Это равносильно перемещению точки вдоль отрезка (х, у) - (dx, dy).
Пусть точку М(х,у) нужно повернуть вокруг начала координат на угол j. Новые координаты точки после поворота определяются по формулам (Рис. 5.2):
|
|
(4) |

Рис. 5.2 - Поворот системы координат.
Как видно из этих несложных примеров, для разных преобразований используются совершенно разные методики. Однако существует единый универсальный подход, основанный на использовании матричного исчисления. Именно он и используется в системах векторной графики.
5.2. Понятие однородных координат
Матрицы применяются для описания элементарных операций над геометрическими примитивами. Для этого вводится понятие однородных координат точки на плоскости.
На плоскости точка в однородных координатах описывается не двумя, а тремя числами. Пусть на плоскости есть точка М с координатами х,у. Тогда ее однородными координатами называются три одновременно не равных нулю числа х1, х2, х3 таких, что
.
В машинной графике точке с координатами х, у на плоскости ставится в соответствие точка с координатами х, у, 1 в пространстве (Рис. 5.3). Фактически точка х, у проектируется на плоскость, параллельную координатной и отстоящей от нее на расстояние, равное единице.

Рис. 5.3 - Однородные координаты точки.
В проективной геометрии однородные координаты обычно записываются как х1:х2:1. Их также удобно представить в виде hx1:hx2:h, где h есть Z - координата проективной плоскости.
Основное преимущество однородных координат - возможность замены операций с вещественными числами на операции с целыми числами. Такая замена является абсолютно необходимой, поскольку целочисленная арифметика на компьютере выполняется в десятки раз быстрее, чем арифметика с плавающей точкой. Например, точка имеет однородные координаты 0,5:0.1:2.5 при h=1. Просто переместим проективную плоскость повыше, приняв h=10. Тогда координаты примут вид 5:1:2.5. Третья координата при выводе на экран не используется, а первые две стали целыми числами.
Рассмотрим матричную запись аффинных преобразований на плоскости (Табл. 5.1).
Табл. 5.1

Здесь X, Y, h - однородные координаты произвольной точке в исходной системе координат.
Таким образом, все преобразования сводятся к перемножению матрицы-столбца, содержащей однородные координаты точки, и соответствующей матрицы преобразования. Это позволяет резко упростить алгоритм обработки векторных изображений и повысить его быстродействие.
5.3. Геометрические операции над моделями
Современные системы компьютерной графики работают не только с плоскими изображениями, но и с объемными (трехмерными). Для выполнения преобразований в трех измерениях естественно распространить матричные операции и на трехмерные геометрические объекты. Для этого по аналогии с двухмерным случаем введем понятие однородных координат точки в пространстве. Заменим тройку чисел (x, y, z) четверкой (x, y, z, 1). В общем виде однородные координаты представляются в виде
.

Рис. 5.4 – Куб и гиперкуб.
Как представить себе смысл величины h? По аналогии с двухмерным случаем h есть расстояние от координатного пространства XYZ до проективной гиперплоскости, на которую это пространство проектируется. Размерность гиперплоскости равна четырем. Мысленно представить себе четырехмерный объект практически невозможно (Рис. 5.4). Например, каждой гранью четырехмерного гиперкуба является привычный нам трехмерный куб и т.д.
Зададим элементарные операции в пространстве в виде матриц.
Матрица вращения вокруг оси абсцисс на угол
:

Следует помнить, что матрица соответствует линейной системе уравнений координат точек.
Матрица вращения вокруг оси ординат на угол
:

Матрица вращения вокруг оси аппликат на угол
:

Очень важное свойство вращения в пространстве состоит в том, что оно некоммутативно. Коммутативностью называется независимость результата операции от порядка следования операндов. Например, для обычных чисел A×B=B×A. Для матриц же такое правило не соблюдается: при умножении матриц в общем случае A×B¹B×A. И действительно, результат вращения тела в пространстве зависит от последовательности выполнения вращений. Отметим, что вращение на плоскости вcегда коммутативно. Мы можем сначала повернуть объект на 15о, а затем на 30о, или наоборот – сначала на 30о, а затем на 15о – в обоих случаях тело окажется повернутым на 45о.
Матрица масштабирования с коэффициентами сжатия/растяжения
вдоль оси абсцисс,
- оси ординат,
- оси аппликат:

Для определения переноса объекта удобно воспользоваться вектором переноса с координатами
, вдоль которого объект и перемещается в направлении вектора. Тогда можно записать следующую матрицу переноса:


