Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将轮廓样条线构建的形状转换为简单多边形_C_Opengl_Vector Graphics_Polygons_Splines - Fatal编程技术网

C 将轮廓样条线构建的形状转换为简单多边形

C 将轮廓样条线构建的形状转换为简单多边形,c,opengl,vector-graphics,polygons,splines,C,Opengl,Vector Graphics,Polygons,Splines,我已经从truetype文件中转储了图示符,以便可以使用它们。它们具有由二次贝塞尔曲线和直线组成的形状轮廓。我想为这些形状输出三角形,这样我就可以为用户可视化它们 传统上,我可能会使用libfreetype或扫描光栅化这种轮廓。但我想从字体中生成挤出的三维网格,并用它们进行其他变形 那么,如何对由二次贝塞尔曲线和直线组成的形状进行多边形化呢?有许多轮廓一起形成了这个形状。有些等高线是加法的,有些是减法的。轮廓永远不会打开。它们形成一个环 (实际上,我只从ttf图示符中获取轮廓顶点,这些顶点定义它

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

传统上,我可能会使用libfreetype或扫描光栅化这种轮廓。但我想从字体中生成挤出的三维网格,并用它们进行其他变形

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


(实际上,我只从ttf图示符中获取轮廓顶点,这些顶点定义它们是否是曲线的一部分。尽管很容易将它们分解为贝塞尔曲线和直线,但知道数据以这种方式表示可能有助于将轮廓多边形化为三角形)

这很简单。您需要在曲线上实现布尔运算,然后继续连接曲线对,直到只剩下一条曲线

首先,需要计算曲线并将其转换为多段线

然后,您需要确保在两个轮廓相交的每个位置都有一个顶点(由于数字错误,此部分实际上可以尝试;您可以使用)

最后,您需要做的就是遍历这些曲线,并以正确的顺序连接它们,以执行布尔运算,从而生成

这样的多边形可以使用例如(速度慢,但实现起来相当简单)进行三角剖分


希望这有帮助……

您想将贝塞尔曲线映射到三角形吗?这很难想象,都是近似值。在应用算法之前,我可能会将贝塞尔线段转换为直线,尽管我在这里描述了它,希望有人有一个比我现在工作的更好的算法。