- •Глава 5 Математический аппарат алгоритмов компьютерной графики
- •5.1. Векторы
- •5.1.1. Свойства векторов
- •5.1.2. Скалярное произведение векторов
- •5.1.3. Векторное произведение векторов
- •5.2. Детерминанты
- •5.2.1. Свойства детерминантов
- •5.3. Однородные координаты
- •5.4. Использование однородных координат
- •5.5. Преобразования на плоскости
- •5.6. Матричная форма записи двумерных преобразований
- •5.7. Заключение
5.3. Однородные координаты
Уравнение аХ + bУ + с = 0 описывает прямую в пространстве R2. Заменим X на x/w, Y на y/w, получим уравнение a(x/w) + b(y/w) + с=0. Запишем его в такой форме:
ax + by + cw = 0. (5.14)
Уравнения типа (5.14) называют однородными, т. к. они имеют одинаковую структуру в терминах ах, by, cw — отсюда x, у, w называются однородными координатами точки (X, У).
Если w = 1 (двумерное пространство располагается в плоскости w = 1 в системе x, у, w), то уравнение (5.14) описывает «плоскость, проходящую через начало координат и заданную прямую линию.
Если считать, что (x, у, w) — это иная форма записи (x/w, y/w), то тогда w не должно быть равно нулю. Однако некоторые полезные свойства однородных координат проявляются именно при отсутствии такого требования.
Рассмотрим систему:
(5.15)
Система (5.15) задает две параллельные линии и не имеет решения.
При замене координат на однородные, система (5.15) преобразуется к виду:
(5.16)
Система (5.16) имеет, по крайней мере, одно решение (x = 0, у = 0, w = О)
Система:
эквивалентна системе (5.16), следовательно, верно соотношение:
(5.17)
Таким образом, решение системы (5.16) состоит из всех точек (Зk, -2k,0) где k — любое число. В пространстве x, у, w эти точки образуют прямую, проходящую через точки О (0, 0, 0) и (3, -2, 0). Данная линия бесконечно удалена, ее точки можно рассматривать как предельные точки (Зk, -2k, w), при w→0.
5.4. Использование однородных координат
В обычных двумерных координатах линейное преобразование на плоскости может быть записано следующим образом:
где А — матрица преобразования:
Точки [1 0] и [0 1] с помощью матрицы А отображаются в точки [a1 a2] и [b1 b2]. Однако, независимо от вида матрицы А, точка [0 0] отобразится в точку [0 0], поэтому таким способом нельзя выполнить операцию переноса точки в новую позицию. В однородных координатах точка в двумерном пространстве задается тройкой (x, у, w), и преобразование записывается в виде [x’ у’ z’] = [x у z]A, где
В этом случае имеют место следующие преобразования:
[1 0 0]A= [a1 а2 а3],
[0 1 0]A= [b1 b2 b3],
[0 0 1]A= [c1 c2 c3],
Это означает, что однородные координаты позволяют выразить любые преобразования путем матричного перемножения.
5.5. Преобразования на плоскости
Рассмотрим систему уравнений:
(5.18)
Система (5.18) может означать:
-
перемещение всех точек в плоскости х-у вправо на расстояние а (рис. 5.5);
-
смещение координатных осей влево на расстояние а (рис. 5.6).
Рис. 5.5. Перенос точки
Рис. 5.6. Перенос системы координат
Аналогично и в более сложных ситуациях одно и то же преобразование можно рассматривать как изменение координат точки, либо как изменение самой системы координат.
Общий случай операции переноса:
(5.19)
Рассмотрим далее операцию поворота точки P(x, у) вокруг начала координат O на угол φ в точку P'(x',у') (рис. 5.7). Новые координаты точки рассчитываются с помощью системы уравнений:
(5.20)
Рис. 5.7. Поворот точки P(x, у) вокруг начала координат O на угол φ в точку P(x, у)
Рис. 5.8. Поворот точки P(x, у) вокруг начала координат O на угол φ в точку P(x, у), если P = (1, 0)
Рис. 5.9. Поворот точки P(x, у) вокруг начала координат O на угол φ в точку P(x, у), если P = (0, 1)
Рассмотрим рис. 5.8. В случае если P = (1, 0), то x' = а, y' = с. Из рис. 5.8 найдем: а = cosφ, с = sinφ.
Аналогично, если P = (0, 1): b = -sinφ, d = cosφ (рис. 5.9).
Таким образом, поворот вокруг начала координат O можно выразить в виде:
(5.21)
Часто требуется выполнить поворот вокруг какой-то произвольной точки (x0, y0). Схема выполнения такого преобразования следующая:
-
Точка начала координат O переносится в точку с координатами (x0, y0). Для выполнения этой операции достаточно отнять от координат точки P(x, у) координаты точки (x0, y0).
-
Выполняется поворот вокруг новой точки начала координат согласно формулам:
(5.22)
-
Возвращение системы координат в первоначальный вид. Прибавляем к координатам точки P’(x’, у’) значения координат точки (x0, y0):
(5.23)
Таким образом, поворот на угол φ вокруг произвольной точки (x0, y0) можно записать следующим образом:
(5.24)