Алгоритм обводки пути (преобразование в треугольники / квадраты) или другие предложения - PullRequest
7 голосов
/ 11 августа 2011

Кто-нибудь знает хороший алгоритм для преобразования векторного пути в штриховой путь, который состоит из граней треугольника / квадрата? Идеально с круглыми линиями.

В основном я пытаюсь нарисовать толстый путь, цвет которого основан на значении, которое зависит от расстояния вдоль пути. Я думаю, что преобразование пути в треугольники / квадраты и сопоставление текстуры с помощью предоставления расстояния вдоль пути в виде 1d координаты текстуры, которая затем может быть использована для получения цветов в углах треугольников и интерполяции. Будем весьма благодарны за любые другие предложения о том, как это сделать, которые не будут выглядеть ужасно и могут быть сглажены.

В настоящее время я использую AGG для рендеринга, но, возможно, я мог бы использовать альтернативу, если у нее не слишком много зависимостей. Я думаю, что серверная часть, используемая для рендеринга, не имеет большого значения. В то время как AGG может обводить пути, интерфейс VertexSource не позволяет получать дополнительную информацию о вершине, кроме координат x / y. Кроме того, добавление моего цветового отображения в растеризатор не представляется возможным при использовании обычного conv_stroke.

Ответы [ 2 ]

3 голосов
/ 16 августа 2011

Для тех, кто ищет решение этой проблемы, я нашел это полезным: https://keithp.com/~keithp/talks/cairo2003.pdf

Таким образом, вы можете эффективно свертывать правильный многоугольник с линией для генерации меша. Для вывода треугольников требуется немного более сложный алгоритм, чем изложенный в pdf, но на самом деле его не так уж сложно расширить.

Вы также можете написать собственный генератор диапазонов для AGG по линиям agg :: span_gouraud_rgba, но вместо этого он будет эффективно отображать текстуры.

2 голосов
/ 26 февраля 2015

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

...