Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ALL

.pdf
Скачиваний:
223
Добавлен:
12.02.2018
Размер:
15.74 Mб
Скачать

КОМБИНИРОВАННЫЕ ПРЕОБРАЗОВАНИЯ

Для получения желаемой ориентации может потребоваться более одного преобразования. Так как операция умножения матриц не коммутативна, то

важен порядок выполнения преобразования.

Для иллюстрации эффекта некоммутативности операции умножения матриц рассмотрим преобразования поворота и отражения координатного вектора [х у]. Если вслед за поворотом на 90° (посредством [T1]) производится отражение

относительно прямой у = -х (посредством [Т2]), то эти два последовательных преобразования дают

X / X T

x

 

y 0

 

1

y

x

 

 

 

 

 

 

 

1

 

 

1

0

 

 

 

 

 

 

 

 

 

 

 

X *

 

 

 

 

 

 

 

 

 

 

 

 

затем

X T

 

x

y

0

1

y

x

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

если отражение следует за поворотом, то получатся следующие результаты

 

X

 

X T x

y

 

 

 

y

x

 

 

 

 

 

 

/

 

 

 

 

0

 

1

 

 

 

 

 

 

 

 

 

 

2

 

 

1

 

0

 

 

 

 

 

 

 

 

X * X T

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

y

 

0 1

y

x

 

 

 

 

 

 

1

 

 

 

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Оба результата различны, что подтверждает важность порядка применения матричных преобразований.

КОМБИНИРОВАННЫЕ ПРЕОБРАЗОВАНИЯ

Ранее отдельные матричные преобразования применялись последовательно к результатам предыдущих преобразований.

Первое преобразование x/ y/

Второе x/ xy/ T2 x* y T1y*

Можно отдельные преобразования предварительно комбинировать или конкатенировать, а затем полученная матрица применяется к исходному вектору

T1 T2 T3

 

x

y T x*

y*

 

3

 

ПРЕОБРАЗОВАНИЕ ЕДИНИЧНОГО КВАДРАТА

Можно корректно рассматривать применение матрицы к любой точке плоскости. Как показано ранее, точка, инвариантная к воздействию матричных преобразований

— начало координат. Все другие точки плоскости подвержены преобразованию, которое можно представить как растяжение исходной плоскости, системы координат и перевод в новую форму. Формально принято считать, что преобразование вызывает переход от одного координатного пространства к другому.

Рассмотрим координатную сетку, состоящую из единичных квадратов на координатной плоскости xy (рис. 11). Четыре координатных вектора вершин единичного квадрата, проходящие под одним углом к началу координат, имеют следующий вид рис. 11а:

Применим 2х2матрицу общего преобразования

A 0

0

 

 

 

 

 

0

0

 

A*

B

1

0

 

 

a b

 

 

 

a

b

 

B

*

 

 

 

 

 

 

 

 

 

C

1

1

c d

 

a c

b d

 

*

 

 

 

 

 

 

 

 

 

 

 

c

d

C

 

*

D 0

1

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

 

 

 

 

 

01 10

0

0 1 1

начало координат — А единичная точка В на оси х внешний угол С единичная точка D на оси у

• Результат на рис. 11b. Начало координат не подвергается преобразованию, т. е. [А] = [А*] = [0 0]. Координаты В* равны первой строке матрицы преобразования, координаты D* — второй. Т.е. матрица преобразования определена, если определены координаты В* и D* (преобразование единичных векторов [1 0], [0 1]). Стороны единичного квадрата первоначально параллельны, а параллельные линии преобразуются в параллельные, то результирующая фигура -параллелограмм.

ПРЕОБРАЗОВАНИЕ ЕДИНИЧНОГО КВАДРАТА

Рис. 11 Общее преобразование единичного квадрата: а) до преобразования; b) после преобразования.

ПРЕОБРАЗОВАНИЕ ЕДИНИЧНОГО КВАДРАТА

Несложно определить также площадь параллелограмма A*B*C*D* (рис. 11b), которую можно вычислить следующим образом:

Ap a c b d 12 ab 12 cd 2c b b d b2 c a c

B результате получаем

A

 

ab bc det a

b

 

p

 

 

c

d

 

 

 

 

 

Можно показать, что площадь любого параллелограмма Ар, образованного путем преобразования квадрата, есть функция от определителя матрицы

преобразования и связана с площадью исходного квадрата As простым отношением

Ар = As(ad - bc) = As det [T].

фактически, так как площадь всей фигуры равна сумме площадей единичных

квадратов, то площадь любой преобразованной фигуры At зависит от площади исходной фигуры Ai

At = Ai(ad— bc).

Это полезный способ определения площадей произвольных фигур.

ПРЕОБРАЗОВАНИЯ ЖЕСТКИХ КОНСТРУКЦИЙ

Рассмотрим в каких случаях угол между пересекающимися прямыми сохраняется. Напомним, что скалярное произведение двух векторов равно

V1 V 2 V1xV2x V1yV2 y V1V 2 cos

• а векторное произведение двух векторов, принадлежащих плоскости ху, определяется как

V1 V 2 V1xV2 y V1yV2x k V1V 2 k sin

где индексы х и у относятся к компонентам х и у вектора, θ – острый угол между векторами, а k – единичный вектор, перпендикулярный к плоскости ху.

Проведем преобразование V1 и V2, используя матрицу общего преобразования

 

 

 

 

 

 

 

 

 

 

 

V1

 

V1

 

 

 

 

 

V1

 

a V1

 

c

 

 

V1

 

 

 

