Афіни перетворення на площині

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Зміст
1. Введення. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Афіни перетворення на площині. . .. . . . . . . . . . . .4
3. Однорідні координати точки. . . . . . . . . . . . . . . . . . 9
4. Афінний перетворення в просторі. . . . . . . . . . . 15
5. Висновок. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
6. Список літератури. . . . . . . . . . . . . . . . . . . . . . . . . 24

1. Введення
Висновок зображення на екран дисплея і різноманітні дії з ним, у тому числі і візуальний аналіз, вимагають від користувача достатньої геометричній грамотності. Геометричні поняття, формули і факти, пов'язані, перш за все, до плоского і тривимірному випадках, грають у задачах комп'ютерної графіки особливу роль. Геометричні міркування, підходи та ідеї в поєднанні з постійно розширюються можливостями обчислювальної техніки є невичерпним джерелом істотних зрушень на шляху розвитку комп'ютерної графіки, її ефективного використання в наукових та інших дослідженнях. Часом навіть найпростіші геометричні методики забезпечують помітні просування на окремих етапах вирішення великої графічної задачі.
Перш за все, необхідно зауважити, що особливості використання геометричних понять, формул і фактів, як простих і добре відомих, так і нових більш складних, вимагають особливого погляду на них та іншого осмислення.
Тепер необхідно розглянути графічну реалізацію 3-х мірних об'єктів, тому що вона тісно пов'язана з властивостями об'єктів. Система координат екрана, як відомо, є двовимірної, тому на екрані можлива емуляція 3-х мірної системи координат, що розташована найбільш зручно для наступних розрахунків. Надалі всі об'єкти вважаються 3-х мірними, а відображення здійснюється за допомогою набору функцій розробленої бібліотеки.
Одним із прикладів реалізації даного підходу може служити наступний. Кожен об'єкт, у найпростішому випадку, являє собою паралелепіпед і зберігається в пам'яті розмірами по трьох осях. Також у його структуру входить набір спеціальних точок, що відповідають за з'єднання блоків у просторі. У загальному випадку, це точка прив'язки і вихідна точка. В цілому, виходить гнучка графічна модель, яка дозволяє змінювати розміри блоків практично миттєво. Таким чином, з'являється можливість здійснити найпростіший графічний редактор тривимірних об'єктів. При цьому всі блоки будуть змінюватися, створюючи загальну графічну модель. Маючи справу з графічною моделлю, можна реалізувати обертання сукупності тривимірних об'єктів. Це здійснюється за допомогою набору функцій, які виробляють обертання об'єктів. Для обертання кожного об'єкта існує алгоритм, який розбиває об'єкт (у найпростішому випадку паралелепіпед) на набір точок, кожна з яких обертається, використовуючи найпростіші перетворення в просторі шляхом множення матриці радіус-вектора на матриці перетворень в просторі. Розглянемо більш детально даний підхід з формальної сторони.

2. Афіни перетворення на площині
У комп'ютерній графіці все, що відноситься до двовимірного нагоди прийнято позначати символом (2D) (2-dimention).
Припустимо, що у площині введена прямолінійна координатна система. Тоді кожній точці М ставиться у відповідність впорядкована пара чисел (х, у) її координат (рис. 1). Запроваджуючи на площині ще одну прямолінійну систему координат, ми ставимо у відповідність тій же точці М іншу пару чисел - (x *, y *).
0
Y
X
M (x, y)

Рис. 1
Перехід від однієї прямолінійної координатної системи на площині до іншої описується наступними співвідношеннями:
x * =  x +  y +                                                                                                  
y * =  x +  y +                                                                                                  
де              - довільні числа, пов'язані нерівністю:
          
                       
                                      (2.3)
                        
Формули (2.1) та (2.2) можна розглядати двояко: або зберігається точка і змінюється координатна система (рис. 2) - у цьому випадку довільна точка М залишається тією ж, змінюються лише її координати (х, у) | (х *, y *), або змінюється точка і зберігається координатна система (рис. 3) - у цьому випадку формули (2.1) та (2.2) задають відображення, що переводить довільну точку М (х, у) у крапку М * (х *, у *) , координати якої визначені в тій же координатній системі.
X *
0
Y
X
M 0 *
Y *
Рис. 2
0
Y
X
M

M *


