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

ALL

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

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

Средняя точка отрезка А* В* выражается через преобразованные конечные точки

 

x*

x*

 

y*

y*

 

 

ax cy

 

ax cy

2

 

bx dy

 

bx dy

2

 

 

x*m

y*m

1

2

 

1

2

 

 

1

1

 

2

 

 

1

1

 

2

 

 

 

 

2

 

2

 

 

2

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

x1 x2

c y1 y2

b x1 x2 d y1 y2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 2 2 2

Для исходной линии АВ, можно определить среднюю точку :

 

xm

ym

x

x

 

y y

 

 

 

 

1

2

 

1

2

 

 

 

2

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Применив [Т] к средней точке линии АВ, получаем:

xm

 

 

 

x

x

ym T

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

x2

 

 

 

y1 y2

a

 

 

 

c

 

 

 

 

2

 

 

2

 

 

 

 

 

 

 

 

y1

y

 

 

a

2

 

 

 

 

 

c

 

2

 

 

 

 

 

 

 

 

 

 

 

 

b x1 x2

2

b d

d y1 y2

2

Видно , что выражения одинаковы, и средняя точка линии АВ преобразуется в среднюю точку линии А* В*.

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

ПРЕОБРАЗОВАНИЕ ПАРАЛЛЕЛЬНЫХ ЛИНИЙ

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

будут параллельные линии. Рассмотрим линию между точками [А] = [х1 y1], [В] = [х2 y2] и параллельную ей линию, проходящую между точками Е и F. Покажем, что

для этих линий преобразование сохраняет параллельность. Так как АВ, EF и А*В* и E*F* параллельны, то угол наклона линий АВ и EF определяется следующим

образом: m y2 y1 x2 x1

Преобразуем конечные точки АВ, воспользовавшись 2 х 2 матрицей общего

преобразования: A

x

y

a

b

x a y c

x b y d

A*

B

T 1

1

c

d

1

1

1

1

 

*

 

x2

y2

 

x2a y2c

x2b y2d

B

 

m*

Наклон прямой А*В* определяется следующим образом:

 

bx2 dy2

bx1 dy1

 

 

b x2 x1 d y2 y1

 

*

 

a x2 x1 c y2 y1

 

 

 

ax2 cy2

ax1 cy1

 

или m

Так как наклон m* не зависит от x1, х2, y1, у2

b d y2 y1

x2 x1 a c y2 y1

x2 x1

b dm a cm

а m, a, b, c и d одинаковы для EF и AB, то m* одинаково для E*F* и A*B*. Таким образом, параллельность сохраняется.

Это означает, что при преобразовании 2х2 параллелограмм преобразуется в другой параллелограмм.

ПРЕОБРАЗОВАНИЕ ПЕРЕСЕКАЮЩИХСЯ ПРЯМЫХ

Результатом преобразования с помощью 2 х 2-матрицы пары пересекающихся прямых линий также будет пара пересекающихся линий. Проиллюстрируем этот факт на примере прямых, заданных уравнениями

• у = m1x + b1 и у = m2x + b2.

В матричном представлении эти уравнения будут иметь вид:

x

m

m

 

b

b

или

[X] [M] = [B]

y

1

2

 

 

 

 

1

1

1

2

 

 

 

 

 

 

 

 

 

 

Если существует решение этой системы уравнений, то линии пересекаются,

в противном случае они параллельны. Решение можно найти путем инверсии матрицы.

Xi xi

yi B M

 

1

Матрица, обратная [М], имеет следующий вид:

 

 

 

1

 

m2

 

 

 

 

 

 

 

 

1

m

m

 

m m

M

 

2

1

2 1

 

 

 

1

 

m1

 

 

 

 

m1

 

 

 

 

m2

 

m2 m1

ПРЕОБРАЗОВАНИЕ ПЕРЕСЕКАЮЩИХСЯ ПРЯМЫХ

так как [М][М]-1 = [I], где [I] — единичная матрица. Поэтому координаты точки пересечения двух линий можно найти следующим образом:

 

 

 

 

 

 

 

 

1

 

 

 

m2

 

 

 

 

 

Xi xi

 

 

 

 

 

b1 b2

 

b1m2 b2m1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

i

x

y

b

b m2

m1

m2 m1

 

 

 

yi

m m

 

m m

 

 

 

 

 

i

i

1

2

 

1

 

m

 

 

 

 

или

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

1

 

 

2

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m1

m2 m1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

T

a

b

 

 

