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

Лабораторна6

.pdf
Скачиваний:
10
Добавлен:
12.02.2016
Размер:
657.71 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА”

АФІННІ ПЕРЕТВОРЕННЯ

МЕТОДИЧНІ ВКАЗІВКИ

до виконання лабораторної роботи №6 з дисципліни „Комп’ютерна графіка” для студентів спеціальності

6. 050103 „Програмна інженерія”

Затверджено на засіданні кафедри

програмного забезпечення Протокол № __ від _______ р.

Львів – 2013

1

Фрактали. : Методичні вказівки до виконання лабораторної роботи №6 із дисципліни „Комп’ютерна графіка” для студентів спеціальності „Програмна інженерія” / Укл.: Є.В. Левус, О.О. Нитребич – Львів: Видавництво Національного університету „Львівська політехніка”, 2013. – ?? с.

Укладачі

Є.В. Левус, доцент кафедри ПЗ

 

О.О. Нитребич, асист. кафедри ПЗ

Відповідальний за випуск Федасюк Д.В., д-р тех. наук, проф.

Рецензенти

, канд. тех. наук, доц.

 

, канд. фіз.-мат. наук, доц.

2

Мета роботи: Ознайомитись на практиці із основними поняттями афінних перетворень, навчитись застосовувати основні перетворення – зсув, масштаб та поворот об’єктів у декартовій системі координат.

Теоретичні відомості

Виконання різноманітних дій з геометричними об’єктами є центральною задачею в комп’ютерній графіці. Тому вибір математичних методів і алгоритмів для її реалізації суттєво впливає на ефективність цілої графічної системи. У сучасній комп’ютерній графіці досить широко використовується метод координат, оскільки графічне зображення складається з пікселів, які задаються координатами. Крім цього, координати використовуються для опису розміщення об’єктів та для створення зображень шляхом перетворень з однієї системи координат в іншу.

1.Найпростіші двовимірні афінні перетворення

Афінним називається перетворення, що має такі властивостями:

● будь-яке афінне перетворення може бути представлене як послідовність операцій з числа найпростіших: зсув, розтягнення/стиснення, поворот;

● зберігаються прямі лінії, паралельність прямих, відношення довжин відрізків, що лежать на одній прямій, і відношення площ фігур.

Афінні перетворення координат на площині: (X, Y) – двовимірна система координат,

(x, y) – координати старої системи в новій системі координат.

X Ax By C

Y Dx Ey F .

Загальний вигляд афінного перетворення:

X

A

B C x

 

Y

 

D E

F

y

 

,

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

0 0

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

де A, B, C, D, E, F – константи. Обернене перетворення теж є афінним:

x A X B Y C ,y D X E Y F .

Найпростіші афінні перетворення об’єкта на площині.

1. Здвиг об’єкта:

X x dx

Y y dy

3

1

0

dx

або матрицею: 0

1

dy .

0

0

1

 

 

 

Рис. 1 Зсув об’єкта

Обернене перетворення задається формулами :

x X dx

y Y dy

або відповідною матрицею:

1

0

dx

0

1

dy

.

 

 

 

 

0

0

1

 

 

 

 

 

Примітка! У літературі часто використовують іншу матрицю зсуву координат об’єкта:

 

1

0

0

M

0

1

0 .

 

 

 

 

dx

dy

1

 

 

 

 

З використанням даної матриці, нові координати об’єкту утворюються внаслідок множення старих координат на дану матрицю [X,Y,1]=[x,y,1] M.

2. Масштабування об’єкту:

X xkx ,

Y yky

а в матричній формі:

kx

0

0

 

 

 

 

 

0

ky

0 .

 

0

0

1

 

 

 

 

4

Рис. 2 Масштабування об’єкта

Обернене перетворення задане:

x X kx ,

y Y ky

та відповідно матрицею

1 kx

0

0

 

 

 

 

 

0

1 ky

0 .

 

0

0

1

 

 

 

 

Коефіцієнти можуть бути від’ємними. Наприклад, при kx = -1 отримуємо дзеркальне відображення відносно осі Y.

Також варто зауважити, що у вище згаданих формулах йдеться про пропорційне зміщення всіх сторін об’єкту.

 

kx

ky

0

 

Якщо взяти загальну матричну перетворення

 

1

1

 

, то при

kx2

ky2

0

 

 

0

0

 

 

 

 

1

 

kx

= ky

 

, а kx

= ky

=0 виконується пропорційне масштабування, при kx

ky

, а

1

 

2

2

1

1

 

2

kx

= ky

=0 – непропорційне.

 

 

2

 

1

 

 

 

 

 

Примітка! У даних формулах йде мова про масштабування об’єкту та його переміщення. Якщо потрібно зробити чисте масштабування без ефекту переміщення, тоді варто об’єкт помістити в центр координат.

3. Поворот об’єкта відносно центру координат на кут α відповідає системі рівнянь:

x X cos Y sin

y X sin Y cos

або задається матрицею

 

cos

sin

0

sin

cos

0 .

 

 

 

 

 

0

0

1

 

 

 

 

5

Рис. 3 Поворот об’єкта

Обернене перетворення – поворот на кут (-α) задане системою рівнянь:

X x cos y sin

Y xsin y cos

та відповідною матрицею

cos

sin

0

sin

cos

0 .

 

 

 

 

 

0

0

1

 

 

 

 

Увага! У всіх афінних перетвореннях, описаних вище, використовуються однорідні координати – це координати неоднорідного вектора [x,y], що є

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