Рис. 3
Надалі, формули (2.1) та (2.2) будуть розглядатися як правило, згідно з яким у заданій системі координат прямолінійних перетворюються точки площини.
У афінних перетвореннях площині особливу роль грають кілька вжних окремих випадків, що мають добре прослеживаемыегеометрические характеристики. При дослідженні геометричного сенсу числових коефіцієнтом у формулах (2.1) та (2.2) для цих випадків зручно вважати, що задана система координат є прямокутної декартової.
1. Поворот навколо початкової точки на кут   (рис. 4) описується формулами:
х * = x cos     y sin                                                       
y * = x sin     y cos                                                       
2. Розтягування (стиснення) уздовж координатних осей можна задати так:
x * =  x, (2.5)
y * =  y, (2.6)
                                                                      
Розтягування (стиснення) вздовж осі абсцис забезпечується за умови, що                На рис. 5          
1. Відображення (щодо осі абсцис) (рис. 6) задається за допомогою формул:
x * = x, (2.8)
y * =-y. (2.9)
2. На рис. 7 вектор перенесення ММ * має координати    . Перенесення забезпечує співвідношення:
x * = x +                                                                  
     y * = y +                                                                 
M *


M
0
Y
X



Рис. 4
M *
0
Y
X

M



Рис. 5
M
0
Y
X



Рис. 6
M *
M *


M
0
Y
X



Рис. 7
Вибір цих чотирьох приватних випадків визначається двома обставинами.
1. Кожне з наведених вище перетворень має простий і наочний геометричний сенс (геометричним змістом наділені й постійні числа, що входять у наведені формули).
2. Як відомо з курсу аналітичної геометрії, будь-яке перетворення виду (2.1) завжди можна представити як послідовне виконання (суперпозицію) найпростіших перетворень виду 1 - 4 (або частини цих перетворень).
Таким чином, справедливо наступне важливе властивість афінних перетворень площини: будь-яке відображення виду (2.1) можна описати за допомогою відображень, що задаються формулами (2.3) - (2.11).
Для ефективного використання цих відомих формул в задачах комп'ютерної графіки більш зручною є їх матрична запис. Матриці, відповідні випадків 1 - 3, будуються легко і мають відповідно такий вигляд:
cos       sin                           
-Sin      cos                           

3. Однорідні координати точки
Нехай М - довільна точка площини з координатами х і у, обчисленими відносно заданої прямолінійною координатної системи. Однорідними координатами цієї точки називається будь-яка трійка одночасно не рівних нулю чисел х 1, х 2, х 3, пов'язаних із заданими числами х і у наступними співвідношеннями:
x 1 / x 3 = x, x 2 / x 3 = y (3.1)
При вирішенні задач комп'ютерної графіки однорідні координати зазвичай вводяться так: довільній точці М (х, у) площини ставиться у відповідність точка М Е (х, у, 1) в просторі.
Необхідно зауважити, що довільна точка на прямій, що сполучає початок координат, точку О (0, 0, 0), з точкою М Е (х, у, 1), може бути задана трійкою чисел виду (hx, hy, h).
Будемо вважати, що h = 0. Вектор з координатами hx, hy, h є направляючим вектором прямої, що з'єднує точки О (0, 0, 0) і М Е (х, у, 1). Ця пряма перетинає площину z = 1 в точці (х, у, 1), яка однозначно визначає точку (х, у) координатної площини ху.
Тим самим між довільною точкою з координатами (х, у) і безліччю трійок чисел виду (hx, hy, h), h = 0, встановлюється взаємно однозначна відповідність, що дозволяє вважати числа hx, hy, h новими координатами цієї точки.
Широко використовуються в проективної геометрії однорідні координати дозволяють ефективно описувати так звані невласні елементи (по суті, ті, якими проектна площину відрізняється від звичної евклідової площини).
У проективної геометрії для однорідних координат прийнято наступне позначення:
х: у: 1 (3.2)
або, більш загально,
х 1: х 2: х 3 (3.3)
(Тут неодмінно потрібно, щоб числа х 1, х 2, х 3 одночасно в нуль не зверталися).
Застосування однорідних координат виявляється зручним вже при вирішенні найпростіших завдань.
Розглянемо, наприклад, питання, пов'язані зі зміною масштабу. Якщо пристрій відображення працює тільки з цілими числами (або коли необхідно працювати тільки з цілими числами), то для довільного значення h (наприклад, h = 1) крапку з однорідними координатами (0.5, 0.1, 2.5) уявити не можна. Однак при розумному виборі h можна домогтися того, щоб координати цієї точки були цілими числами. Зокрема, при h = 10 для розглянутого прикладу маємо (5, 1, 25).
Розглянемо інший випадок. Щоб результати перетворення не приводили до арифметичного переповнення для точки з координатами (80000, 40000, 1000) можна взяти, наприклад, h = 0.001. У результаті отримаємо (80, 40, 1).
Наведені приклади показують корисність використання однорідних координат при проведенні розрахунків. Однак основною метою введення однорідних координат в комп'ютерній графіці є їх безсумнівну зручність у застосуванні до геометричних перетворень.
За допомогою трійок однорідних координат і матриць третього порядку можна описати будь-афінне перетворення площини.
Вважаючи, h = 1, порівняємо два записи:


          
(X * y * 1) = (xy 1)                
          
