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

ALL

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

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

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

Например, для поворота необходимо определить:

В правосторонней или левосторонней системе координат определяются поворачиваемые координатные векторы?

Вращается объект или система координат?

Как определяются положительный и отрицательный повороты?

Координаты записываются в виде строки или столбца матрицы?

Вокруг какой линии или оси осуществляется поворот?

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

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

• Выражение

T cos

sin

задает преобразование для положительного

sin

cos

 

 

 

 

поворота вокруг начала координат или оси z.

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

[X*] = [Х][R],

x*

 

1 x

cos

sin

0

(4)

y*

y 1 sin

cos

0

 

 

 

 

 

 

 

 

 

0

0

1

 

 

 

 

 

 

 

 

 

 

 

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

[X*] = [R]-1 [Х]

x*

cos

sin

0 x

(5)

 

y*

sin

cos

0 y

 

0 0 1

1 1

Это выражение - преобразование с умножением слева, матрица преобразования расположена перед столбцом координатного вектора или данных.

Заметим, что 3 х 3-матрица в выражении (5) есть транспозиция 3 х 3- матрицы из выражения (4). Это свидетельствует о независимости строк и столбцов матрицы.

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

Чтобы повернуть систему координат и оставить координатные векторы неизмененными, необходимо в выражении (4) заменить θ на -θ.

sin θ = - sin(-θ),

cos θ = cos(-θ).

Теперь выражение (4) будет иметь вид

x*

 

1 x

 

cos

sin

0

 

y*

y 1 sin

 

cos

0

 

 

 

 

0

 

0

1

 

 

 

 

 

 

 

 

 

3 х 3-матрица опять имеет обратную и также транспонируется в матрицу из (4).

Если вращается система координат и используется левосторонняя координатная система, то замену θ на -θ надо производить дважды, а уравнение (4) снова оказывается справедливым при допущении, что применяется последующее умножение на строку матрицы данных.

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

Как показано на рис. 16, вращение против часовой стрелки векторов, задающих объект, идентично повороту в том же направлении координатных осей при неподвижном объекте.

Нет необходимости в изменении содержимого матрицы преобразования 3x3, если нет других причин для ее редактирования. Эти несколько примеров показывают, насколько аккуратно необходимо выполнять матричные преобразования.

Рис . 16 Эквивалентность преобразования координатных векторов и систем координат

Пространственные преобразования и проекции

Матрица преобразования трехмерных объектов и назначение ее элементов.

Вводим однородные координаты. Таким образом, точка в трехмерном пространстве [х у z] представляется четырехмерным вектором

• [х‘ у‘ z‘ h] = [x у z 1][T],

где [T] - матрица некоего преобразования.

Как и ранее, преобразование из однородных координат в обычные задается формулой

x*

y*

z*

h

 

x

/

 

y

/

 

z

/

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

h

 

h

 

h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т.е. делением на h.

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

 

 

 

 

a

b

c

o

 

y1

 

 

 

 

 

 

x1

z1 1

d

e f p

 

 

 

 

 

 

 

 

x2

y2

z2

1

* g

h k r

...................

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...................

 

l

m

n

s

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

3 3

 

3 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 3

 

1 1

Матрица преобразования трехмерных объектов и назначение ее элементов.

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

a

b

c

 

o

d

e

f

 

p

g

h

k

 

r

 

 

 

 

 

 

 

 

m

n

 

 

l

s

3 x 3

Коэффициенты a, е, k – изменение масштаба по осям и отображение относительно плоскостей или начала координат.

Остальные коэффициенты – отвечают за поворот объектов вокруг осей, отдельно – за сдвиг.

1 x 3

Коэффициенты l, m, n – параллельный перенос объектов вдоль осей x, y, z, соответственно.

3 x 1

отвечает за преобразование тела в перспективе.

1 x 1

Коэффициент s – отвечает за изменение масштаба всей фигуры и отображение фигуры относительно начала координат.

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

Диагональные элементы 4 х 4-матрицы обобщенного преобразования задают локальное и общее масштабирование. Для иллюстрации этого рассмотрим преобразование

 

a

0

0

0

 

zj 1 x*

 

 

1

X T x

y z 1 0 e

0

0

ax ey

y*

z*

 

0

0

j

0

 

 

 

 

 

 

 

0

0

 

 

 

 

 

 

 

0

