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

时间:2011-08-11 11:27:31

标签: c++ geometry pathgeometry

有没有人知道将矢量路径转换为由三角形/四边形面组成的描边路径的好算法?理想情况下使用圆形连接。

基本上我正在尝试绘制一条粗路径,其颜色基于一个随路径距离变化的值。我想通过将路径上的距离作为1d纹理坐标进行转换,将路径转换为三角形/四边形并对其进行纹理映射,然后可以使用该坐标检索三角形角落处的颜色并进行插值。 关于如何做到这一点看起来不那么糟糕且可以抗锯齿的任何其他建议将不胜感激。

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

2 个答案:

答案 0 :(得分:3)

对于寻找解决方案的人来说,我觉得这很有用: https://keithp.com/~keithp/talks/cairo2003.pdf

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

您还可以沿着agg :: span_gouraud_rgba的行编写AGG的自定义跨度生成器,但有效地执行纹理映射。

答案 1 :(得分:2)

这是另一个伟大的resource,用于理解抚摸路径的机制。