Неважко помітити, що після перемножування виразів, які стоять у правій частині останнього співвідношення, ми отримаємо формули (2.1) та (2.2) і правильне числове рівність 1 = 1. Тим самим порівнювані запису можна вважати рівносильними.
Елементи довільної матриці аффинного перетворення не несуть у собі явно вираженого геометричного сенсу. Поетомучтоби реалізувати те або інше відображення, тобто знайти елементи відповідної матриці по заданому геометричного опису, необхідні спеціальні прийоми. Зазвичай побудова цієї матриці відповідно до складності поставленого завдання і з описаними вище окремими випадками розбивають на декілька етапів.
На кожному етапі пишеться матриця, відповідна тому чи іншому з виділених вище випадків 1 - 4, що володіють добре вираженими геометричними властивостями.
Випишемо відповідні матриці третього порядку.
А. Матриця обертання (rotation)


cos      sin      
[R] =-sin     cos                                                           
                  
Б. Матриця розтягування-стиснення (dilatation)


          
                                                D] =                                                                      
          
В. Матриця відображення (reflection)


1 0 0
[M] = 0 -1 0 (3.7)
0 0 1
Г. Матриця переносу (translation)


1 0 0
[T] = 0 1 0 (3.8)
          
Розглянемо приклади афінних перетворень площини.
Приклад 1. Побудувати матрицю повороту навколо точки А (a, b) на кут  (рис. 9).
А
0
Y
X



Рис. 8
1-й крок. Перенесення на вектор - А (-a,-b) для зміщення центру повороту з початком координат;


1 0 0
[T - A] = 0 1 0 (3.9)
-A-b 1
матриця відповідного перетворення.
2-й крок. Поворот на кут  
cos      sin      
[R ] =-sin      cos                                                    (3.10)
0 0 1
матриця відповідного перетворення.
3-й крок. Перенесення на вектор А (a, b) для повернення центру повороту в колишнє положення;


1 0 0
[T A] = 0 1 0 (3.11)
a b 1
матриця відповідного перетворення.
Перемножимо матриці в тому ж порядку, як вони виписані:
[T - A] [R ] [T A].
У результаті отримаємо, що шукане перетворення (в матричній запису) буде виглядати наступним чином:


cos  sin                               0
(X * y * 1) = (xy 1)-sin                              cos                              0 (3.12)      
-A cos   + b sin    a-a sin   - b cos  + b 1
Елементи отриманої матриці (особливо в останньому рядку) не так легко запам'ятати. У той же час кожна з трьох перемножуваних матриць по геометричному опису відповідного відображення легко будується.
Приклад 2. Побудувати матрицю розтягування з коефіцієнта розтягування  вздовж осі абсцис і   вздовж осі ординат і з центром в точці А (a, b).
1-й крок. Перенесення на вектор-А (-a,-b) для поєднання центру розтягування з початком координат;


1 0 0
[T - A] = 0 1 0 (3.13)
-A-b 1
матриця відповідного перетворення.
2-й крок. Розтягування вздовж координатних осей з коефіцієнта   і    відповідно; матриця перетворення має вигляд


          
                                                D] =                                                                     
          
3-й крок. Перенесення на вектор А (a, b) для повернення центру розтягування в колишнє положення; матриця відповідного перетворення:


1 0 0
[T A] = 0 1 0 (3.15)
a b 1
Премножів матриці в тому ж порядку
[T - A] [D] [T A],
отримаємо остаточно
                      0 0
(X * y * 1) = (xy 1) 0  0 (3.16)
(1 - ) a (1 - ) b 1
Міркуючи таким чином, то є розбиваючи запропоноване перетворення на етапи, підтримувані матрицями [R], [D], [M], [T], можна побудувати матрицю будь-якого аффинного перетворення за його геометричного опису.