Если обе линии преобразовать с помощью матрицы преобразования

 

 

 

 

 

c

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y*

m*1 x* b1*

 

 

 

y* m*2 x* b2*

 

 

 

 

 

 

 

то их уравнения будут иметь вид

 

и

 

 

 

 

 

 

 

 

 

Соответственно можно показать, что

 

 

mi*

b dmi

 

и

b*

 

b

d cm* b

 

ad bc

 

 

 

 

a cmi

 

 

 

 

 

 

 

 

 

 

a cm

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

i

 

 

 

 

 

 

i

i

 

 

 

• Точка пересечения линий после преобразования отыскивается как и в случае

 

i

 

 

 

 

исходных линий

 

 

*

*

*

 

 

b*

b*

 

b*m*

b* m*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

 

1 2

 

 

 

2 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X i

xi

 

 

yi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m*

m*

 

 

 

m*

m*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

получим

X * x*

y*

 

 

 

 

 

 

2

1

 

 

 

 

2

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b b1 b2 d b1m2 b2m1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a b1 b2 c b1m2 b2m1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

i

 

i

 

 

 

 

 

 

m2 m1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m2 m1

 

 

 

 

 

 

 

Для точки пересечения исходных

x*

y* xi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

линий применяя уже полученную

 

 

 

 

 

b b

 

b m

 

b m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

yi T

 

1

 

 

2

 

1 2

2 1

 

a

 

b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

матрицу преобразования, имеем.

 

 

i

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

m2 m1

 

 

m2

m1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Уравнения одинаковы, точка

 

 

 

 

 

 

 

b2 c b1m2 b2m1

 

 

 

 

b b1 b2 d b1m2 b2m1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пересечения преобразуется

 

 

 

 

 

a b1

 

 

 

 

 

 

 

 

 

 

 

 

 

точно в другую точку пересечения

 

 

 

m2

m1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m2 m1

 

 

 

 

 

ПОВОРОТ

Рассмотрим треугольник ABC (рис. 4) и с помощью преобразования повернем его на 90° против часовой стрелки относительно начала координат

T

 

0

1

1

0

 

 

 

 

Если использовать матрицу, состоящую из координат х и у вершин треугольника, то можно записать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

1

0

1

 

 

1

3

 

 

 

4

1

1 4

 

 

1 0

 

 

2

1

 

 

 

1

2

 

 

 

 

 

 

 

 

 

 

 

 

координаты результирующего

 

 

 

 

треугольника А*В*С*.

 

 

 

 

 

 

Поворот относительно начала координат

на 180°

T

1

0

 

 

 

 

 

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на 270°

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

T 1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

• на 0° или 360°

 

 

1

0

 

 

 

Рис. 4

 

 

 

 

T

 

 

 

 

 

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В этих примерах осуществляется преобразование в специальных случаях поворота вокруг начала координат на углы 0°, 90°, 180° и 270°.

ПОВОРОТ

• Поворот вокруг точки начала координат на произвольный угол θ.

• рассмотрим вектор положения от начала координат до точки Р (рис. 5). Обозначим r —длину вектора, а — угол между вектором и осью х.

• Вектор положения поворачивается вокруг начала координат на угол θ и попадает в

 

точку P*. Записав векторы положений для P и P*, получаем:

 

P x

y r cos

r sin,

P* x*

y* r cos

r sin

• Используя формулу для cos суммы углов, перепишем выражение для Р*

 

следующим образом

y* r cos cos sin sin

 

 

.

P* x*

r cos sin cos sin

Используя определения x и y, можно переписать P* как

. P* x* y* x cos y sin x sin y cos

Таким образом, преобразованная точка имеет координаты

x* x cos y sin

y* x sin y cos

y

 

x

y sin

cos

или в матричном виде

X

 

X T x

 

 

 

*

*

 

*

 

cos

sin

 

 

 

 

 

 

 

 

 

• преобразование поворота вокруг точки начала координат на произвольный

угол θ задается матрицей

 

 

cos

 

sin

 

 

 

 

 

 

 

 

 

 

 

T sin

 

cos

 

 

 

 

 

 

 

 

 

 

 

ПОВОРОТ

Повороты являются положительными, если они осуществляются против часовой стрелки относительно точки вращения (рис. 5).

Определитель общей матрицы поворота имеет следующий вид:

det[T] = cos2θ+ sin2θ = 1.

В общем случае преобразования по матрице с детерминантом, равным 1, приводят к полному повороту.

