路径笔画算法(转换为三角形/四边形)或其他建议

Path stroke algorithm (convert to triangles/quads) or other suggestions

本文关键字:四边形 其他 三角形 算法 笔画 转换 路径      更新时间:2023-10-16

有人知道一个很好的算法转换矢量路径到一个笔画路径,是由三角形/四边形的面?理想情况下使用圆线连接。

基本上,我想画一条粗的路径,它的颜色是基于一个值,这个值随着路径上的距离而变化。我正在考虑将路径转换为三角形/四边形并通过提供沿着路径的距离作为1d纹理坐标来对其进行纹理映射,然后可以使用它来检索三角形角落的颜色并进行插值。如果有任何其他的建议,如何做到这一点,不会看起来很糟糕,可以反混叠,我将不胜感激。

我正在使用AGG进行渲染,目前,但我可能会使用替代方案,提供它没有太多的依赖关系。我想用于渲染的后端并不重要。虽然AGG可以描边路径,但VertexSource接口不允许除x/y坐标之外的其他顶点信息。此外,当使用正常的conv_stroke时,将我的颜色映射到光栅化器中看起来不可行。

这里有另一个很好的资源,可以帮助您理解描边路径的机制。

对于任何寻找解决方案的人,我发现这很有用:https://keithp.com/keithp/谈判/cairo2003.pdf

因此,您可以有效地将正多边形与直线进行卷积以生成网格。为了输出三角形,需要一个比pdf中概述的稍微复杂的算法,但实际上扩展它并不太难。

您还可以按照AGG::span_gouraud_rgba的行为AGG编写自定义span生成器,但它可以有效地进行纹理映射。