Task 3 (1126109), страница 2

Файл №1126109 Task 3 (Task 3 часть 1) 2 страницаTask 3 (1126109) страница 22019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

Бинарники для Windows можно скачать тут и тут. Проектдля Visual Studio работает с локальными копиями библиотек, которые предоставляются вместес шаблоном. В линукс НЕОБХОДИМА установка библиотек из репозитория (apt-get install freeglut,apt-get install glew).В линукс запускать программу рекомендуется вызовом из терминала ./main в папке bin/bin,построенного make. Запуск из иной директории может не удасться, поскольку используютсяотносительные пути к шейдерам.

При разработке своего приложения вы можете исправить это,воспользовавшись платформенно-зависимыми средствами.Перед запуском программы убедитесь, что:вы обновили драйверы видеокартывы установили необходимые библиотекиУзнать текущую версию OpenGL можно командами:Linux (необходима установка mesa-utils)glxinfo | grep -i openglWindows1) запуск glew\bin\Release\Win32\glewinfo.exe2) открываете файл glewinfo.txt и читаете, что там написано. Вас интересует в первую очередьстрока видаOpenGL version 4.4.0 is supportedДля запуска шаблона там должна быть версия не ниже 3.2.73) Для работы с векторами и матрицами можно использовать библиотеку glm, или любуюдругую на ваш вкус.4) Для загрузки .3ds моделей можно использовать библиотеку l3ds.5) Данные:Параметры основных объектов Солнечной системы в таблицеФизические параметры планет, Текстуры планет, База данных малых небесных тел, моделикосмических кораблей.6) Координаты известных объектов в заданное времяНастройки для получения значений в нашей системе координат (единицы измерения:километры, секунды):5 Ресурсы для изучения OpenGL 3 иOpenGL41) Самый главный источник информации http://www.opengl.org/documentation/2) Обучающие примеры:https://code.google.com/p/gl33lessons/http://nehe.gamedev.net/ (Перевод) http://www.opengl-tutorial.org/beginners-tutorials/ OpenGL 3.3 http://www.gamedev.ru/code/forum/?id=138435 OpenGL 4 http://www.gamedev.ru/code/articles/tags/OpenGL3) Теоретические пособия:http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Table-of-Contents.html http://www.arcsynthesis.org/gltut/4) Полезный ресурс при выполнении бонусных заданий http://steps3d.narod.ru/6 Правила оформления работыВ присланном архиве должно быть 2 подпапки: src с исходным кодом и bin с исполняемым.Также туда может быть помещен readme c примечаниями, куда вы должны записать пункты из8бонусной части, которые вы реализовали.

В противном случае проверяющий может пропуститьналичие реализации бонуса. Также в файле нужно отобразить информацию по управлениюкамерой и настройками программы, если оно нетривиально.При разработке для Windows в папке bin должны быть exe файл, шейдеры и дополнительныебиблиотеки (см. как, например, сделано в шаблоне).При разработке для Linux в каталоге src или в корне архива должен быть Makefile, которыйсформирует аналогичный вывод в папку bin (примерно как в шаблоне).7 Подсказки к решению: база7.1 Расчет движения планетПри расчете движения планет можно использовать один из 2 вариантов:Модель Кеплера движения каждой планеты по своей орбите в отдельностиГравитационную модель взаимодействия всех планет со всеми, т.е.

приближённоерешение задачи N тел7.1.1 Глобальные координатыO - неподвижная точка и центр глобальных координат. Плоскость орбиты Земли будемсчитать плоскостью эклиптики, она также неподвижна. На плоскости эклиптики выбранонекоторое направление, соответствующее т.н. точке весеннего равноденствия. Зададим оси так:X - направление из центра Солнца в точку осеннего равноденствияZ - перепендикуляр к плоскости эклиптики, направленный в сторону земного севераY задана так, что XYZ - правый ортонормированный базис.7.1.2 О дискретизацииРекомендуется записывать все величины в системе СИ (т.е. расстояние в метрах, массу вкилограммах, время в секундах) и использовать для хранения их переменные double.При расчётах координат планет использовать шаг дискретизации ∆t по времени в 10-100 разменьше, чем время отрисовки кадра, но не более 1 часа при быстрой анимации.7.1.3 Расчет движения планеты по модели КеплераСчитаем, что центр Солнца лежит в центре глобальных координат, Солнце неподвижно.1) Орбита в глобальных координатах.9Орбита планеты является эллипсом, один из фокусов которого - центр Солнца.

Параметрыорбиты (форма и положение) однозначно определяются Кеплеровыми элементами орбиты.Нужно вычислить по ним локальный базис орбиты для удобства преобразования координат:O - геометрический центр эллипса орбиты (не Солнце)X сонаправлена с большей осью орбитыZ направлена в сторону севераY сонаправлена с меньшей осью орбиты, XYZ - ортонормированный базис2) Координаты центра планеты в плоскости ее орбитыЗадание начальных координат и начальной скорости планеты в нулевой момент времениВычисление координат планеты в следующий момент времени (текущий момент времени+ ∆t) из закона площадей (2 закон Кеплера).

