Горизонтальные и вертикальные линии не нуждаются в сглаживании(рисуем их отдельно). Для остальных линий выбираем основную ось и идём вдоль неё, подбирая координаты по оставшейся(неосновной) оси. На каждой итерации устанавливаем две точки - рассчитываем величину ошибки и видим, как сильно ушли пиксели от идеальной линии по неосновной оси, на основе этих данных распределяем интенсивность между выбранными точками.
Программа рисующая Обнаженное обдуваемое ветром дерево Пифагора, написанная на Pascal с использованием модуля GraphABC.
Фрактал строится многократным вписыванием в окружность других окружностей меньшего радиуса.
Задача: Определить, принадлежит ли точка выпуклому многоугольнику.
Алгоритм: Выберем произвольную точку ( кликом мышки ).
Используя векторное произведение, проверим по очереди в порядке обхода сторон по часовой стрелке, лежит ли точка слева от очередного вектора - стороны многоугольника
( откладываем вектора: от i-й вершины к i-1-й вершине, и от i-й вершины к выбранной точке).
Если векторное произведение неотрицательно, значит точка лежит слева от стороны многоугольника, либо на стороне. Если это выполняется для каждой из сторон, то точка лежит внутри многоугольника.
Задача: Построить окружность, используя алгоритм Брезенхема.
Алгоритм: Строим четверть окружности, и достраиваем остальные симметрично. На каждой итерации цикла выбираем одну из трёх возможных точек(сравниваем расстояние от центра до выбранной точки с радиусом окружности).
Программа демонстрирующая интерполяцию полиномом Ньютона
Программа рисующая фрактал-биоморф "Радиолярия", написанная на C# с использованием стандартной графической библиотеки
Программа рисующая Фрактал Паук, написанная на C# с использованием стандартной графической библиотеки
Задача: Нарисовать кривую Леви.
Алгоритм: Метод drawLevy принимает координаты начального отрезка и количество итераций n. Затем высчитываются точки излома и для них вызывается drawLevy с декрементом n и т.д.(пока n != 0). Если n == 0, то рисуется линия по текущими координатам (x1, y1, x2, y2).
Перед нами стоит следующая задача:
Создать класс многоугольника и обеспечить его методом проверки попадания точки в этот многоугольник.
Программа рисует один многоугольник и реагирует на щелчок мыши. Если щелчок был произведен по многоугольнику, меняем его цвет.