Как отображаются заполненные пути?
Какие стандартные алгоритмы используются в векторной графике для рендеринга заполненных путей?
Меня интересует не только процесс рендеринга штрихов, я также хотел бы знать, как фигуры заполняются - как определяется, находится ли заданная точка внутри или вне траектории (я верю, даже указывая правила того, что внутри и снаружи). значит не простая вещь).
1 ответ
найти контур (периметр в виде многоугольника)
это я думаю у тебя уже есть
триангуляция (или разрезание на выпуклые многоугольники)
Есть много подходов, таких как:
- клип ухо
- Делоне
заполнить выпуклые треугольники / многоугольники
это легко либо использовать
- GFX lib, как OpenGL,DirectX,...
- API, как GDI
- Растеризация самостоятельно, как в том, как растеризовать выпуклые полигоны
стиль
Этот материал сложнее, чем кажется на первый взгляд. За:
ширина контура
pen,stroke
преобразовать контур в многоугольник, сдвинув его наружу или внутрь.
стиль контура
pen,stroke
full, dash dot, dot dot,... для получения дополнительной информации см. это
стиль заполнения
brush
как штриховка, которая сложнее всего из всех. Он включает в себя тяжелую полигонную настройку, похожую, но гораздо более сложную, чем ширина контура. Некоторые стили проще, некоторые чрезвычайно сложны, например, для простого эквидистантного заполнения строки
loop + intersection + inside polygon test will
делать. Для проверки полигона внутри вы можете использовать тест на попадание