b V1

 

d

 

 

 

 

*

 

 

 

 

 

 

 

 

 

 

 

a

b

 

 

 

 

 

 

 

 

 

V

 

 

 

 

 

V 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

T

V

x

 

y

 

V

x

 

 

 

 

 

y

 

 

 

 

 

 

x

 

 

y

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

V

 

c

d

 

 

a V

 

 

c V

 

 

 

b V

 

 

d

 

 

 

*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

V 2

 

2 x

2 y

 

 

 

 

 

2 x

 

 

2 y

 

 

 

 

2 x

 

2 y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

V

 

2

 

Векторным произведением векторов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

* ad cb V

 

 

 

 

 

 

 

 

 

*

 

 

 

*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

V

 

V

 

V

V V

 

k

V

 

V

 

k sin

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

2

 

 

 

1x 2 y

 

1y

2 x

 

 

 

 

 

 

 

1

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

скалярное произведение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a2

b2 V1xV2x c2

d2 V1yV2 y (ac bc)(V1xV2 y V1yV2x )

 

 

 

 

 

 

 

2

 

cos

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

V1 V 2

V1

V

ПРЕОБРАЗОВАНИЯ ЖЕСТКИХ КОНСТРУКЦИЙ

Сравнивая уравнения, а также приравняв коэффициенты подобных членов, получим

• а2 + b2 = 1, (1a) c2+d2 = 1, (1b) ac + bd = 0, (1c)

ad-bc = +1. (2)

Выражения (1a, b, с) соответствуют условиям ортогональности матрицы, т. е.

[T][T]-1 = [T][T]T=[I]

• или

a

b a

b

a2

b2

ac bd

 

c

d c

d

 

bd

c

2

d

2

 

 

 

 

 

ac

 

 

 

Выражение (2) требует, чтобы определитель матрицы преобразования был равен +1.

Т.е. при полном повороте углы между пересекающимися прямыми сохраняются. Данный результат распространяется также и на операцию отражения, ортогональная

матрица которого имеет определитель, равный —1. В этом случае величины векторов сохраняются, но угол между преобразованными векторами в равен 2 – θ.

Следовательно, в общем случае угол не сохраняется.

Однако перпендикулярные прямые преобразуются в перпендикулярные прямые. Поскольку sin(2 – θ) = –sinθ, ad – bc = –1, полные повороты и отражения называются преобразованиями жесткой конструкции.

Равномерное масштабирование также сохраняет неизменным угол между пересекающимися прямыми, но не величину преобразуемых векторов.

ПЕРЕМЕЩЕНИЯ И ОДНОРОДНЫЕ КООРДИНАТЫ

С помощью матричного преобразования нельзя просто перенести параллельно объект, а также выполнить поворот объекта вокруг произвольной точки в области. Для этого переходим в другую координатную систему, используем однородные координаты. – В ней объект “n”-ой степени описывается с помощью “n+1” степени, т.е. двумерный объект описывается с помощью трех координат.

х* = ах + су + m,

у* = bx + dy + n.

Однородные координаты неоднородного координатного вектора [х у] представляют собой тройку [х' у' h], где х = х'/h, у = y'/h, а h – некоторое вещественное число (случай h = 0 является особым).

Всегда существует один набор однородных координат вида [х у 1], чтобы представить координатный вектор [х у] на физической плоскости ху.

Все остальные однородные координаты представляются в виде [hx hy h]. Данные координаты не сохраняют однозначности, например, все следующие координаты [6 4 2], [12 8 4], [3 2 1] представляют физическую точку (3,2).

ПЕРЕМЕЩЕНИЯ И ОДНОРОДНЫЕ КООРДИНАТЫ

Матрица преобразования для однородных координат имеет размер 3 х 3. В

частности,

a

b

0

T c

d

0

m

n

1

 

 

 

где действие элементов а, b, с и d верхней части 2 х 2-матрицы точно соответствует действиям, рассмотренным ранее.

Элементы m и n являются коэффициентами перемещения в направлениях х и у соответственно.

Полная двумерная матрица преобразования имеет вид

x*

y*

1 x

1

0

0

x m

y n 1

 

y 1 0

1

0

 

 

 

 

m

n

1

 

 

 

 

 

 

 

 

 

 

 

Отметим, что каждая точка плоскости и в том числе начало координат

х = у = 0 теперь могут быть преобразованы.

ПОВОРОТ ВОКРУГ ПРОИЗВОЛЬНОЙ ТОЧКИ

В общем случае поворот вокруг произвольной точки может быть реализован посредством последовательности

1.Перемещения ее в начало координат,

2.Выполнения требуемого поворота

3.и последующего перемещения результата обратно в исходный центр вращения.

Таким образом, поворот вектора [х у 1] вокруг точки m, n на произвольный угол можно осуществить следующим образом:

x*

 

1 x

 

1

0

0

cos

sin

0

1

0

0

y*

y 1

0

1

0

sin

cos

0

0

1

0

 

 

 

m

n

1

 

0

0

1

m n

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сдвиг

 

 

поворот

 

возвращение

 

 

 

 

координат

 

 

 

 

начала координат

Матрицы либо перемножаем последовательно, либо сначала перемножаем три матрицы преобразований и потом умножаем на первую. Выполняя действия над внутренними матрицами, можно записать

x*

 

1 x

 

cos

y*

y 1

sin

 

 

 

m cos 1 n sin

 

 

 

 

 

sin cos

n cos 1 m sin

0

0 1

Соседние файлы в предмете Компьютерная Графика