Лабораторна6
.pdf
5. Приклади афінних перетворень
Приклад 1. Повернути трикутник АВС з координатами (3;-1), (4;1), (2;1) на 90о проти часової стрілки відносно початку координат.
Використовуючи матрицю координат 3х2 та формули повороту отримаємо:
3 1 |
cos900 |
|
sin 900 |
|
|
|
3 1 |
0 |
1 |
|
1 |
3 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
4 |
1 |
|
|
0 |
|
0 |
|
|
4 |
1 |
|
|
|
|
1 4 |
. |
|
2 |
1 |
|
sin 90 |
|
cos90 |
|
|
|
2 |
1 |
|
1 |
0 |
|
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 6 Поворот трикутника АВС в A*B*C*
Приклад 2. Відобразити трикутник DEF з координатами (8;1), (7;3), (6;2)
спочатку відносно осі Y=0 у трикутник D*E*F* , а потім відносно прямої x=y у трикутник D E F .
Відображення відносно осі Y=0:
8 |
1 |
1 |
0 |
|
8 |
1 |
|
|
|
|
|
||
7 |
3 |
|
|
7 |
3 . |
|
6 |
2 |
0 |
1 |
|
6 |
2 |
|
|
|
|
|
|
|
Відображення відносно прямої x=y:
8 |
1 |
0 |
1 |
|
1 |
8 |
|
|
|
|
|
|
|
||
7 |
3 |
|
|
|
3 |
7 |
. |
6 |
2 |
1 0 |
|
2 6 |
|||
|
|
|
|
|
|
|
|
11
Рис. 7 Відображення трикутника DEF
Приклад 3.
Нехай задано трикутник ABC з координатами (2;2), (4;2), (4;4). Знайти координати нового трикутника, повернутого на 90о відносно початку координат та відображеного відносно прямої y=-x.
Перша матриця повороту має вигляд:
P |
0 |
1 |
|
|
|
|
1 |
0 |
Матриця відображення відносно y=-x відповідно рівна:
V |
0 |
1 |
|
|
|
0 |
|
|
1 |
|
|
Результатом повороту та відображення координат K трикутника ABC будуть координати K*:
K* V P K , |
|
|
|
|
|
|
|||
2 |
2 |
0 |
1 |
|
0 |
1 |
|
2 |
2 |
|
|
|
|
|
|
||||
4 |
2 |
|
|
|
|
|
4 2 . |
||
4 |
4 |
1 0 |
|
1 |
0 |
|
4 4 |
||
|
|
|
|
|
|
|
|
|
|
Якщо провести перетворення в оберненому порядку (спочатку |
|||||||||
відображення, а потім поворот), то отримаємо трикутник D*E*F* : |
|||||||||
2 |
2 |
0 |
1 |
0 |
1 |
|
2 |
2 |
|
|
|
|
|
|
|||||
4 |
2 |
|
|
|
|
|
|
4 |
2 . |
4 |
4 |
1 0 |
|
1 0 |
|
4 4 |
|||
|
|
|
|
|
|
|
|
|
|
12
Рис. 8 Комбінований поворот та відображення трикутника ABC ( A B C – проміжний трикутник прямої задачі, D E F – проміжний
трикутник оберненої задачі)
Приклад 4. Побудувати матрицю повороту точки M(x, y) відносно довільної точки N(m, n) на кут ϕ у додатному напрямку.
Однорідні координати дають можливість знайти матрицю повороту відносно довільної точки. У загальному випадку поворот відносно довільної точки може бути реалізований шляхом таких перетворень:
1)переміщення точки N(m, n) на вектор (–m, –n) так, щоб центр повороту сумістився з початком координат. Матриця цього перетворення має вигляд:
|
1 |
0 |
0 |
|
|
|
|
|
0 |
1 |
0 |
m |
n |
1 |
|
|
|
|
|
2)поворот точки на кут ϕ у додатному напрямку відносно початку координат. Матриця цього перетворення визначається формулою:
|
cos |
sin |
0 |
sin |
cos |
0 |
|
|
|
|
|
|
0 |
0 |
1 |
|
|
|
|
Отже, для знаходження результуючого повороту точки M(x, y) відносно точки N(m, n) потрібно перемножити задані матриці за вказаним порядком:
13
|
|
|
|
|
|
|
1 |
|
0 |
|
|
0 |
cos |
|
|
|
|
sin |
|
0 |
|
|
1 |
0 |
|
|
0 |
|||||||||||||||
[X,Y,1] =[x,y,1] |
|
|
0 |
|
1 |
|
|
0 |
sin |
|
|
|
|
cos |
|
0 |
|
|
0 |
1 |
|
|
0 . |
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
m |
|
n 1 |
0 |
|
|
|
|
0 |
|
|
1 m n 1 |
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
Приклад 5. Нехай задано рівняння прямої L y |
1 |
|
(x 4) та трикутник |
|||||||||||||||||||||||||||||||||||||||
2 |
||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
ABC з координатами вершин (2,4,1), (4,6,1), (2,6,1). Дзеркально відобразити |
||||||||||||||||||||||||||||||||||||||||||
трикутник відносно даної прямої. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
Пряма L пройде через початок координат під час зсуву її на 2 одиниці по |
||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
осі ОY (матриця зсуву матиме вигляд – |
0 |
1 |
0 ). |
В результаті повороту |
||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
навколо початку координат на |
tg 1( |
1 |
) 26.570 |
пряма співпаде з віссю ОХ |
||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 / |
|
|
|
|
1 / |
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
|
5 |
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(матриця |
повороту |
матиме |
вигляд |
– 1 / |
5 |
|
2 / |
5 |
|
|
|
|
0 ). Далі необхідно |
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
дзеркально |
відобразити |
|
об’єкт |
за |
допомогою |
|
|
|
матриці |
|
|
|
дзеркального |
|||||||||||||||||||||||||||||
|
|
1 |
0 |
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
відображення |
0 |
1 |
|
|
0 |
і повернутись в початкову орієнтацію. Комбінація |
||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
0 |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
перетворень матиме вигляд: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
2 / |
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
2 / |
|
|
|
|
|
|
1 / |
|
|
|
0 |
||||||||||||||
1 0 |
0 |
|
5 1 / 5 |
1 0 |
|
|
|
|
0 |
|
|
|
|
5 |
5 |
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 / |
5 2 / 5 0 |
||||||||||||||||||||||
M 0 1 |
0 |
1 / |
|
5 |
|
|
2 / 5 0 |
0 |
1 0 |
|||||||||||||||||||||||||||||||||
0 |
2 |
1 |
|
0 |
|
|
|
|
|
|
0 |
|
|
|
1 |
0 0 |
|
|
|
|
1 |
|
0 |
|
|
|
|
|
|
0 |
|
|
|
1 |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 0 |
0 |
3 / 5 |
|
4 / 5 |
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
0 1 |
0 = |
4 / 5 |
|
3 / 5 |
|
0 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
0 2 |
1 |
8 / 5 |
|
16 / 5 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Отже, координати нового трикутника матимуть будуть такими:
2 |
4 |
1 |
3 / 5 |
4 / 5 |
0 |
|
14 / 5 |
12 / 5 |
1 |
||||
|
4 |
6 |
1 |
|
4 / 5 |
3 / 5 |
0 |
= |
|
28 / 5 |
14 / 5 |
1 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
6 |
1 |
8 / 5 |
16 / 5 1 |
|
|
22 / 5 |
6 / 5 |
1 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14
а) |
б) |
в) |
г) |
д)
Рис 9. Відображення відносно будь-якої кривої а)початкове та кінцеве положення трикутника; б)зсув прямої в початок координат; в)поворот прямої та її спів падіння з віссю ОХ; г) відображення відносно осі ОХ; д) обернений
поворот.
15
Висновки
Ідея опису точки вектором виникла з геометричних уявлень. Теореми геометрії розвивалися для афінної геометрії з часом. У них важливими є поняття паралельності і співвідношення між паралельними прямими.
Афінне перетворення є комбінацією лінійних перетворень, супроводжуваних переносом зображень. Афінні перетворення формують зручну підсистему білінійних перетворень, тому що добуток двох афінних перетворень також є афінним. Це дозволяє представити узагальнену орієнтацію системи точок стосовно довільної координатної системи при збереженні одиничного значення однорідної координати h.
Отже, афінні перетворення найбільш часто використовуються в комп'ютерній графіці. І як було показано, вони значно спрощують масштабування, поворот і зсув зображень.
16
Контрольні питання
1.Що таке афінні перетворення?
2.Назвіть властивості афінного перетворення.
3.Які координати називаються однорідними?
4.Назвіть найпростіші афінні перетворення.
5.Якими двома способами можна задати найпростіші афінні перетворення?
6.Як зробити поворот об’єкту відносно певної точки?
7.Запишіть матрицю зсуву об’єкту.
8.Чим відрізняється тривимірні перетворення від двовимірних?
9.Як здійснити дзеркальне відображення об’єкта відносно осі OX?
10.Як знайти матрицю перетворення, якщо відомі початкові та кінцеві координати графічного об’єкту?
17
Варіанти завдань
1.Задано трикутник. Реалізувати поворот трикутника відносно однієї
звершин за годинниковою стрілкою та пропорційне збільшення трикутника в К раз.
2.Задано паралелограм. Реалізувати рух паралелограма навколо кожної вершини по колу проти годинникової стрілки..
3.Задано трикутник. Реалізувати рух трикутника по траекторії Y=Х з одночасним масштабуванням та дзеркальним відображенням відносно цієї прямої.
4.Задано паралелограм. Реалізувати рух паралелограма на основі його дзеркального відображення відносно довільної прямої у=ах+b, коефіцієнти якої вводяться користувачем.
5.Задано трикутник. Реалізувати візуалізацію динамічного процесу деформації трикутника по двох координатах одночасно та його поворот відносно середини.
6.Задано квадрат. Реалізувати рух фігури на основі комбінації трьох основних перетворень об’єктів, параметри перетворення задаються користувачем.
7.Задано трикутник. Реалізувати його рух на основі дзеркального відображення відносно довільної прямої ax+by+c=0, коефіцієнти якої вводяться користувачем.
8.Задано трикутник. Реалізувати поворот трикутника відносно однієї
звершин проти годинникової стрілки та пропорційне зменшення трикутника в N раз.
9.Задано трикутник. Реалізувати рух трикутника навколо кожної вершини по колу за годинниковою стрілкою.
10.Задано прямокутник. Реалізувати рух прямокутника по траєкторії Y=Х з одночасним масштабуванням та дзеркальним відображенням відносно цієї прямої.
11.Задано паралелограм. Реалізувати поворот паралелограма відносно однієї з вершин проти годинникової сторінки та пропорційне збільшення його в М раз.
12.Задано трапецію. Реалізувати її рух на основі дзеркального відображення відносно довільної прямої ax+by+c=0, коефіцієнти якої вводяться користувачем.
13.Задано трапецію. Реалізувати рух фігури на основі комбінації трьох основних перетворень об’єктів, параметри перетворення задаються користувачем.
14.Задано шестикутник. Реалізувати обертання шестикутника навколо свого центру з його плавним збільшенням.
18
Вимоги до звіту
1.Тутильний аркуш.
2.Тема звіту.
3.Мета звіту.
4.Теоретичні відомості.
i.Описати афінні перетворення, що використовуються в індивідуальному завданні.
ii.Вивести кінцеву формулу координат заданого об’єкту.
5.Текст програми з коментарями.
6.Вигляд реалізованої програми.
7.Висновки.
Вимоги до програми
Програма має передбачати наступні можливості:
1.Автоматична побудова об’єкту:
i.Починати побудову із центру Canvas.
2.Ввід вхідних даних вручну в залежності від варіанту.
3.Передбачити можливість некоректного введення даних.
4.Передбачити можливість покрокового відображення дій над
об’єктом.
5.Передбачити розрахунок розмірів об’єкту у відповідності до розмірів Canvas, щоб межі кривої не вийшли за межі Canvas.
6.Побудова координатних прямих (із підписами, початок координат –
вцентрі Canvas) та правильне розміщення об’єктів на координатній площині в залежності від заданих координат.
19
СПИСОК ЛІТЕРАТУРИ
1.В.Г. Маценко. Комп’ютерна графіка. – Чернівці: «Рута», 2009. – 343 с.
2.В.Е. Васильев, А.В. Морозов. Компьютерная графика. – С.-П.:СЗТУ,
2005. – 101 с.
3.Д.Роджерс, Дж. Адамс. Математические основы машинной графики. –
М.: Мир, 2001. – 604 с.
20
