Пример 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 означает, что точка лежит ниже прямоугольника.

Приведенная ниже программа реализует алгоритм Сазерленда - Кохена отс ния отрезка по прямоугольной области.


⇐ Предыдущая| |Следующая ⇒