Его можно использовать приближённо, т.е.считать площади треугольников, а не эллиптических секторов.Таким образом, сначала вычисляются относительные двумерные координаты планеты на орбите,затем они преобразуются в глобальные с помощью перехода между базисами.7.1.4 Гравитационная модель взаимодействияПриближённо решается задача N тел.

Солнце движется, как и планеты.Исходные данные для всех тел (Солнца,планет, спутников, ...)Координаты (3d точка)Скорость (3d вектор)Масса (скаляр)Текущие координаты всех тел вычисляются итерационно. Простейший способ вычислениякоординат тела в следующий момент времени:1. По закону всемирного тяготения вычислить равнодействующую всех сил, действующих натело, на основе его положения в текущий момент времени и получить текущее ускорение2.

Считается, что весь промежуток времени ∆t на тело действует постоянное ускорение,вычисленное на предыдущем шаге.3. Вычисляем новую скорость и новое положение путём интегрирования постоянногоускорения по времени:Velocity += Acceleration * ∆tPosition += Velocity₀ * ∆t + Acceleration * ∆t² / 210Важно использовать на текущей итерации расчёта координаты всех тел с этого же шага. Новыекоординаты должны где-то сохраняться. Координаты можно изменять только после завершениятекущей итерации для всех тел в системе!Вместо этого простейшего способа можно использовать многошаговую экстраполяцию ускорения,или записать систему дифференциальных уравнений движения системы тел и решать её однимиз более сложных численных методов (например, Рунге-Кутты 4 порядка и выше).В случае наличия большого количества тел (спутников, астероидов) нужно оптимизироватьскорость вычислений.

Например, игнорировать влияние далёких лёгких объектов, или ещё както.7.2 Генерация сферыДля генерации сферы вам необходимо создать полигональную сетку, содержащую координатыкаждой точки, нормаль в этой точке и текстурную координату. При использовании индексногобуфера (как в шаблоне) дополнительно необходимо заполнить его информацией о гранях(треугольниках). Плюс индексного подхода в отсутствии дублирования вершин.Существует несколько способов генерации сферы.Первый способ - самый очевидный.

Нужно рассмотреть сферические координаты сферы. Тогдарадиус будет фиксирован (например, 1). Точки на полярной сетке можно выбрать равномернымперебором зенита и азимута с фиксированным шагом. Текстурная координата будет совпадатьсо значениями углов, нормаль - нормированный единичный вектор, направленный по зениту иазимуту, если центр сферы находится в начале координат.Проблема первого подхода - в неравномерности расположения точек. Чтобы избежать этойпроблемы, используют итерационный процесс подразбиение некоторой аппроксимации сферы.В качестве нее обычно выбирают правильный многогранник: икосаэдр или додэкаэдр, можнокуб.Исходная фигура генерируется тривиальным фиксированным начальным набором координат.Затем каждый полигон (треугольник у икосаэдра) подразбивается. Например, можно рекурсивноразбивать каждое ребро посередине и получать 4 треугольника из одного на каждом шаге.Каждая точка проецируется на сферу (для этого ее нужно поделить на радиус в сферическойсистеме и умножить на радиус итоговой сферы), и шаг повторяется.

Нормали и текстурныекоординаты можно рассчитать по полярным углам.При втором подходе нужно следить за перестроением массива индексов (треугольников)итоговой фигуры.Можно произвести аналогичное преобразование с помощью генерации новой геометрии втесселяционных и геометрических шейдерах (за дополнительные баллы).11О работе с тесселяционными шейдерами подробно написано здесь.

Тесселяция реализуется спомощью двух шейдеров (1 и 2). После генерации всех подразбиенийв геометрическом шейдере можно пересчитать нормали и текстурные координаты.7.3 КамераНа самом деле можно себе представить, что камера помещена в центре сцены, а все остальныеобъекты движутся и вращаются вокруг нее.С камерой связана модельно-видовая матрица. Модельно-видовую матрицу нужно передать ввершинный шейдер (это уже сделано в шаблоне).Для обработки событий с клавиатуры нужно объявить функцию keyPressed, а затем указатьopengl, что эту функцию следует использовать как соответствующий обработчик.glutKeyboardFunc(keyPressed);Для обработки событий с мыши - аналогично, нужно объявить функцию mouseFunc, а затемуказать ее opengl посредством фунции glutMouseFunc.void glutMouseFunc(void (*func)(int button, int state, int x, int y));Примеры кода можно найти в методичке.При создании камеры вам пригодится аппарат линейной алгебры.

Характеристики

Тип файла
PDF-файл
Размер
1,03 Mb
Материал
Тип материала
Высшее учебное заведение

Список файлов лабораторной работы

решение
Mashgraph2013-3task
bin
Win32
Release
Fragment-orbit.frag.cpp
Fragment.frag.cpp
Triangles.exe
Triangles.pdb
Vertex-orbit.vert.cpp
Vertex.vert.cpp
controls(1).bin
controls(1).xml
controls(2).bin
controls(2).xml
controls(3).bin
controls(3).xml
freeglut.dll
glew32.dll
x64
Release
Fragment-orbit.frag.cpp
Fragment.frag.cpp
Triangles.exe
Triangles.pdb
Vertex-orbit.vert.cpp
Vertex.vert.cpp
controls(1).bin
controls(1).xml
controls(2).bin
controls(2).xml
Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7027
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее