Agn*_*ian 27 graphics geometry direct3d triangulation cgal
我正在寻找一个算法或库(更好)将多边形分解为三角形.我将在Direct3D应用程序中使用这些三角形.什么是最好的选择?
这是我到目前为止所发现的:
我非常感谢有此领域经验的人的一些意见.
编辑:这是一个2D多边形.
Nil*_*nck 17
为了给你更多的图书馆选择:
Polyboolean.我从未尝试过这个,但看起来很有希望:http://www.complex-a5.ru/polyboolean/index.html
General Polygon Clipper.这个在实践中非常有效,并且可以进行三角测量以及修剪和打孔:http://www.cs.man.ac.uk/~toby/alan/software/
我的个人建议:使用GLU(OpenGL实用程序库)中的tesselation.代码坚如磐石,比GPC更快,并且生成的三角形更少.您不需要初始化的OpenGL-Handle或类似的东西来使用lib.
如果您不喜欢在DirectX应用程序中包含OpenGL系统库的想法,那么也有一个解决方案:只需下载SGI OpenGL参考实现代码并从中提升三角形.它只使用OpenGL-Typedef名称和一个充满枚举的手.而已.您可以在一两个小时内提取代码并创建一个独立的库.
一般来说,我的建议是使用一些有用的东西,而不是开始编写自己的三角测量.
如果您已经阅读了关于耳朵剪切或扫描线算法的信息,那么很有可能推出自己的算法,但事实上,计算几何算法很难以一种稳定工作的方式编写,从不会崩溃并始终返回有意义的结果.数值舍入误差最终会累积并杀死你.
我在C中为我合作的公司编写了一个三角测量算法.让核心算法工作需要两天时间.让它与各种退化的输入工作又花了两年时间(我没有全职工作,但相信我 - 我花了更多的时间在它上面而不是我应该拥有的).
我发现poly2tri库正是我需要进行三角测量的.它产生了比我尝试过的其他库(包括libtess)更清晰的网格,并且它也支持漏洞.它已被转换为一堆语言.许可证是New BSD,因此您可以在任何项目中使用它.