Ім'я файлу: Лабораторная_работа_Вращение.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 ВступМета лабораторної роботи: розробка алгоритму та механізмів візуалізації геометричного движку з наступним функціоналом: Обертання об’єктів (точок, ліній, 2D-фігур, 3D-фігур) навколо осі, що проходить через початок рухомої системи координат; Зображення проекції 3D-об’єктів на 2D простір зі збереженням перспективи; Обертання об’єктів навколо довільної осі у 3D просторі. Алгоритм обертання об’єкту навколо осі, що проходить через початок системи координат Для того, щоб обернути тіло, координати точок якого задані в певній рухомій системі координат GLMN відносно стаціонарної системи OXYZ, необхідно виконати певний набір операцій. За своєю суттю задача з обертання тіла зводиться до задачі обертання базисних векторів рухомої системи, жорстко пов’язаної з тілом. Оскільки при зміні орієнтації системи значення радіус-векторів точок не зміняться, а орієнтація відносно стаціонарної системи – зміниться. Задача обертання довільноговектору у рухомій системі GLMN полягає в декількох кроках: Знайти матрицю переходу з рухомої системи GLMN до додаткової TPQS (матриця ). Дана задача потребує знаходження значень базисів нової системи TPQSта розподіляється на декілька підзадач: Спочатку необхідно нормалізувати напрямляючий вектор , що співпадає з напрямом осі обертання; він і буде першим базисом: Далі потрібно знайти ортогональну проекцію вектора на вектор . Вектор буде другим базисом: Останній базис нової системи знаходиться за допомогою векторного добутку між векторами : Базисний вектор також потрібно нормалізувати. За розрахованими базисами можна отримати матрицю переходу : Для переходу із рухомої системи до додаткової потрібно помножити вектор на матрицю переходу зліва. PQS = LMN)T Ми обертаємо вектор навколо на кут a у радіанах, тому матриця оберту буде мати наступний вигляд. Для оберту вектору необхідно помножити вектор на матрицю оберту Rot: PQS = PQS)T Наступний крок потребує повернутись назад до системи координат GLMN. Оскільки матриці переходу ортогональні, тоді обернена матриця переходу з додаткової системи до рухомої – це транспонована матриця . Аналогічно перемножаємо вектор та матрицю переходу . LMN = PQS )T (Додатковий) Цей крок виконується тільки для векторів, що задані у системі координат GLMN, та потребують відображення у просторі OXYZ полягає у вираженні вектору у стаціонарній системі координат OXYZ. Для цього знову повторимо алгоритм знаходження оберненої матриці переходу. Для отримання координат вектора у стаціонарній системі необхідно не тільки помножити вектор на матрицю переходу, а й також додати до отриманого вектору радіус-вектор від початку стаціонарної системи OXYZ до початку рухомої системи GLMN. XYZ LMN Отже, для обертання тіла навколо осі не потрібно обертати усі його вектори, а достатньо обернути базиси системи координат навколо осі і після чого просто перерахувати вектори, що задані в рухомій системі координат в координатах стаціонарної. Алгоритм проектування 3D-об’єкту на 2D простір Для відображення 3D-об’єкту на 2D площині потрібно лише 2 речі: Точка положення спостерігача у просторі; Точка об’єкт спостереження у просторі. За двома точками можна побудувати канонічне рівняння прямої, яка перетинає площину проектування OXY. Зі шкільної математики усім відомо, що точка перетину одніє із площин, має нуль в одній с координат. В даному випадку маємо Z = 0. З викладеного вище отримуємо 2 рівняння, результатами яких будут значення X та Y точки перетину площини цією прямою, тобто точка проекції. Оскільки будь-який 3D-об’єкт – це сукупність точок, то задача проекції полягає у розрахунках усіх точок перетину подібних прямих. Алгоритм обертання об’єкту навколо довільної осі у просторі Обертання навколо довільної осі у просторі не створює додаткових труднощів. По-перше, необхідно розрахувати направляючий вектор , що співнаправлений з віссю, навколо якої обертається тіло. Цей вектор не задано явно, тому його потрібно розрахувати за допомогою різниці радіус-векторів та . За правилами векторної алгебри вектор . Вектор оберту можно вільно переносити тепер у просторі, та навіть зіставити з початком рухомої системи координат – вектор . Після цього алгоритм оберту повністю співпадає з алгоритмом оберту навколо вісі, що проходить через початок координат. Загальне зображення процесу надане нижче: По-друге, оскільки тіло обертається не тільки навколо вектора , колінеарного , то має змінюватись й положення початку системи координат G. Після повороту за звичайним алгоритмом можна отримати нове положення початку рухомої системи координат тіла, тому перераховуємо її радіус-вектор . Для цього необхідно розрахувати значення вектора : Далі необхідно обернути вектор . за загальним алгоритмом: Та врешті-решт перерахувати нове значення : Таким чином, після усіх перерахунків та з врахуванням відлагодженого алгоритму обертання системи маємо робочий функціонал обертання 3D-об’єкту навколо довільної осі. Програмна реалізація додатку Програма реалізована на мові программування C# за допомогою технології Graphics та WinForms. Функціонал додатку містить програмні модулі, що реалізують можливості: Пошук матриць переходів; Перехід векторів із системи в систему Обертання векторів; Проекція векторів на 2D простір; Відображення та малювання на формі фігур та кроків їх руху. Далі надано демонстрацію роботи додатку на прикладах: Обертання об’ємної фігури навколо осі,що паралельна осі Ox: Обертання об’ємної фігури навколо осі,що паралельна осі Oy: Обертання об’ємної фігури навколо осі,що паралельна осі Oz: Обертання об’ємної фігури навколо осі,що паралельна осі діагоналі Oxy: Обертання об’ємної фігури навколо користувацьої осі: ВисновокВиконуючи лабораторну роботу, виконано розробку алгоритмів та механізмів візуалізації геометричного движку з наступним функціоналом: Обертання об’єктів (точок, ліній, 2D-фігур, 3D-фігур) навколо осі, що проходить через початок рухомої системи координат; Зображення проекції 3D-об’єктів на 2D простір зі збереженням перспективи; Обертання об’єктів навколо довільної осі у 3D просторі. |