1

我已经从 truetype 文件中转储了字形,以便我可以使用它们。它们具有由二次贝塞尔曲线和线条组成的形状轮廓。我想为这些形状输出三角形,以便为用户可视化它们。

传统上我可能会使用 libfreetype 或 scan-rasterise 这种轮廓。但我想从字体中生成挤压的 3D 网格,并用它们进行其他变形。

那么,如何对由二次贝塞尔曲线和直线组成的形状进行多边形化?有许多轮廓一起形成了形状。一些轮廓是加法的,而另一些是减法的。轮廓永远不会打开。它们形成一个循环。

(实际上,我只从 ttf 字形获得轮廓顶点,这些顶点定义它们是否是曲线的一部分。即使很容易将它们分解为贝塞尔曲线和线条,但知道数据以这种方式表示可能对将轮廓多边形化为三角形)

4

1 回答 1

0

这很简单。您需要对曲线执行布尔运算,然后继续连接成对的曲线,直到只剩下一条曲线。

首先,您需要评估曲线并将它们转换为折线。

然后,您需要确保在两个轮廓相交的每个地方都有一个顶点(由于数字错误,这部分实际上可以尝试;您可以使用Bentley-Ottmann 算法)。

最后,您需要做的就是遍历曲线并以正确的顺序连接它们以执行布尔运算,生成弱简单的多边形

可以使用例如耳朵裁剪算法(这很慢,但实现起来相当简单)对此类多边形进行三角剖分。

希望这可以帮助 ...

于 2012-02-13T11:06:01.527 回答