4. Афінний перетворення в просторі
Розглянемо тривимірний випадок (3D) (3-dimension) і відразу введемо однорідні координати.
Поступаючи аналогічно тому, як це було зроблено в розмірності два, замінимо координатну трійку (x, y, z), задану точку в просторі, на четвірку чисел
(X y z 1)
або, більш загально, на четвірку
(Hx hy hz), h = 0.
Кожна точка простору (крім початкової точки О) може бути задана четвіркою одночасно не рівних нулю чисел; ця четвірка чисел визначена однозначно з точністю до загального множника.
Запропонований перехід до нового способу завдання точок дає можливість скористатися матричної записом і в більш складних тривимірних задачах.
Будь-яке Афінний перетворення в тривимірному просторі може бути представлено у вигляді суперпозиції обертань, розтягнень, віддзеркалень і переносів. Тому цілком доречно спочатку детально описати матриці саме цих перетворень (ясно, що в даному випадку порядок матриць повинен бути рівний чотирьом).
А. Матриці обертання в просторі.
Матриця обертання навколо осі абсцис на кут :



[R x] =
1 0 0 0
0
(4.1)
cos       sin       0
0-sin       cos  0
0 0 0 1
Матриця обертання навколо осі ординат на кут  



[R y] =
cos  0-sin  0
(4.2)
0 1                    
sin  0      cos  0
0 0 0 1
Матриця обертання навколо осі аппікат на кут :



[R z] =
cos  sin  0 0
-Sin
(4.3)
     cos      0 0
0 0               0
0 0 0 1
Корисно звернути увагу на місце знаку «-» в кожній з трьох наведених матриць.
Б. Матриця розтягування-стиснення:


                     
[D] =
(4.4)
                     
                     
                     
де
> 0 - коефіцієнт розтягування (стиснення) вздовж осі абсцис;
 > 0 - коефіцієнт розтягування (стиснення) вздовж осі ординат;
 > 0 - коефіцієнт розтягування (стиснення) вздовж осі аплікат.

В. Матриці відображення
Матриця відображення відносно площини ху:

                     
[M z] =
(4.5)
                     
                      
                     
Матриця відображення відносно площини yz:


                      
[M x] =
(4.6)
                     
                     
                     
Матриця відображення відносно площини zx:


                     
[M y] =
(4.7)
                      
                     
                     
