Пример 2. Построить матрицу растяжения с коэффициентами растяжения а вдоль оси абсцисс и (5 вдоль оси ординат и с центром в точке Л(а,Ь).
1-й шаг. Перенос на вектор - Л(-а,-Ь) для совмещения центра растяжения с началом координат;
1 0 .0"
матрица соответствующего преобразования.
[Т-аЬ
о
- а
1 0 -Ь 1
*-и шаг. Растяжение вдоль координатных осей с коэффициентами аи £соответственно; матрица преобразования имеет вид Компьютерная графика. Полигональные модели а О О 0 5 0 О 0 1
3-й шаг. Перенос на вектор - Л(-а,-Ь) для возвращения центра растяжения в прежнее положение; матрица соответствующего преобразования 1 О О'
[Тд] =
О 1 о а Ь 1
Перемножив матрицы в том же порядке [Т_А ЩтА \ получим окончательно: О О"
(хУі)=(хуі)
а О 6 0
(1-а)а (1-5)Ь 1
Замечание. Рассуждая подобным образом, т. е. разбивая предложенное прербразо ваше на этапы, поддерживаемые матрицами
[к]Дв]Дм]Дт], можно построить матрицу любого аффинного преобразования по его геометрическому описанию.
Глава 8
ОСНОВНЫЕ АЛГОРИТМЫ ВЫЧИСЛИТЕЛЬНОЙ ГЕОМЕТРИИ
8.1. Отсечение отрезка. Алгоритм Сазерленда - Кохена Необходимость отсечения выводимого изображения по границам некоторой ласти встречается довольно часто.
В простейших ситуациях в качестве такой области, как правило, выступает прямоугольник (рис. 8.1).
Ниже рассматривается достаточно простой и эффективный алгоритм отсечения отрезков по границе произвольного прямоугольника.
Четырьмя прямыми вся плоскость разбивается на 9 областей (рис. 8.2). По отношению к прямоугольнику точки в каждой из этих областей расположены одинаково.
Определив, в какие области попали концы рассматриваемого отрезка, легко понять, где именно необходимо произвести отсечение. Для этого каждой области ставится в соответ-ствие4-битовый код, где установленный бит 0 означает, что точка лежит левее прямоугольника, бит 1 означает, что точка лежит выше прямоугольника, бит 2 означает, что точка лежит правее прямоугольника, бит 3 означает, что точка лежит ниже прямоугольника.
Приведенная ниже программа реализует алгоритм Сазерленда - Кохена отс ния отрезка по прямоугольной области.