Пусть, надо вернуть точку P* в P, т. е. выполнить обратное преобразование. Очевидно, что требуемый угол поворота равен - θ. Получим матрицу для обратного преобразования

1

 

cos

sin

 

 

cos

sin

 

T

 

sin

 

 

 

 

sin

cos

 

 

 

cos

 

 

 

 

 

 

 

 

 

 

 

 

• Можно показать, что матрица [Т]-1 является обратной к [Т], результат

умножения матрицы на обратную дает

Рис . 5

единичную матрицу.

Обратная матрица вращения является транспонированной

ОТРАЖЕНИЕ

Отражение представляет собой тот же поворот на угол 180° в трехмерном пространстве и обратно на плоскость относительно оси, лежащей в плоскости ху.

На рис. 6 приведены примеры двух отражений на плоскости треугольника DEF. Отражение относительно прямой у = 0 (ось х) получено с

использованием матрицы

 

1

0

 

T

 

 

 

0

1

 

 

 

 

 

новые вершины треугольника D*E*F* будут

 

определяться

8

1

1

0

 

8

1

 

 

 

7

3

 

 

7

3

 

 

 

0

1

 

 

 

6

2

 

 

 

6

 

2

 

 

 

 

 

 

 

 

 

 

 

• Отражение относительно оси у при х = 0

 

 

1

0

 

 

 

 

 

 

 

 

 

T 0

1

 

 

 

T

0

1

 

 

 

 

 

 

1

0

 

относительно прямой у = х

 

 

 

 

 

координаты вершин треугольника D*E*F*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

1

 

0

1

 

 

1

8

 

T

0 1

 

7

3

3

7

 

 

 

1

0

 

 

 

 

 

 

6

2

 

 

 

2

6

1

0

Рис . 6

 

 

 

 

 

 

 

 

 

 

 

 

 

• отражение относительно оси х

 

 

 

 

У каждой из этих матриц определитель равен -1.

В общем случае, если определитель матрицы преобразования равен -1, то преобразование дает полное отражение. Если оба полных отражения осуществляются последовательно относительно прямых, проходящих через начало координат, то результатом будет полный поворот относительно начала координат.

МАСШТАБИРОВАНИЕ

Из преобразования точек следует, что величина масштабирования определяется

значением элементов исходной диагональной матрицы. Пусть матрица T

2

0

0

2

- оператор воздействия на вершины треугольника, то имеет место

 

 

 

 

«двукратное» равномерное масштабирование относительно точки начала координат.

• Если значения элементов не равны, то треугольник искажается (рис. 8). Треугольник ABC, преобразованный с помощью матрицы [T] переходит в пропорционально увеличенный А*В*С*. Тот же треугольник, преобразованный с

помощью матрицы

1/ 2

0

 

 

 

• переходит в D*E*F*,

0

3

 

 

 

• имеющий искажение, из-за разных

коэффициентов масштабирования.

• В общем случае [T], a = d, b = с = 0,

Рис . 8

пропорциональное масштабирование;

 

a d, b = с = 0, непропорциональное.

Для а = d > 1 происходит расширение, т. е. увеличение изображения. Если а = d < 1, равномерное сжатие.

• Непропорциональное расширение и сжатие возникают в зависимости от значений a и d, которые могут быть меньше либо больше, чем 1, независимо друг от друга.

МАСШТАБИРОВАНИЕ

Из рис. 8 на первый взгляд преобразование треугольника - перемещение. Это объясняется тем, что относительно начала координат масштабируются координатные векторы, а не точки. Рассмотрим преобразования ABC в D*E*F*

более внимательно.

 

 

 

 

 

 

X

*

 

4

2

1/ 2

0

 

2

6

 

X T 4

4

 

 

2

12

 

 

1

2

 

0

3

1

12

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

Заметим, что каждая из компонент х координатных векторов треугольника DEF умножалась на масштабный коэффициент 3, а компоненты у — на 2. Для того чтобы получить чистое масштабирование без эффекта перемещения, центр фигуры надо поместить в начало координат.

Рис . 9, на котором треугольник ABC увеличивается в

два раза при масштабировании относительно его

 

 

 

Рис . 9

 

 

 

 

 

 

центра с координатами, равными 1/3 основания и 1/3

 

 

 

 

 

 

высоты.

 

 

1

1

 

 

 

2

Матрица преобразования имеет вид X

*

 

2

 

2

0

 

4

 

X T

1

0

2

 

 

 

1

2

 

 

2

 

 

 

 

 

 

 

 

 

22 4

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