1

 

 

 

 

 

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

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

 

 

 

 

 

 

 

 

 

 

 

A

 

 

 

0

0

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

0

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Локальное масштабирование – пример

 

 

 

 

 

1

 

 

 

 

 

 

2

3

 

1

 

1

 

C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

• Дан прямоугольный параллелепипед (ПП) (рис. 1 а)

 

X

0

3

 

1

 

1

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

0

 

 

 

 

E

• со следующими однородными координатами вершин:

 

 

 

 

 

1

 

 

 

 

 

 

2

0

 

0

 

1

 

 

 

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

H

 

 

 

 

G

 

 

 

» Нужно получить из него единичный куб

 

 

2

3

 

0

 

1

 

G

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

 

 

 

 

0 3

 

0

 

1

 

H

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

» с помощью локального масштабирования

 

,

x

 

 

 

 

h

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

 

 

 

y

 

z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 » введем масштабные множители 1/2, 1/3, 1 вдоль осей х, у, z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

соответственно. Преобразование локального

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

E

 

 

 

 

 

 

F

 

 

 

масштабирования задается матрицей

 

 

 

 

 

 

0

 

0

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

1

 

 

 

 

 

A

 

 

 

B

 

 

 

 

 

 

 

 

 

T 0

 

0

 

0

z

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

рис. 1 а

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

1

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

• Результирующий куб имеет следующие однородные координаты вершин:

 

 

 

 

 

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

 

рис. 1 b.

 

 

 

 

 

 

0

0

1

 

 

 

 

 

 

 

 

0

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

1

 

y

H

 

 

 

G

 

 

 

2

0

1

1

 

 

 

 

 

 

1

0

1

1

 

 

 

 

 

 

 

2

3

1

1 1/ 2

0 0

0

 

 

1

1

1

1

 

D

 

 

 

 

C

 

 

 

 

X * X T

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0

 

 

 

 

 

 

 

 

 

 

1

 

0

3

1

1

1/ 3 0

 

 

0 1

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

1

 

0

0 1

0

 

0

0

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

2

0

0

1

 

0

0 0

1

 

1

0

0

1

 

 

E

 

F

x

 

2

3

0

1

 

 

 

 

 

 

1

1

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A 1 B

 

 

 

 

 

 

 

 

 

 

 

 

 

z

 

 

 

 

 

0

3

0

1

 

 

 

 

 

 

0

1

0

1

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

Общее масштабирование

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

0

 

Для общего масштабирования единичного куба на множитель T 0

1

0

0

два (удвоение размера), необходимо преобразование

 

0

0

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

1 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

• Полученный параллелепипед имеет следующие однородные координаты

 

 

 

вершин:

 

0

0

1

1

 

 

 

 

0

0

1

1/ 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

1

1

 

 

 

1

0

1

1/ 2

 

 

 

 

 

 

 

1

 

 

1

 

1

 

 

1/ 2

 

 

 

 

 

 

X / X * T

1

1

1 0 0

0

 

1

1

 

 

 

 

 

 

 

0

1

1

 

0 1 0

0

 

0 1 1 1/ 2

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

0

0

0

1

0 0 1

0

 

0

0

0

1/ 2

 

 

 

 

 

 

 

 

1

0

0

 

 

 

 

 

1 0 0 1/ 2

 

 

 

 

 

 

 

 

 

1

0 0 0

1/ 2

 

 

 

 

 

 

 

 

 

1

1

0

1

 

 

 

1

1

0

1/ 2

 

 

 

 

 

 

 

 

 

1

0

 

 

 

 

 

 

1

0

 

 

 

 

 

 

 

 

 

0

1

 

 

 

0

1/ 2

 

 

 

 

 

однородный координатный множитель h для каждой из преобразованных

 

 

вершин равен 0,5. т.е. чтобы получить обычные или физические координаты,

каждый вектор необходимо разделить на h.

Преобразованные физические координаты получаются проецированием через центр 4-мерной координатной системы обратно в физический объем h = 1.

Если s < 1, происходит однородное расширение.

Если s > 1, происходит однородное сжатие координатного

 

 

 

 

 

 

 

 

0

0

2

1

 

2

0

2

1

X *

2

2

2

1

 

0

2

2

 

 

1

 

0

0

0

1

 

2

0

0

1

 

2

2

0

1

 

 

 

2

0

 

 

0

1

вектора.

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