Skip to content

Repository files navigation

Работа по дисциплине «Компьютерная графика»

Студент: Меркулов Фёдор Алексеевич
Группа: М8О-307Б-21 # Курсовая работа по дисциплине «Компьютерная графика»
Студент: Меркулов Фёдор Алексеевич
Группа: М8О-307Б-21
Преподаватель: Филиппов Г.Б.
Московский авиационный институт (НИУ)
2023 г.


Общее описание

В рамках курса «Компьютерная графика» мной были выполнены 7 лабораторных работ, охватывающих ключевые аспекты 2D/3D-визуализации, геометрического моделирования, работы с OpenGL, шейдерного программирования и интерактивного управления графическими объектами.

Проекты реализованы с использованием различных технологий: OpenGL, GLFW, FreeGLUT, Qt, WinAPI, а также GLSL для шейдерных эффектов. Все работы выполнены по индивидуальному заданию (вариант №2).


Содержание лабораторных работ

Фигура: Лемниската Бернулли
Уравнение: $(x^2 + y^2)^2 = a^2(x^2 - y^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) и демонстрируют как теоретическое понимание, так и практические навыки в области компьютерной графики.


About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages