Автор: Пользователь скрыл имя, 22 Декабря 2010 в 17:58, курсовая работа
Метою курсової роботи є дослідити афінні перетворення площини та простору.
Поставлена мета досягається такими завданнями:
1. Дослідити споріднені та афінні перетворення площини та простору.
2. Виразити афінні перетворення через координати.
3. Описати застосування афінних перетворень площини і простору.
ВСТУП…………………………………………………………………………..3
РОЗДІЛ 1 АФІННІ ПЕРЕТВОРЕННЯ ПЛОЩИНИ………………………….4
1.1 Споріднені та афінні відображення та їх властивості………….4
1.2 Вираз афінного перетворення через координати………….......12
1.3 Однорідні координати точки……..…………………………….17
РОЗДІЛ 2 АФІННІ ПЕРЕТВОРЕННЯ ПРОСТОРУ…………………….......21
2.1 Основні властивості афінного перетворення………..…….......21
2.2 Поворот, зрушення і масштабування…………………………..24
2.3 Перетворення в однорідних координатах……………………..28
2.4 Застосування афінних перетворень……………………………34
ВИСНОВКИ………………………………………………………………..….40
ЛІТЕРАТУРА………………………………………………………………….41
На
щастя, переважна більшість
2.2
Поворот, зрушення і
масштабування
Розглядаючи перетворення, нам доведеться весь час перемикатися від геометричних об'єктів як абстрактних сутностей до їх конкретних представлень в певних фреймах. У прикладній програмі ми маємо справу з представленнями об'єктів.
Ми розглядаємо перетворення як спосіб переміщення групи точок, що описують один або кілька геометричних об'єктів, в нову позицію. Хоча існує безліч способів виконати переміщення окремої точки, виявляється, що є тільки один спосіб одноманітно виконати таке перетворення по відношенню до множини точок, зберігши при цьому відношення між вершинами в об'єкті.
Плоскопаралельне зміщення
Плоскопаралельне зміщення, або зсув (translation), - це операція, яка зміщує точки на фіксовану відстань уздовж заданого напрямку (рис. 4.29). Зрушення задається тільки вектором зміщення d, оскільки для всіх точок Р на об'єкті справедливо співвідношення
P'=P + d.
Звернемо увагу на те, що таке визначення операції ніяк не пов'язане з системою відліку або фреймом подання. Зрушення має 3 ступені свободи, оскільки можна довільно задати три компоненти вектора зміщення.
Поворот
Задати поворот (rotation) дещо складніше, ніж зрушення, так як потрібно специфікувати більше параметрів. Почнемо з простого прикладу повороту точки навколо початку координат в двомірній площині, як показано на рис. 4.30. Оскільки задана певна точка - початок координат, - ми маємо справу з певним фреймом. Двомірна точка (х, у) в цьому фреймі повертається навколо початку координат на кут в і займає після повороту позицію (х', у'). Формули опису повороту нескладно отримати, скориставшись полярним представленням точок (х, у) і (х ', у'):
Скориставшись формулами приведення синуса і косинуса суми кутів, отримаємо
Ці ж рівняння можна записати і в матричній формі:
Звернемо увагу на три властивості цього перетворення, які зберігаються і в інших варіантах операції повороту.
1.
Існує деяка точка, вона
2. Враховуючи, що двовимірний простір є окремим випадком тривимірного, можна поширити зроблені висновки і на три виміри. У правосторонній системі координат, коли осі х та у виглядають звичним для всіх нас чином, позитивний напрямок осі z тривимірної системи координат буде направлено на спостерігача (тобто вісь z "виходить" з аркуша паперу, на якому накреслені осі х і у) . Позитивний напрямок повороту - це напрямок проти годинникової стрілки, якщо дивитися з боку позитивної півосі z, вихідної з фіксованої точки. Це ж визначення позитивного напрямку повороту ми будемо використовувати і для тривимірного випадку при повороті навколо довільної осі.
3. Двовимірне обертання на площині еквівалентно тривимірному обертанню навколо осі z. Всі точки на площині, паралельній ху (тобто мають однакове значення компоненти z), повертаються однаково, зберігаючи значення компонента z.
Ці властивості ми використовуємо при виведенні узагальненого перетворення повороту в тривимірному просторі, не залежного від конкретного фрейму. Для такого перетворення (рис. 4.32) потрібно специфіковані три параметри - фіксовану точку (Pf), кут повороту (θ) і пряму або вектор, навколо якого виконується поворот (вісь обертання). Якщо фіксована точка задана, то в нашому розпорядженні є 3 ступеня свободи: два кути необхідні для задання орієнтації осі обертання і один кут задає сам поворот.
Поворот і зсув відносяться до групи так званих ізометричних перетворень (або перетворень твердого тіла - rigid-body transformations). Комбінація цих перетворень не може змінити форми об'єкта, а змінює тільки його положення в просторі - позицію і орієнтацію.
Отже, самі по собі повороти і зміщення не дають повного набору афінних перетворень. Перетворення, представлені на рис. 4.33, також є афінними, але не належать до групи ізометричних перетворень.
Масштабування
Масштабування (scaling) являє собою анізометричне афінне перетворення. Практично будь-яке афінне перетворення можна звести до суперпозиції перетворень масштабування, повороту і зсуву. Перетворення масштабування збільшує або зменшує розміри об'єкта. На рис. 4.34 показані два варіанти масштабування - пропорційне (рівномірний на всіх напрямках або перетворення подібності) і розтяг тільки в одному напрямку. Останній варіант також знадобиться включити в набір елементарних перетворень, якими ми будемо користуватися надалі при моделюванні і візуалізації об'єктів.
Як видно на рис. 4.35, перетворення масштабування також має фіксовану точку. Таким чином, набір параметрів процесу перетворення, включає фіксовану точку, напрямок, вздовж якого змінюється масштаб, і масштабний множник (α). При α> 1 об'єкт розтягується в заданому напрямку, а при об'єкт стискується. При негативному значенні а відбувається відображення (reflection) об'єкта відносно заданої фіксованої точки в зазначеному напрямку (рис. 4.36).
2.3
Перетворення в
однорідних координатах
У більшості графічних API доводиться працювати в певній системі відліку (системі координат). Хоча програміст і може змінити цю систему координат (як правило, фрейм), він не може працювати з представленнями на високому рівні, наприклад з виразами виду
Замість цього програміст має справу з представленими в однорідних координатах і виразами виду
У певному фреймі будь-яке афінне перетворення може бути представлено матрицею 4×4 виду
Зсув
Перетворення зсуву зміщує точки в нові позиції відповідно до заданого вектора зміщення. Якщо точка p зсовується в р на відстань d, то таке перетворення можна записати у вигляді
р '= р + d.
В однорідних координатах р, р' і d виражаються наступним чином:
Тоді ці рівняння можна записати у вигляді окремих виразів для кожного компонента:
Метод подання перетворення зсуву за допомогою підсумовування матриць-стовпців погано поєднується з іншими афінними перетвореннями. Існує й інший метод подання зсуву - за допомогою множення матриць:
де
Матриця Т називається матрицею зсуву (translation matrix). Іноді її записують у вигляді Т (aх aу, az.), Щоб підкреслити три незалежні параметри перетворення.
На перший погляд може здатися, що четвертий елемент у матрицях-стовпцях зайвий, але виявляється, що при використанні тривимірної версії вираження р' = Тр такий же результат не виходить. Тому іноді застосування однорідних координат для виконання перетворення зсуву розглядається як свого роду трюк, що дозволяє замінити підсумовування тривимірних матриць-стовпців перемножуванням чотиривимірних матриць.
Матрицю зворотного перетворення можна сформувати або за допомогою алгоритму обернення матриць, або взявши до уваги, що зворотне перетворення - це зрушення на відстань -d. У будь-якому випадку отримаємо
Масштабування
Як
вже говорилося вище, перетворення
повороту і масштабування
Матриця перетворення масштабування, що має фіксовану точку на початку координат, дозволяє задавати масштабні коефіцієнти по кожній з координатних осей незалежно один від одного. Маємо три рівняння:
які можна виразити в однорідних координатах матричним рівнянням
де
У цій матриці, а також в матриці зсуву та інших матрицях перетворень однорідних координат четвертий рядок не залежить від характеру перетворення, а служить для того, щоб після виконання множення зберігалося значення 1 в четвертому компоненті точки.
Для обернення матриці масштабування необхідно використовувати зворотні значення масштабних коефіцієнтів по осях:
Поворот
Спочатку розглянемо поворот навколо початку координат, тобто будемо вважати, що фіксована точка перетворення повороту знаходиться на початку координат. Оскільки поворот можна виконувати незалежно навколо кожної з осей координат, це перетворення має три ступені свободи. Але потрібно враховувати, що перемноження матриць не є комутативною операцією. Якщо за поворотом навколо осі х на кут q слідує поворот навколо осі у на кут φ, то результат буде відрізнятися від отриманого при виконанні цих же перетворень в іншій послідовності.
Щоб
знайти матрицю повороту навколо
окремої осі системи координат,
можна використовувати
або в матричному вигляді
де
Розмірковуючи аналогічно, можна сформувати і матриці повороту навколо осей х та у. При повороті навколо осі х значення компонентів х точок залишаються незмінними, і отримуємо двовимірний поворот в площині х = const. При повороті навколо осі у зберігаються значення компоненту точок. Матриці цих поворотів мають вигляд
Знак елементів матриць, що містять sin, відповідає прийнятим визначенням позитивного напрямку повороту в правосторонній системі координат.
Позначимо через R будь-яку з трьох наведених вище матриць поворотів навколо осей системи координат. Після повороту на кут 6 перетворені точки завжди можна повернути в початковий стан, виконавши поворот навколо тієї ж осі на кут -q. Отже,
Зверніть увагу і на те, що елементи, які містять cos, завжди розміщуються на головній діагоналі матриці, а пара елементів, що містять sin, - по різні боки від головної діагоналі.