ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Завдання графічних перетворень в додатках моделювання з використанням ЕОМ
         

     

    Інформатика, програмування
    Зміст

    Вступ
    Афіни перетворення на площині
    Однорідні координати точки
    Афінний перетворення в просторі
    Висновок
    Список літератури


    Введення


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


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

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



    Рис. 1

    Перехід від однієї прямолінійною координатної системи на площині до іншої описується наступними співвідношеннями:

    x * = ax + by + l, (2.1)
    y * = gx + by + m, (2.2)

    де a, b, g, l, m - довільні числа, пов'язані нерівністю:
    (2.3)


    Формули (2.1) та (2.2) можна розглядати двояко: або зберігається точка і змінюється координатна система (рис. 2) - в цьому випадку довільна точка М залишається тією ж, змінюються лише її координати (х, у) | (х *, y *), або змінюється точка і зберігається координатна система (мал. 3) - в цьому випадку формули (2.1) та (2.2) задають відображення, що переводить довільну точку М (х, у) в точку М * (х *, у *) , координати якої визначені в тій же системі координат.



    Рис. 2

    Рис. 3

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

    1. Поворот навколо початкової точки на кут j (рис. 4) описується формулами:
    х * = x cosj - y sinj, (2.3)
    y * = x sinj - y cosj. (2.4)

    2. Растяжение (стиснення) уздовж координатних осей можна задати так:
    x * = ax, (2.5)
    y * = dy, (2.6)
          a> 0, d> 0. (2.7)
    Растяжение (стиснення) уздовж осі абсцис забезпечується за умови, що a> 1 (a <1). На рис. 5 a = d> 1.

    3. Відображення (щодо осі абсцис) (рис. 6) задається за допомогою формул:
    x * = x, (2.8)
    y * =-y. (2.9)

    4. На рис. 7 вектор переносу ММ * має координати l, m. Перенесення забезпечує співвідношення:
     x * = x + l, (2.10)
         y * = y + m. (2.11)


    Рис. 4

    Рис. 5


    Рис. 6

    Рис. 7

    Вибір цих чотирьох окремих випадків визначається двома обставинами.
    Кожне з наведених вище перетворень має простий і наочний геометричний зміст (геометричним змістом наділені і постійні числа, що входять у наведені формули).
    Як відомо з курсу аналітичної геометрії, будь-яке перетворення виду (2.1) завжди можна представити як послідовне виконання (суперпозицію) найпростіших перетворень виду 1 - 4 (або частини цих перетворень).
    Таким чином, справедливо наступне важлива властивість афінних перетворень площині: будь-яке відображення виду (2.1) можна описати за допомогою відображень, що задаються формулами (2.3) - (2.11).
    Для ефективного використання цих відомих формул в задачах комп'ютерної графіки більш зручною є їх матрична запис. Матриці, що відповідають випадкам 1 - 3, будуються легко і мають відповідно такий вигляд:


    3. Однорідні координати точки


    Нехай М - довільна точка площини з координатами х і у, обчисленими щодо заданої прямолінійною координатної системи. Однорідними координатами цієї точки називається будь-яка трійка одночасно не рівних нулю чисел х1, х2, х3, пов'язаних із заданими числами х і у наступними співвідношеннями:

     / X3 = x, x2/x3 = 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 новими координатами цієї точки.
    Широко використовуються в проективної геометрії однорідні координати дозволяють ефективно описувати так звані Невласні елементи (по суті, ті, якими проектна площину відрізняється від звичної евклідової площині).
    У проективної геометрії для однорідних координат прийнято наступне позначення:

    x: у: 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, порівняємо два записи:

    (3.4)
    Неважко помітити, що після перемножування виразів, які стоять у правій частині останнього співвідношення, ми отримаємо формули (2.1) та (2.2) і вірне числове рівність 1 = 1. Тим самим порівнювані записи можна вважати рівносильними.
    Елементи довільної матриці афінної перетворення не несуть в собі явно вираженого геометричного сенсу. Поетомучтоби реалізувати те чи інше відображення, тобто знайти елементи відповідної матриці за заданим геометричному опису, необхідні спеціальні прийоми. Зазвичай побудова цієї матриці відповідно до складності поставленого завдання і з описаними вище окремими випадками рзбівают на кілька етапів.
    На кожному етапі пишеться матриця, що відповідає тому чи іншому з виділених вище випадків 1 - 4, що володіють добре вираженими геометричними властивостями.
    Випішнм відповідні матриці третього порядку.
    А. Матриця обертання (rotation)
                                                (3.5)

    Б. Матриця розтягування-стиснення (dilatation)
                                   (3.6)

    В. Матриця відображення (reflection)
                                                         (3.7)

    Г. Матриця переносу (translation)

    (3.8)


    Розглянемо приклади афінних перетворень площини.

    Приклад 1. Побудувати матрицю повороту навколо точки А (a, b) на кут j (рис. 9).

    Рис. 8

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

    матриця відповідного перетворення.

    2-й крок. Поворот на кут
    (3.10)

    матриця відповідного перетворення.

    3-й крок. Передача на вектор А (a, b) для повернення центру повороту в колишнє положення;
    (3.11)

    матриця відповідного перетворення.
    Перемноживши матриці в тому ж порядку, як вони виписані:
    [T-A] [Rj] [TA].

    В результаті отримаємо, що шукане перетворення (в матричній запису) буде виглядати наступним чином:

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

    Приклад 2. Побудувати матрицю розтягування з коефіцієнта розтягування a уздовж осі абсцис і b вздовж осі ординат і з центром в точці А (a, b).
    1-й крок. Передача на вектор-А (-a,-b) для поєднання центру розтягування з початком координат;
                                                    (3.13)
    матриця відповідного перетворення.

    2-й крок. Розтягування уздовж координатних осей з коефіцієнта a та b відповідно; матриця перетворення має вигляд
      (3.14)


    3-й крок. Передача на вектор А (a, b) для повернення центру розтягнення у колишнє положення; матриця відповідного перетворення:
       (3.15)

    Премножів матриці в тому ж порядку
    [T-A] [D] [TA],
    отримаємо остаточно


    Міркуючи подібним чином, тобто розбиваючи запропоноване перетворення на етапи, підтримувані матрицями [R], [D], [M], [T], можна побудувати матрицю будь-якого афінної перетворення за його геометричного опису.


    4. Афінний перетворення в просторі

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


                      Матриця обертання навколо осі ординат на кут y:



    Матриця обертання навколо осі аппікат на кут c:


    Корисно звернути увагу на місце знака "-" у кожній з трьох наведених матриць.
    Б. Матриця розтягування-стиснення:

    де
    a> 0 - коефіцієнт розтягування (стискання) уздовж осі абсцис;
    b> 0 - коефіцієнт розтягування (стискання) уздовж осі ординат;
    g> 0 - коефіцієнт розтягування (стискання) уздовж осі апплікат.

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

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


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


    Г. Матриця переносу (тут (l, m, n) - вектор переносу):

    Як і в двовимірному разі, всі виписані матриці невирождени.
    Наведемо важливий приклад побудови матриці складного перетворення за його геометричного опису.

    Приклад 3. Побудувати матрицю обертання на кут j навколо прямої L, що проходить через точку А (a, b, c) і має що направляє вектор (l, m, n). Можна вважати, що спрямовує вектор прямої є одиничним:
    l2 + m2 + n2 = 1
    На рис. 10 схематично показано, матрицю перетворення якого потрібно знайти.

    X
    Рис. 10

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

    У результаті цього преноса ми добиваємося того, щоб пряма L проходила через початок координат.

    2-й крок. Поєднання осі апплікатс прямий L двома поворотами навколо осі абсцис і осі ординат.
    1-й поворот - навколо осі абсцис на кут y (підлягає визначенню). Щоб знайти цей кут, розглянемо ортогональну проекцію L 'вихідної прямий L на площину X = 0 (мал. 11).

    Рис. 11

    Направляючий вектор прямої L 'визначається просто - він дорівнює
    (0, m, n).
    Звідси відразу ж випливає, що
    cos y = n/d, sin y = m/d, (4.10)
    де
    (4.11)

    Відповідна матриця обертання має такий вигляд:

    Під дією перетворення, що описується цією матрицею, координати вектора (l, m, n) зміняться. Якщо підрахувати їх, в результаті отримаємо
    (l, m, n, 1) [Rx] = (l, 0, d, 1). (4.13)
    2-й поворот навколо осі осі ординат на кут q, що визначається співвідношеннями
             сos q = l, sin q =-d (4.14)

    Відповідне матриця обертання записується в наступному вигляді:


    3-й крок. Обертання навколо прямої L на заданий кут j.
    Так ка тепер пряма L співпадає з віссю апплікат, то відповідна матриця має такий вигляд:

    4-й крок. Поворот навколо осі ординат на кут-q.
    5-й крок. Поворот навколо осі абсцис на кут y-.
    Однак обертання в просторі некоммутатівно. Тому порядок, в якому проводяться обертання, є дуже великою.
    6-й крок. Передача на вектор А (a, b, c).
    Перемноживши знайдені матриці в порядку їх побудови, отримаємо таку матрицю:
    [T] [Rx] [Ry] [Rz] [Ry] -1 [Rx] -1 [T] -1.

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

    Розглядаючи приклади подібного роду, ми будемо отримувати в результаті невироджені матриці виду

    За допомогою таких матриць можна перетворити будь-які плоскі і просторові фігури.
    Приклад 4. Потрібно піддати заданому афінному перетворенню опуклий багатогранник.
    Для цього спочатку по геометричному опису відображення знаходимо його матрицю [A]. Помічаючи далі, що довільний опуклий багатогранник однозначно задається набором всіх своїх вершин
    Vi (xi, yi, zi), i = 1, ..., n,
    Будуємо матрицю
       (4.18)
    Піддаючи цей набір перетворенню, описуваного знайденої невироджених матрицею четвертого порядку, [V] [A], ми отримуємо набір вершин нового опуклого багатогранника - образу вихідного (рис. 12).
    Рис. 11


    4. Висновок

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


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

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status