Студент: Меркулов Фёдор Алексеевич
Группа: М8О-307Б-21 # Курсовая работа по дисциплине «Компьютерная графика»
Студент: Меркулов Фёдор Алексеевич
Группа: М8О-307Б-21
Преподаватель: Филиппов Г.Б.
Московский авиационный институт (НИУ)
2023 г.
В рамках курса «Компьютерная графика» мной были выполнены 7 лабораторных работ, охватывающих ключевые аспекты 2D/3D-визуализации, геометрического моделирования, работы с OpenGL, шейдерного программирования и интерактивного управления графическими объектами.
Проекты реализованы с использованием различных технологий: OpenGL, GLFW, FreeGLUT, Qt, WinAPI, а также GLSL для шейдерных эффектов. Все работы выполнены по индивидуальному заданию (вариант №2).
Фигура: Лемниската Бернулли
Уравнение:
Реализация:
- Использованы библиотеки
GLEW,GLFW,FreeGLUT,cmath. - Построена декартова система координат с подписями, масштабными метками и стрелками.
- Кривая отрисована путём перебора значений
$x \in [-a, a]$ с шагом0.0001и вычисления соответствующих$y$ по аналитической формуле.
Результат: Интерактивное окно с графиком лемнискаты и координатными осями.
Фигура: Правильный октаэдр
Реализация:
- Использован фреймворк Qt.
- Созданы классы
MainWindowиOctahedronдля управления и отрисовки. - Реализовано вращение фигуры мышью, масштабирование и центрирование при изменении размера окна.
- Удаление невидимых линий выполнено за счёт разделения граней на передние и задние.
Результат: Интерактивная 3D-модель октаэдра с возможностью вращения и корректной визуализацией глубины.
Фигура: Прямой эллиптический цилиндр
Реализация:
- Аппроксимация цилиндра выпуклым многогранником с задаваемой точностью.
- Пользователь может менять параметры: радиусы эллипса (
a,b), высоту и детализацию. - Реализовано удаление невидимых поверхностей и простая модель освещения с одним источником света.
- Цвет граней зависит от угла между нормалью и направлением к источнику света.
Результат: Интерактивная 3D-модель цилиндра с фотореалистичной закраской.
Фигура: Прямой эллиптический цилиндр
Реализация:
- Полностью переписана визуализация на OpenGL 2.1 с использованием вершинных буферов.
- Генерация геометрии через параметрические формулы.
- Реализована модель освещения на GLSL (vertex и fragment шейдеры).
- Параметры освещения и материала задаются через диалоговые окна на WinAPI.
- Поддержка вращения, масштабирования и удаления невидимых поверхностей (через
glEnable(GL_DEPTH_TEST)).
Результат: Реалистичная 3D-сцена с настраиваемым освещением и интерактивным управлением.
Фигура: Прямой эллиптический цилиндр
Реализация:
- Добавлен анимационный эффект изменения цвета поверхности во времени.
- Цвет каждой грани вычисляется по формуле:
R = sin(time), G = sin(time + 2π/3), B = sin(time + 4π/3) - Время берётся через
std::chrono, передаётся в шейдер или используется при заданииglColor3d. - Эффект создаёт плавное «перетекание» цветов по поверхности.
Результат: Динамически меняющий цвет цилиндр, демонстрирующий работу с временными шейдерными эффектами.
Тип кривой: Кубический сплайн по двум точкам и касательным векторам
Реализация:
- Использована библиотека GLFW для отрисовки.
- Пользователь может задавать:
- Координаты начальной и конечной точек
- Касательные векторы в этих точках
- (Опционально) параметр натяжения
- Кривая строится по формуле кубического эрмитова сплайна:
P(t) = (2t³ - 3t² + 1)·P₀ + (t³ - 2t² + t)·T₀ + (-2t³ + 3t²)·P₁ + (t³ - t²)·T₁ - Ввод параметров — через диалоговые окна WinAPI.
Результат: Интерактивный редактор кубического сплайна с визуализацией и возможностью изменения формы в реальном времени.
В ходе выполнения курсовой работы по дисциплине «Компьютерная графика» были освоены ключевые концепции:
- Построение 2D-кривых и 3D-моделей
- Работа с проекциями, матрицами преобразований и нормалями
- Реализация каркасной и фотореалистичной визуализации
- Применение OpenGL и GLSL для современной графики
- Создание интерактивных приложений с поддержкой пользовательского ввода
Все лабораторные работы выполнены в соответствии с заданием (вариант №2) и демонстрируют как теоретическое понимание, так и практические навыки в области компьютерной графики.