Задачи графических преобразований в приложениях моделирования с использованием ЭВМ
Рефераты >> Программирование и компьютеры >> Задачи графических преобразований в приложениях моделирования с использованием ЭВМ

На каждом этапе пишется матрица, соответствующая тому или иному из выделенных выше случаев 1 – 4, обладающих хорошо выраженными геометрическими свойствами.

Выпишнм соответствующие матрицы третьего порядка.

А. Матрица вращения (rotation)

cos j sin j 0

[ R ] = -sin j cos j 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 (рис. 9).

А

0

Y

X

j

Рис. 8

1-й шаг. Перенос на вектор – А (-a, -b) для смещения центра поворота с началом координат;

1 0 0

[ T-A ] = 0 1 0 (3.9)

-a -b 1

матрица соответствующего преобразования.

2-й шаг. Поворот на угол j;

cos j sin j 0

[ Rj ] = -sin j cos j 0 (3.10)

0 0 1

матрица соответствующего преобразования.

3-й шаг. Перенос на вектор А (a, b) для возвращения центра поворота в прежнее положение;

1 0 0

[ TA ] = 0 1 0 (3.11)

a b 1

матрица соответствующего преобразования.

Перемножим матрицы в том же порядке, как они выписаны:

[ T-A ] [ Rj ] [ TA ].

В результате получим, что искомое преобразование (в матричной записи) будет выглядеть следующим образом:

cos j sin j 0

(x* y* 1) = (x y 1) -sin j cos j 0 (3.12)

-a cos j + b sin j + a -a sin j - b cos j + b 1

Элементы полученной матрицы (особенно в последней строке) не так легко запомнить. В то же время каждая из трех перемножаемых матриц по геометрическому описанию соответствующего отображения легко строится.

Пример 2. Построить матрицу растяжения с коэффицентами растяжения a вдоль оси абсцисс и b вдоль оси ординат и с центром в точке А (a, b).

1-й шаг. Перенос на вектор –А (-a, -b) для совмещения центра растяжения с началом координат;

1 0 0

[ T-A ] = 0 1 0 (3.13)

-a -b 1

матрица соответствующего преобразования.

2-й шаг. Растяжение вдоль координатных осей с коэффицентами a и b соответственно; матрица преобразования имеет вид

a 0 0

[ D ] = 0 d 0 (3.14)

0 0 1

3-й шаг. Перенос на вектор А (a, b) для возвращения центра растяжения в прежнее положение; матрица соответствующего преобразования:

1 0 0

[ TA ] = 0 1 0 (3.15)

a b 1

Премножив матрицы в том же порядке

[ T-A ] [ D ] [ TA ],

получим окончательно

a 0 0

( x* y* 1) = (x y 1) 0 d 0 (3.16)

(1 - a)a (1 - d)b 1

Рассуждая подобным образом, то есть разбивая предложенное преобразование на этапы, поддерживаемые матрицами [ R ], [ D ], [ M ], [ T ], можно построить матрицу любого аффинного преобразования по его геометрическому описанию.

4. Аффинные преобразования в пространстве

Рассмотрим трехмерный случай (3D) (3-dimension) и сразу введем однородные координаты.

Потупая аналогично тому, как это было сделано в размерности два, заменим координатную тройку (x, y, z), задающую точку в пространстве, на четверку чисел