- •Пугачев а.И.
- •1.1. Растровые изображения
- •1.2. Графические устройства ввода-вывода
- •1.3. Видеоадаптеры
- •2.1. Двумерные примитивы
- •2.2. Визуализация на дискретной области вывода
- •2.3. Визуализация отрезков прямых
- •2.5. Кривые Безье
- •2.7. Алгоритм закрашивания ориентированных многоугольников
- •2.8. Теоретико-множественные операции над двумерными областями
- •2.9. Построчный алгоритм тмо
- •2.10. Программная организация данных для представления сложных объектов
- •3.1. Двумерные геометрические преобразования
- •3.2. Совмещение преобразований. Преобразование относительно заданного центра
- •3.4. Непрерывные геометрические преобразования
- •3.5. Линейные преобразования фрагментов изображения
- •4.1. Трехмерные примитивы
- •4.2. Аппроксимация криволинейных поверхностей
- •4.3. Многогранники и сложные объекты
- •4.4. Свет и цвет
- •4.5. Диффузная модель распространения света
- •4.6. Зеркальное отражение света
- •4.7. Трехмерные геометрические преобразования
- •4.8. Проецирование трехмерных объектов
- •4.9. Ориентация и потенциальная видимость поверхностей
- •4.10. Удаление невидимых точек поверхностей
- •4.11. Метод визуального сглаживания Гуро
- •4.12. Метод визуального сглаживания Фонга
- •4.13. Системы координат в пространственной сцене
- •4.14. Алгоритмы трехмерной визуализации
- •4.15. Построение изображения с тенями
- •Основы компьютерной графики
3.2. Совмещение преобразований. Преобразование относительно заданного центра
Часто над объектами приходится последовательно выполнять несколько преобразований. Пусть последовательность преобразований задана матрицами W1, W2, . . . , Wn. Рассмотрим преобразование точки с координатами C = [x y 1].
В результате преобразования W1 получим
, (3.9)
а после преобразования W2
(3.10)
Продолжая выполнять очередные преобразования, в итоге будем иметь
(3.11)
Если вычислить матрицу , то заданную последовательность преобразований можно заменить одним результирующим преобразованием с матрицей U.
Замечание. Умножение матриц некоммутативно, поэтому матрицы W1, W2, . . . , Wn следует умножать в той последовательности, в которой они заданы.
Такие элементарные преобразования, как масштабирование и поворот, приведенные в форме (3.6) и (3.8), выполняются относительно начала координат. Если же преобразование W необходимо выполнить относительно произвольно заданного центра (xc , yc), то его производят в следующей последовательности.
-
Заданную точку P с матрицей координат С и центр преобразования сместить преобразованием M так, чтобы центр преобразования совпал с началом координат:
(3.12)
-
Выполнить над P заданное преобразование W относительно начала координат, а следовательно, и относительно заданного центра преобразования:
(3.13)
-
Обратным преобразованием перемещения M-1 точку и центр преобразования сместить так, чтобы центр преобразования снова оказался на исходном месте:
(3.14)
Матрица преобразования смещения M и обратная ей матрица M-1 имеют следующий вид:
(3.15)
Таким образом, матрица U результирующего преобразования относительно заданного центра вычисляется как
(3.16)
Предварительный расчет матрицы U перед выполнением преобразования позволяет сократить объем вычислений при расчете новых координат точек.
3.3. Преобразование алгебраических линий
Линейные геометрические преобразования можно применять не только к отдельным точкам, но и к другим объектам, имеющим аналитическое описание. В частности, можно производить преобразование алгебраических линий.
Уравнение прямой линии общего положения
a1 x + a2 y + a3 = 0 (3.17)
представим в матричной форме:
C A = 0, (3.18)
где C , A .
Пусть над линией необходимо выполнить преобразование с матрицей W, т.е. всякой точке на прямой с матрицей исходных координат С нужно поставить в соответствие точку с матрицей координат C = C W.
Из последнего соотношения выразим C. Для этого умножим обе части равенства на матрицу W -1, обратную матрице W:
C W -1 = C W W –1. (3.19)
После сокращения получим С = C W –1. Подставим выражение для C в исходное уравнение прямой (3.17):
C W -1 А = 0. (3.20)
Поскольку C – матрица координат после преобразования, то уравнение (3.20) будет соответствовать той же прямой после преобразования, а W -1 А – это матрица-столбец коэффициентов уравнения прямой после преобразования, т.е. для преобразования с матрицей W формула для расчета матрицы A новых коэффициентов уравнения прямой имеет следующий вид:
A = W -1 А. (3.21)
Рассмотрим теперь преобразование линии 2-го порядка общего вида с уравнением
(3.22)
Представим (3.22) в матричной форме:
C A C Т = 0, (3.23)
где – матрица коэффициентов уравнения линии. Причем матрица A симметрическая, т.е. aij = aji для i, j = 1, 2, 3. Матрица-столбец C Т означает транспонированную матрицу C.
Как и в предыдущем случае, сделаем в уравнении (3.23) замену С = C W –1. В результате получим
С W –1 A (C W –1)T = 0. (3.24)
Чтобы привести (3.24) по форме к первоначальному виду, воспользуемся следующей известной в математике формулой о транспонировании произведения матриц: (C W –1)T = (W –1)T (C )T. На основании нее уравнение (3.24) можно представить следующим образом:
С W –1 A (W –1)T (C )T = 0. (3.25)
Сравнивая (3.23) и (3.25), можно заключить, что W –1 A (W –1)T должно быть матрицей коэффициентов уравнения линии. Следовательно, формула для вычисления новых коэффициентов уравнения линии 2-го порядка после преобразования W будет иметь следующий вид:
A = W –1 A (W –1)T. (3.26)
Приведенные здесь выводы позволяют производить геометрические преобразования над любыми объектами, заданными в аналитическом виде.