Выбор этих четырех частных случаев определяется двумя обстоятельствами.
1. Каждое из приведенных выше преобразований имеет простой и наглядный геометрический смысл (геометрическим смыслом наделены и постоянные числа, входящие в приведенные формулы).
2. Как известно из курса аналитической геометрии, любое преобразование вида (2.1) всегда можно представить как последовательное исполнение (суперпозицию) простейших преобразований вида 1 – 4 (или части этих преобразований).
Таким образом, справедливо следующее важное свойство аффинных преобразований плоскости: любое отображение вида (2.1) можно описать при помощи отображений, задаваемых формулами (2.3) – (2.11).
Для эффективного использования этих известных формул в задачах компьютерной графики более удобной является их матричная запись. Матрицы, соответствующие случаям 1 – 3, строятся легко и имеют соответственно следующий вид:
2.2. Однородные координаты точки
Пусть М – произвольная точка плоскости с координатами х и у, вычисленными относительно заданной прямолинейной координатной системы. Однородными координатами этой точки называется любая тройка одновременно не равных нулю чисел х1, х2, х3, связанных с заданными числами х и у следующими соотношениями:
x1 / x3 = x, x2 / x3 = y (3.1)
При решении задач компьютерной графики однородные координаты обычно вводятся так: произвольной точке М (х, у) плоскости ставится в соответствие точка МЭ (х, у, 1) в пространстве.
Необходимо заметить, что произвольная точка на прямой, соединяющей начало координат, точку О (0, 0, 0), с точкой МЭ (х, у, 1),может быть задана тройкой чисел вида (hx, hy, h).
Будем считать, что h = 0. Вектор с координатами hx, hy, h является направляющим вектором прямой, соединяющей точки О (0, 0, 0) и МЭ (х, у, 1). Эта прямая пересекает плоскость z = 1 в точке (х, у, 1), которая однозначно определяет точку (х, у) координатной плоскости ху.
Тем самым между произвольной точкой с координатами (х, у) и множеством троек чисел вида (hx, hy, h), h = 0, устанавливается взаимно однозначное соответствие, позволяющее считать числа hx, hy, h новыми координатами этой точки.
Широко используемые в проективной геометрии однородные координаты позволяют эффективно описывать так называемые несобственные элементы (по существу, те, которыми проектная плоскость отличается от привычной евклидовой плоскости).
В проективной геометрии для однородных координат принято следующее обозначение:
х : у : 1 (3.2)
или, более общо,
х1 : х2 : х3 (3.3)
(здесь непременно требуется, чтобы числа х1, х2, х3 одновременно в нуль не обращались).
Применение однородных координат оказывается удобным уже при решении простейших задач.
Рассмотрим, например, вопросы, связанные с изменением масштаба. Если устройство отображения работает только с целыми числами (или если необходимо работать только с целыми числами), то для произвольного значения h (например, h = 1) точку с однородными координатами (0.5, 0.1, 2.5) представить нельзя. Однако при разумном выборе h можно добиться того, чтобы координаты этой точки были целыми числами. В частности, при h = 10 для рассматриваемого примера имеем (5, 1, 25).
Рассмотрим другой случай. Чтобы результаты преобразования не приводили к арифметическому переполнению для точки с координатами (80000, 40000, 1000) можно взять, например, h = 0.001. В результате получим (80, 40, 1).
Приведенные примеры показывают полезность использования однородных координат при проведении расчетов. Однако основной целью введения однородных координат в компьютерной графике является их несомненное удобство в применении к геометрическим преобразованиям.
При помощи троек однородных координат и матриц третьего порядка можно описать любое аффинное преобразование плоскости.
Считая, h = 1, сравним две записи:
(3.4)Нетрудно заметить, что после перемножения выражений, стоящих в правой части последнего соотношения, мы получим формулы (2.1) и (2.2) и верное числовое равенство 1 = 1. Тем самым сравниваемые записи можно считать равносильными.
Элементы произвольной матрицы аффинного преобразования не несут в себе явно выраженного геометрического смысла. Поэтому чтобы реализовать то или иное отображение, то есть найти элементы соответствующей матрицы по заданному геометрическому описанию, необходимы специальные приемы. Обычно построение этой матрицы в соответствии со сложностью поставленной задачи и с описанными выше частными случаями разбивают на несколько этапов.
На каждом этапе пишется матрица, соответствующая тому или иному из выделенных выше случаев 1 – 4, обладающих хорошо выраженными геометрическими свойствами.
Выпишем соответствующие матрицы третьего порядка.
А. Матрица вращения (rotation)
cosj sinj 0
[R] = -sinj cosj 0 (3.5)
0 0 1
Б. Матрица растяжения-сжатия (dilatation)
a 0 0
[ D] = 0 d 0 (3.6)
0 0 1
В. Матрица отражения (reflection)
1 0 0
[M] = 0 -1 0 (3.7)
0 0 1
Г. Матрица переноса (translation)
1 0 0
[T] = 0 1 0 (3.8)
l m 1
Рассмотрим примеры аффинных преобразований плоскости.
Пример 1. Построить матрицу поворота вокруг точки А (a, b) на угол j (рис. 12).
j
1-й шаг. Перенос на вектор – А (-a, -b) для смещения центра поворота с началом координат;
1 0 0
[T-A] = 0 1 0 (3.9)
-a -b 1
матрица соответствующего преобразования.
2-й шаг. Поворот на угол j;
cosj sinj 0 [Rj] = -sinj cosj 0 (3.10)
0 0 1
матрица соответствующего преобразования.
3-й шаг. Перенос на вектор А (a, b) для возвращения центра поворота в прежнее положение;
1 0 0
[TA] = 0 1 0 (3.11)
ab 1
матрица соответствующего преобразования.
Перемножим матрицы в том же порядке, как они выписаны:
[ T-A ] [ Rj ] [ TA ].
В результате получим, что искомое преобразование (в матричной записи) будет выглядеть следующим образом: