Ім'я файлу: Лабораторная_работа_Вращение.docx
Розширення: docx
Розмір: 632кб.
Дата: 19.11.2022
скачати
Пов'язані файли:
Бланк протоколу ПР2 Кількісне оцінювання індивідуального ризику
Обробка металів тиском.doc
Лекція 5_калібрування.ppt
Записка Донченко — копия.docx
Курс лекций по ТНИ 3 семестр.doc
Лабораторна робота 1.pdf
Практична робота 1.docx
15_11_22_нов_задача_Тема_4_Практичне_завдання.docx

Міністерство освіти та науки України

Одеський національний університет імені І. І. Мечнікова

ФМФИТ


Звiт


з лабораторної роботи

з дисципліни "ДС№4: Геометричне моделювання»

студента ІV курсу, ФМФIТ, IСТ


Одеса – 2022

Вступ


Мета лабораторної роботи: розробка алгоритму та механізмів візуалізації геометричного движку з наступним функціоналом:

  1. Обертання об’єктів (точок, ліній, 2D-фігур, 3D-фігур) навколо осі, що проходить через початок рухомої системи координат;

  2. Зображення проекції 3D-об’єктів на 2D простір зі збереженням перспективи;

  3. Обертання об’єктів навколо довільної осі у 3D просторі.


Алгоритм обертання об’єкту навколо осі, що проходить через початок системи координат
Для того, щоб обернути тіло, координати точок якого задані в певній рухомій системі координат GLMN відносно стаціонарної системи OXYZ, необхідно виконати певний набір операцій.

За своєю суттю задача з обертання тіла зводиться до задачі обертання базисних векторів рухомої системи, жорстко пов’язаної з тілом. Оскільки при зміні орієнтації системи значення радіус-векторів точок не зміняться, а орієнтація відносно стаціонарної системи – зміниться.

Задача обертання довільноговектору у рухомій системі GLMN полягає в декількох кроках:

  1. Знайти матрицю переходу з рухомої системи GLMN до додаткової TPQS (матриця ). Дана задача потребує знаходження значень базисів нової системи TPQSта розподіляється на декілька підзадач:

    1. Спочатку необхідно нормалізувати напрямляючий вектор , що співпадає з напрямом осі обертання; він і буде першим базисом:



    1. Далі потрібно знайти ортогональну проекцію вектора на вектор . Вектор буде другим базисом:



    1. Останній базис нової системи знаходиться за допомогою векторного добутку між векторами :



Базисний вектор також потрібно нормалізувати.

    1. За розрахованими базисами можна отримати матрицю переходу :



  1. Для переходу із рухомої системи до додаткової потрібно помножити вектор на матрицю переходу зліва.

PQS = LMN)T

  1. Ми обертаємо вектор навколо на кут a у радіанах, тому матриця оберту буде мати наступний вигляд. Для оберту вектору необхідно помножити вектор на матрицю оберту Rot:



PQS = PQS)T

  1. Наступний крок потребує повернутись назад до системи координат GLMN. Оскільки матриці переходу ортогональні, тоді обернена матриця переходу з додаткової системи до рухомої – це транспонована матриця .



Аналогічно перемножаємо вектор та матрицю переходу .

LMN = PQS )T

  1. (Додатковий) Цей крок виконується тільки для векторів, що задані у системі координат GLMN, та потребують відображення у просторі OXYZ полягає у вираженні вектору у стаціонарній системі координат OXYZ. Для цього знову повторимо алгоритм знаходження оберненої матриці переходу.



Для отримання координат вектора у стаціонарній системі необхідно не тільки помножити вектор на матрицю переходу, а й також додати до отриманого вектору радіус-вектор від початку стаціонарної системи OXYZ до початку рухомої системи GLMN.

XYZ LMN

Отже, для обертання тіла навколо осі не потрібно обертати усі його вектори, а достатньо обернути базиси системи координат навколо осі і після чого просто перерахувати вектори, що задані в рухомій системі координат в координатах стаціонарної.
Алгоритм проектування 3D-об’єкту на 2D простір
Для відображення 3D-об’єкту на 2D площині потрібно лише 2 речі:

  1. Точка положення спостерігача у просторі;

  2. Точка об’єкт спостереження у просторі.


За двома точками можна побудувати канонічне рівняння прямої, яка перетинає площину проектування OXY.



Зі шкільної математики усім відомо, що точка перетину одніє із площин, має нуль в одній с координат. В даному випадку маємо Z = 0.



З викладеного вище отримуємо 2 рівняння, результатами яких будут значення X та Y точки перетину площини цією прямою, тобто точка проекції.

Оскільки будь-який 3D-об’єкт – це сукупність точок, то задача проекції полягає у розрахунках усіх точок перетину подібних прямих.

Алгоритм обертання об’єкту навколо довільної осі у просторі
Обертання навколо довільної осі у просторі не створює додаткових труднощів.

По-перше, необхідно розрахувати направляючий вектор , що співнаправлений з віссю, навколо якої обертається тіло. Цей вектор не задано явно, тому його потрібно розрахувати за допомогою різниці радіус-векторів та .

За правилами векторної алгебри вектор .

Вектор оберту можно вільно переносити тепер у просторі, та навіть зіставити з початком рухомої системи координат – вектор . Після цього алгоритм оберту повністю співпадає з алгоритмом оберту навколо вісі, що проходить через початок координат. Загальне зображення процесу надане нижче:



По-друге, оскільки тіло обертається не тільки навколо вектора , колінеарного , то має змінюватись й положення початку системи координат G.

Після повороту за звичайним алгоритмом можна отримати нове положення початку рухомої системи координат тіла, тому перераховуємо її радіус-вектор . Для цього необхідно розрахувати значення вектора :



Далі необхідно обернути вектор . за загальним алгоритмом:



Та врешті-решт перерахувати нове значення :



Таким чином, після усіх перерахунків та з врахуванням відлагодженого алгоритму обертання системи маємо робочий функціонал обертання 3D-об’єкту навколо довільної осі.
Програмна реалізація додатку
Програма реалізована на мові программування C# за допомогою технології Graphics та WinForms.

Функціонал додатку містить програмні модулі, що реалізують можливості:

  1. Пошук матриць переходів;

  2. Перехід векторів із системи в систему

  3. Обертання векторів;

  4. Проекція векторів на 2D простір;

  5. Відображення та малювання на формі фігур та кроків їх руху.


Далі надано демонстрацію роботи додатку на прикладах:

  1. Обертання об’ємної фігури навколо осі,що паралельна осі Ox:




  1. Обертання об’ємної фігури навколо осі,що паралельна осі Oy:




  1. Обертання об’ємної фігури навколо осі,що паралельна осі Oz:




  1. Обертання об’ємної фігури навколо осі,що паралельна осі діагоналі Oxy:




  1. Обертання об’ємної фігури навколо користувацьої осі:



Висновок



Виконуючи лабораторну роботу, виконано розробку алгоритмів та механізмів візуалізації геометричного движку з наступним функціоналом:

  1. Обертання об’єктів (точок, ліній, 2D-фігур, 3D-фігур) навколо осі, що проходить через початок рухомої системи координат;

  2. Зображення проекції 3D-об’єктів на 2D простір зі збереженням перспективи;

  3. Обертання об’єктів навколо довільної осі у 3D просторі.

скачати

© Усі права захищені
написати до нас