Г. Матриця переносу (тут (           вектор переносу):


                     
[T] =
(4.8)
                     
                     
                     
Як і в двовимірному випадку, всі виписані матриці невироджений.
Наведемо важливий приклад побудови матриці складного перетворення за його геометричного опису.
Приклад 3. Побудувати матрицю обертання на кут  навколо прямої L, що проходить через точку А (a, b, c) і має направляючий вектор (l, m, n). Можна вважати, що спрямовує вектор прямої є одиничним:
l 2 + m 2 + n 2 = 1
На рис. 10 схематично показано, матрицю якого перетворення потрібно знайти.
Z
Y
L


X
Рис. 10
Рішення сформульованої задачі розбивається на кілька кроків. Опишемо послідовно кожен з них.
1-й крок. Перенесення на вектор-А (-a,-b,-c) за допомогою матриці


                     
[T] =
(4.9)
                     
                     
-A-b-c 1
У результаті цього преноса ми добиваємося того, щоб пряма L проходила через початок координат.
2-й крок. Поєднання осі аплікат-з прямою L двома поворотами навколо осі абсцис і осі ординат.
1-й поворот - навколо осі абсцис на кут   (підлягає визначенню). Щоб знайти цей кут, розглянемо ортогональну проекцію L 'вихідної прямий L на площину X = 0 (рис. 11).

Z
X
L 'L 
Y



0


Рис. 11
Направляючий вектор прямої L 'визначається просто - він дорівнює
(0, m, n).
Звідси відразу ж випливає, що
cos     n / d, sin   = m / d, (4.10)
де
d = m 2 + n 2 (4.11)
Відповідна матриця обертання має наступний вигляд:


1 0 0 0
(4.12)
[R x] =
0 n / d m / d 0
0-m / d n / d 0
0 0 0 1
Під дією перетворення, описуваного цією матрицею, координати вектора (l, m, n) зміняться. Підрахувавши їх, в результаті отримаємо
(L, m, n, 1) [R x] = (l, 0, d, 1). (4.13)
2-й поворот навколо осі осі ординат на кут , визначається співвідношеннями
сos  = l, sin  =-d (4.14)
Відповідне матриця обертання записується в наступному вигляді:
l               d      
[R y] =
(4.15)
                     
-D              l       
                     
3-й крок. Обертання навколо прямої L на заданий кут  
Так ка тепер пряма L співпадає з віссю аплікат, то відповідна матриця має такий вигляд:



[R z] =
cos  sin  0 0
-Sin
(4.16)
     cos      0 0
0 0               0
0 0 0 1
4-й крок. Поворот навколо осі ординат на кут -  
5-й крок. Поворот навколо осі абсцис на кут -  
Однак обертання в просторі некомутативна. Тому порядок, в якому проводяться обертання, є дуже великою.
6-й крок. Перенесення на вектор А (a, b, c).
Перемноживши знайдені матриці в порядку їх побудови, отримаємо наступну матрицю:
[T] [R x] [R y] [R z] [R y] -1 [R x] -1 [T] -1.
Випишемо остаточний результат, вважаючи для простоти, що вісь обертання ходить через початкову точку.


l 2 + cos  (1 - l 2) l (1 - cos   m + n sin         l (1 - cos ) n - m sin   0
l (1 - cos   m - n sin         m 2 + cos   1 - m 2) m (1 - cos   n + lsin       0
l (1 - cos   n + m sin           m (1 - cos   n - lsin              n 2 + cos     - n 2) 0
0 0 0 1
Розглядаючи приклади подібного роду, ми будемо отримувати в результаті невироджені матриці виду
               
[А] =
(4.17)
                 
                  
                     
За допомогою таких матриць можна перетворити будь-які плоскі і просторові фігури.
Приклад 4. Потрібно піддати заданому афінної перетворення опуклий багатогранник.
Для цього спочатку по геометричному опису відображення знаходимо його матрицю [A]. Помічаючи далі, що довільний опуклий багатогранник однозначно задається набором всіх своїх вершин
V i (x i, y i, z i), i = 1, ..., n,

Будуємо матрицю


x 1 y 1 z 1 січня
V =. . . . . . . . . . (4.18)
x n y n z n 1
Піддаючи цей набір перетворенню, описуваному знайденої невиродженої матрицею четвертого порядку, [V] [A], ми отримуємо набір вершин нового опуклого багатогранника - образу вихідного (рис. 12).
Z


0
Y
X
Рис. 11

5. Висновок
З огляду на вищеописані принципи, була розроблена програма моделювання синтезу металорізальних верстатів, яка наочно показує залежність компонування верстата від форми оброблюваної поверхні через код компонування, а також можливість побудови моделі верстата зі стандартних вузлів для подальшої оцінки компонування. З причини того, що дана програма розроблялася як дослідження, в ній лише наочно демонструється модель верстата для обробки довільній поверхні.
Програма побудована на основі принципів об'єктно-орієнтованого програмування (ООП). Такий підхід був визнаний оптимальним для даної задачі з урахуванням того, що модель верстата будується на основі компоновочного коду. При реалізації спочатку була розглянута ланцюжок вузлів, що представляє верстат. Це призвело до труднощів і незручності реалізації відображення 3-х мірної моделі в емулювати графічному просторі. Тому була реалізована концепція, яка розглядає верстат, як "дерево" об'єктів, виходячи з того, що один з вузлів верстата, а саме станина, є нерухомим і зафіксованим жорсткою прив'язкою до системи координат. Таким чином, отримана модель являла собою об'єкт, з якого виходили дві "гілки" об'єктів.
Принципи ООП дозволили створити базовий клас, з якого були отримані дочірні класи для станини і інших вузлів. Кожен об'єкт инкапсулирован свої властивості і "бачив" лише свої геометричні розміри і координати, в які він повинен бути поміщений, в результаті чого модель вийшла гнучкою.

6. Список використаної літератури.
1. Шишкін О. В., Боресков А. В. Комп'ютерна графіка. М.: Діалог-МІФІ, 1995. - 288 с., Іл.
2. Вайсберг А. В., Гриценко М. Є. Формування структури верстата на ранніх стадіях проектування. - Точність автоматизованих виробництв (ТАП - 97). Збірник статей міжнародної науково-технічної конференції. Пенза, 1997., С. 52 - 53.
Додати в блог або на сайт

Цей текст може містити помилки.

Математика | Реферат
85.3кб. | скачати


Схожі роботи:
Афіни
Афіни і Спарта
Криві на площині
Переслідування на площині
Площині та їх проекції
Стародавні Афіни та Спарта
Афіни Переворот 404 г до н.е.
Афіни Перікл і Фукідід
Афіни Законодавство Солона
© Усі права захищені
написати до нас