Computer Graphics
Примеры работы с элементом canvas, обработчиками событий и таймером.
управление анимацией с клавиатуры
Для исходного изображения применить медианный сглаживающий фильтр и сформировать новое изображение на основе фильтрации.
Построить методом Брезенхема отрезок по начальной и конечной точкам, задаваемым с помощью мыши (обработка кликов мыши).
В приведенном примере строятся только отрезки, с наклоном от 0 до 45 градусов. Необходимо иметь возможность строить все возможные отрезки (с углом наклона от 0 до 360 градусов).
Для исходного изображения применить фильтр Собеля для выявления границ и сформировать новое изображение на основе фильтрации.
Выполнить процедуру отсечения отрезков произвольным многоугольником по методу Цируса-Бека.
В приведенном примере показан элемент отсечения отрезка одной стороной многоугольника. Необходимо прорисовать весь многоугольник, для каждой его стороны выполнить проверку на пересечение с данным отрезком и построить результирующий отрезок, лежащий только внутри многоугольника согласно алгоритму Цируса-Бека.
Выполнить заполнение произвольного контура методом заполнения с затравкой. Для каждого пикселя, начиная с затравочного происходит рекурсивная проверка:
- Если пиксель закрашен, то выйти из его обработки.
- Если пиксель не закрашен, то закрасить и последовательно применить рекурсивный алгоритм для его верхнего, левого, нижнего и правого соседей.
В приведенном примере сделан рекурсивный алгоритм. Стековая память в этом случае очень быстро заканчивается. Необходимо заменить рекурсию на цикл.
Выполнить заполнение многоугольника горизонтальными линиями между точками границы (от каждой нечетной по порядку точки до каждой четной). Для выполнения задания нужно перебрать все стороны многоугольника и добавить в массивы, соответствующие y-координате, точки пересечения стороны и горизонтали по y-координате. Для заполненных массивов выполнить сортировку и отрисовать горизонтальные отрезки от каждого четного индекса до каждого нечетного.
В приведенном примере надо добавить проверки и обработку ситуаций, когда стороны многугольника горизонтальны или вертикальны.
3D. Зададть координаты трех точек плоскости, координаты источника света и цвет треугольника (в цветовых координатах RGB). Для плоскости определить нормаль и угол падения луча из источника света до произвольной точки плоскости. заполнить треугольник, определяющий плоскость цветом, определяемым исходным цветом, где каждая из цветовых координат уменьшена в cos(угла падения) раз.
В приведенном примере необходимы проверки из лабораторной работы 7 При желании, можно дополнить работу дополнительно учитывая, что отраженный луч не направлен напрямую к наблюдателю. Т. о., необходимо цвет плоскости уменьшить еще в косинус раз для угла, образованного отраженным (по геометрической оптике) лучом и нормалью к экрану (ось Oz)