трійкою

x

x

, y

, h

деяке дійсне число. Зазвичай

[x , y , h ], де

 

 

 

 

 

 

 

h

h

 

використовують вектор [x, y,1] . При бажанні можна користуватись

звичайними координатами, але формули матимуть наступний матричний вигляд:

dx 0

 

 

 

зсув - K * K

 

,

 

 

0

dy

 

 

 

 

Sx

0

 

масштаб: K * K

 

 

,

 

0

 

Sy

 

cos

sin

 

поворот: K * K

 

,

sin

cos

 

де K – матриця координат об’єкту до перетворення, K * – після перетворення.

6

2. Тривимірні перетворення

Подібно до двовимірних афінних перетворень, під час роботи з якими з використанням однорідних координат, здійснюють дії над матрицями 3х3, тривимірні перетворення можуть бути представлені матрицею 4х4.

Отже, аналогічно двовимірному випадку матриця зсуву матиме вигляд:

1

0

0

dx

 

 

 

 

 

 

M= 0

1

0

dy

,

0

0

1

dz

 

 

 

 

 

 

0

0

0

1

 

а нові координати обчислюватимуться за формулою[X,Y,Z,1]= [x,y,z,1] M. Матриця масштабування –

Sx

0

0

0

 

 

0

Sy

0

0

 

S=

 

 

0

0

Sz

0

 

0

0

0

1

 

 

 

тоді нові координати обчислюватимуться за формулою[X,Y,Z,1]=[x,y,z,1] S. Стосовно матриці повороту, то в залежності від вибраної осі матимемо такі

матриці:

- поворот відносно осі OZ:

cos

 

sin

0

0

 

sin

cos

0

0

 

P

 

 

 

 

 

 

,

 

0

 

0

1

0

 

 

 

0

 

0

1

0

 

 

 

 

 

 

- поворот відносно осі OX:

 

1

 

0

0

 

0

 

 

0

cos

sin

0

 

 

P

sin

cos

 

 

,

0

0

 

 

 

 

 

 

 

 

 

0

 

0

1

 

0

 

 

- поворот відносно осі OZ:

 

cos

0

sin

0

 

 

 

 

 

 

 

P 0

 

1

0

 

0

.

sin

0

cos

0

 

 

 

 

 

 

 

0

 

0

1

 

0

 

Для

обчислення

 

нових координат застосовується формула

[X,Y,Z,1]=[x,y,z,1] P.

7

3. Визначення матриці перетворень

Складним (комбінованим) називається перетворення, яке містить ланцюжок базових перетворень (не менше двох). Зауважимо, що майже всі афінні перетворення залежать від порядку їх виконання. Наприклад, перетворення повороту не комутативні ( x y y x ).

Найчастіше на практиці для визначення матриці перетворень використовують рівняння:

M K 1K* ,

що випливає із рівняння афінних перетворень K* K M , де K – матриця координат об’єкту до перетворення, K * – після перетворення, М – матриця перетворення.

Приклад 1. Знайти матрицю перетворення трикутника Р1Р2Р3 у трикутник

P1′P2′P3′ (рис. 4)

Рис. 4 Перетворення трикутників Однорідні координати вершин трикутника Р1Р2Р3 складають матрицю

3

4

1

 

4

0

1

K

1

1

1

, а трикутника P1′P2′P3′ –

K *

3

1

1 .

 

 

 

 

 

 

 

 

 

 

1

1

1

 

 

3

5

1

 

 

 

 

 

 

 

 

 

 

1

2

0

Зі співвідношення M K 1K* отримаємо: M 1

1

0 .

 

 

 

 

 

3

2

1

 

 

 

 

8

4. Деякі правила виконання перетворень

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

У правосторонній чи лівосторонній системі координат ( у залежності від взаємного розміщення напрямків координатних осей, розрізняють правосторонню та лівосторонню координатні системи, рис. 4) визначаються координатні вектори?

Обертається об'єкт або система координат?

Поворот здійснюється за чи проти годинникової стрілки?

Координати записуються у вигляді рядка або стовпця матриці?

Навколо якої лінії або осі здійснюється поворот?

а) б)

Рис.4 Типи систем координат а) правостороння; б) лівостороння.

Нехай маємо правосторонню систему координат, об'єкт обертається в нерухомій координатної системі, поворот визначається правилом правої руки (тобто поворот за годинниковою стрілкою) і координатні вектори представляються у вигляді рядка матриці.

Так як вектор задається рядком матриці, то матрицю перетворення слід розмістити після даних (матриці координатних векторів). Це перетворення задається шляхом множення справа. У разі однорідних координат для повороту об'єкта за годинникової стрілкою на кут навколо початку координат (осі OZ) використання множення праворуч приводить до наступного результату:

 

 

cos

sin

0

[ X ,Y ,1] [x, y,1]

sin

cos

0 .

 

 

 

 

 

 

 

0

0

1

 

 

 

 

 

9

Якщо ми виразимо координатні вектори, задані в однорідних координатах у вигляді стовпця матриці, то поворот можна виконати наступним чином:

X

Y1

cos

sin

0 x

 

sin

cos

0 y

.

 

 

 

 

 

 

0

0

1 1

 

 

 

 

 

 

Для того, щоб повернути систему координат і залишити незмінними координатні вектори, необхідно кут замінити на .

Рис. 5 Перетворення координатних векторів та системи координат

10