Skip to content

AndrewKorzh/Computer-Graphics-Labs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Computer-Graphics-Labs

Лабораторная 1

Построение графика функции.

Задаются: диапазон значений, функция, необходимо построить график с возможностью масштабирования при изменении размера окна вывода – в максимальных и минимальных точках график приближается к верхней и нижней границам графического окна. Обязательный тест – sin(x) и x^2. Необходимо предусмотреть выбор функций из некоторого списка. В функцию построения графика функцию передавать как параметр. Не использовать стандартные функции построения графиков. Язык программирования - любой (python).

Лабораторная 1

Лабораторная 2

Цветовые пространства. Преобразование цветовых пространств.

Лабораторная 2 - главное меню
  1. Преобразовать изображение из RGB в оттенки серого. Реализовать два варианта формулы с учетом разных вкладов R, G и B в интенсивность (см презентацию). Затем найти разность полученных полутоновых изображений. Построить гистограммы интенсивности после одного и второго преобразования.

Лабораторная 2 - задание 1

  1. Выделить из полноцветного изображения каждый из каналов R, G, B и вывести результат. Построить гистограмму по цветам (3 штуки).

Лабораторная 2 - задание 2

  1. Преобразовать изображение из RGB в HSV. Добавить возможность изменять значения оттенка, насыщенности и яркости. Результат сохранять в файл, предварительно преобразовав обратно.
Лабораторная 2 - задание 3

Лабораторная 3

Растровые алгоритмы

Задание 1. Заливка и выделение границы.

  • 1а. Рекурсивный алгоритм заливки на основе серий пикселов (линий) заданным цветом.
Лабораторная 3 - задание 1a
  • 1б. Рекурсивный алгоритм заливки на основе серий пикселов (линий) рисунком из графического файла. Рассмотреть случаи когда файл небольшого размера и заливается циклически и когда большой. Область произвольной формы.
Лабораторная 3 - задание 1b
  • 1в. Выделение границы связной области. На вход подается изображение. Граница связной области задается одним цветом. Имея начальную точку границы организовать ее обход, занося точки в список в порядке обхода. Для контроля полученную границу прорисовать поверх исходного изображения.

Лабораторная 3 - задание 1c

! Третье изображение - немного добавил своего - цвет проходит не только, когда равен выбранному, но и когда декартово расстояние между цветами не больше определённого значения. !

Задание 2. Реализовать рисование отрезка: целочисленным алгоритмом Брезенхема и алгоритмом ВУ

Лабораторная 3 - задание 2

Задание 3. Выполнить градиентное окрашивание произвольного треугольника, у которого все три вершины разного цвета, используя алгоритм растеризации треугольника.

Лабораторная 3 - задание 3

Лабораторная 4

Аффинные преобразования на плоскости и вспомогательные алгоритмы

  • Создание полигонов через клики мышью. Точка и ребро считаются полигонами с одной и двумя вершинами соответственно.
  • Очистка сцены (удаление всех полигонов).
  • Применение аффинных преобразований к полигону (Все преобразования должны быть реализованы матрицами!):
    • Смещение на dx, dy
    • Поворот вокруг заданной пользователем точки
    • Поворот вокруг своего центра
    • Масштабирование относительно заданной пользователем точки
    • Масштабирование относительно своего центра
  • Поиск точки пересечения двух ребер (добавление второго ребра мышкой, динамически).
  • Проверка принадлежит ли заданная пользователем (с помощью мыши) точка выпуклому и невыпуклому полигонам
  • Классифицировать положение точки относительно ребра (справа или слева)

Лабораторная 4

Лабораторная 5

L-системы. Алгоритм midpoint displacement. Кривые Безье.

  • Реализовать программу для построения фрактальных узоров посредством L-систем.
  • Создать фрактальное дерево с изменением толщины от основания к ветвям, изменением цвета от коричневого к зеленому и случайным изменениям угла у ветвей.

Лабораторная 5 - задание 1

  • Алгоритм midpoint displacement

Лабораторная 5 - задание 2

  • Кубические сплайны Безье

Лабораторная 5 - задание 3

Лабораторная 6

В программе должны присутствовать следующие классы: точка, многоугольник (грань), многогранник.

  • Программа должна содержать следующие возможности:

  • Отображение одного из правильных многогранников: тетраэдр, гексаэдр, октаэдр, икосаэдр*, додекаэдр*.

  • Применение аффинных преобразований: смещение, поворот, масштаб, с указанием параметров преобразования. Преобразования должны быть реализованы матрицами!

  • Отражение относительно выбранной координатной плоскости.

  • Масштабирование многогранника относительно своего центра.

  • Вращение многогранника вокруг прямой проходящей через центр многогранника, параллельно выбранной координатной оси.

  • Поворот вокруг произвольной (заданной координатами двух точек) прямой на заданный угол.

  • Предусмотреть возможность переключения между проекциями :

    • перспективной;
    • аксонометрической Все преобразования должны быть реализованы матрицами

Лабораторная 6

Лабораторная 7

  • Добавить возможность сохранения моделей
  • Отображение поверхности заданной функцией
  • Фигура вращения (она есть, честно)

Лабораторная 7

Лабораторная 8

  • Отсечение нелицевых граней
  • Алгоритм Z-буфера
  • Камера

Лабораторная 8

Лабораторная 10

Зелёный треугольник webgl Лабораторная 10

Лабораторная 11

Построение различных 2D фигур. Плоское и градиентное закрашивание. Uniform и Atribute Лабораторная 11

Лабораторная 12

Атрибуты, юниформы и трёхмерные объекты в OpenGL. Наложение текстур

Для запуска: python -m http.server - в папке с лабой, http://localhost:8000/index.html - в браузере.

  1. Градиентный тетраэдр, который можно двигать вдоль осей кнопками клавиатуры. Он должен быть повёрнут так, чтобы было видно, что это тетраэдр. Лабораторная 12 - задание 1

  2. Кубик с наложенной на него текстурой. Текстура должна быть смешана с цветами, пропорция регулируется кнопками клавиатуры.
    Лабораторная 12 - задание 2

  3. Кубик с двумя смешанными текстурами. Пропорция должна регулироваться кнопками клавиатуры. Лабораторная 12 - задание 3

  4. Градиентный круг (окружность проходит Hue из HSV, центр белый), который можно масштабировать по осям (каждую ось своей кнопкой). Лабораторная 12 - задание 4

Лабораторная 13

Загрузка файлов, множественные объекты, Солнечная система, webgl

Для запуска: python -m http.server - в папке с лабой, http://localhost:8000/lab13.html - в браузере. Лабораторная 13

Индивидуальное задание 1

Построение выпуклой оболочки методом Эндрю (Andrew)

Индивидуальное задание 1

Лабы/индивы В процессе Сделано Сдано
Лабораторная 1 + + +
Лабораторная 2 + + +
Лабораторная 3 + + +
Лабораторная 4 + + +
Лабораторная 5 + + +
Лабораторная 6 + + +
Лабораторная 7 + + +
Лабораторная 8 + + +
Лабораторная 9 +
Лабораторная 10 + + +
Лабораторная 11 + + +
Лабораторная 12 + +
Лабораторная 13 + +
Лабораторная 14
Индивидуальное 1 + + +
Индивидуальное 2 +
Индивидуальное 3