Построение графика функции.
Задаются: диапазон значений, функция, необходимо построить график с возможностью масштабирования при изменении размера окна вывода – в максимальных и минимальных точках график приближается к верхней и нижней границам графического окна. Обязательный тест – sin(x) и x^2. Необходимо предусмотреть выбор функций из некоторого списка. В функцию построения графика функцию передавать как параметр. Не использовать стандартные функции построения графиков. Язык программирования - любой (python).
Цветовые пространства. Преобразование цветовых пространств.
- Преобразовать изображение из RGB в оттенки серого. Реализовать два варианта формулы с учетом разных вкладов R, G и B в интенсивность (см презентацию). Затем найти разность полученных полутоновых изображений. Построить гистограммы интенсивности после одного и второго преобразования.
- Выделить из полноцветного изображения каждый из каналов R, G, B и вывести результат. Построить гистограмму по цветам (3 штуки).
- Преобразовать изображение из RGB в HSV. Добавить возможность изменять значения оттенка, насыщенности и яркости. Результат сохранять в файл, предварительно преобразовав обратно.
Растровые алгоритмы
Задание 1. Заливка и выделение границы.
- 1а. Рекурсивный алгоритм заливки на основе серий пикселов (линий) заданным цветом.
- 1б. Рекурсивный алгоритм заливки на основе серий пикселов (линий) рисунком из графического файла. Рассмотреть случаи когда файл небольшого размера и заливается циклически и когда большой. Область произвольной формы.
- 1в. Выделение границы связной области. На вход подается изображение. Граница связной области задается одним цветом. Имея начальную точку границы организовать ее обход, занося точки в список в порядке обхода. Для контроля полученную границу прорисовать поверх исходного изображения.
! Третье изображение - немного добавил своего - цвет проходит не только, когда равен выбранному, но и когда декартово расстояние между цветами не больше определённого значения. !
Задание 2. Реализовать рисование отрезка: целочисленным алгоритмом Брезенхема и алгоритмом ВУ
Задание 3. Выполнить градиентное окрашивание произвольного треугольника, у которого все три вершины разного цвета, используя алгоритм растеризации треугольника.
Аффинные преобразования на плоскости и вспомогательные алгоритмы
- Создание полигонов через клики мышью. Точка и ребро считаются полигонами с одной и двумя вершинами соответственно.
- Очистка сцены (удаление всех полигонов).
- Применение аффинных преобразований к полигону (Все преобразования должны быть реализованы матрицами!):
- Смещение на dx, dy
- Поворот вокруг заданной пользователем точки
- Поворот вокруг своего центра
- Масштабирование относительно заданной пользователем точки
- Масштабирование относительно своего центра
- Поиск точки пересечения двух ребер (добавление второго ребра мышкой, динамически).
- Проверка принадлежит ли заданная пользователем (с помощью мыши) точка выпуклому и невыпуклому полигонам
- Классифицировать положение точки относительно ребра (справа или слева)
L-системы. Алгоритм midpoint displacement. Кривые Безье.
- Реализовать программу для построения фрактальных узоров посредством L-систем.
- Создать фрактальное дерево с изменением толщины от основания к ветвям, изменением цвета от коричневого к зеленому и случайным изменениям угла у ветвей.
- Алгоритм midpoint displacement
- Кубические сплайны Безье
В программе должны присутствовать следующие классы: точка, многоугольник (грань), многогранник.
-
Программа должна содержать следующие возможности:
-
Отображение одного из правильных многогранников: тетраэдр, гексаэдр, октаэдр, икосаэдр*, додекаэдр*.
-
Применение аффинных преобразований: смещение, поворот, масштаб, с указанием параметров преобразования. Преобразования должны быть реализованы матрицами!
-
Отражение относительно выбранной координатной плоскости.
-
Масштабирование многогранника относительно своего центра.
-
Вращение многогранника вокруг прямой проходящей через центр многогранника, параллельно выбранной координатной оси.
-
Поворот вокруг произвольной (заданной координатами двух точек) прямой на заданный угол.
-
Предусмотреть возможность переключения между проекциями :
- перспективной;
- аксонометрической Все преобразования должны быть реализованы матрицами
- Добавить возможность сохранения моделей
- Отображение поверхности заданной функцией
- Фигура вращения (она есть, честно)
- Отсечение нелицевых граней
- Алгоритм Z-буфера
- Камера
Построение различных 2D фигур. Плоское и градиентное закрашивание. Uniform и Atribute
Атрибуты, юниформы и трёхмерные объекты в OpenGL. Наложение текстур
Для запуска: python -m http.server
- в папке с лабой, http://localhost:8000/index.html
- в браузере.
-
Градиентный тетраэдр, который можно двигать вдоль осей кнопками клавиатуры. Он должен быть повёрнут так, чтобы было видно, что это тетраэдр.
-
Кубик с наложенной на него текстурой. Текстура должна быть смешана с цветами, пропорция регулируется кнопками клавиатуры.
-
Кубик с двумя смешанными текстурами. Пропорция должна регулироваться кнопками клавиатуры.
-
Градиентный круг (окружность проходит Hue из HSV, центр белый), который можно масштабировать по осям (каждую ось своей кнопкой).
Загрузка файлов, множественные объекты, Солнечная система, webgl
Для запуска: python -m http.server
- в папке с лабой, http://localhost:8000/lab13.html
- в браузере.
Построение выпуклой оболочки методом Эндрю (Andrew)
Лабы/индивы | В процессе | Сделано | Сдано |
---|---|---|---|
Лабораторная 1 | + | + | + |
Лабораторная 2 | + | + | + |
Лабораторная 3 | + | + | + |
Лабораторная 4 | + | + | + |
Лабораторная 5 | + | + | + |
Лабораторная 6 | + | + | + |
Лабораторная 7 | + | + | + |
Лабораторная 8 | + | + | + |
Лабораторная 9 | + | ||
Лабораторная 10 | + | + | + |
Лабораторная 11 | + | + | + |
Лабораторная 12 | + | + | |
Лабораторная 13 | + | + | |
Лабораторная 14 | |||
Индивидуальное 1 | + | + | + |
Индивидуальное 2 | + | ||
Индивидуальное 3 |