Geometry 给定一个不规则多边形';s顶点列表,如何创建内部三角形以高效地构建平面3D网格?
我使用的是Unity,但解决方案应该是通用的。 我将从鼠标单击中获得用户输入,鼠标单击定义了闭合不规则多边形的顶点列表。 顶点将定义平面三维网格的外边缘 要按程序生成Unity中的网格,我必须指定所有顶点以及它们如何连接以形成三角形 所以,对于凸多边形来说,这很简单,我只需要制作顶点为1,2,3,然后是1,3,4的三角形,形成类似孔雀尾巴的形状 但对于凹多边形来说,这并不是那么简单。Geometry 给定一个不规则多边形';s顶点列表,如何创建内部三角形以高效地构建平面3D网格?,geometry,unity3d,computational-geometry,polygons,Geometry,Unity3d,Computational Geometry,Polygons,我使用的是Unity,但解决方案应该是通用的。 我将从鼠标单击中获得用户输入,鼠标单击定义了闭合不规则多边形的顶点列表。 顶点将定义平面三维网格的外边缘 要按程序生成Unity中的网格,我必须指定所有顶点以及它们如何连接以形成三角形 所以,对于凸多边形来说,这很简单,我只需要制作顶点为1,2,3,然后是1,3,4的三角形,形成类似孔雀尾巴的形状 但对于凹多边形来说,这并不是那么简单。 是否有一种有效的算法来查找内部三角形?您可以使用一个受约束的(实现起来并不简单!)。和中提供了良好的库实现,提供
是否有一种有效的算法来查找内部三角形?您可以使用一个受约束的(实现起来并不简单!)。和中提供了良好的库实现,提供了高效的
O(n*log(n))
实现
如果顶点集很小,也可以使用该算法,尽管它不一定会给出Delaunay三角剖分(通常会生成次优三角形),并在O(n^2)
中运行。不过,自己实现是相当容易的
由于输入顶点存在于三维空间中的平面上,因此可以通过投影到平面上,计算二维中的三角剖分,然后将相同的网格拓扑应用于三维顶点集来获得二维问题 有一个多边形社区脚本,但我个人没有使用过。它既适用于三维点,也适用于二维点
如果我想将问题限制在2D,我过去使用过的一个技巧是找到3D数据中变化最大的两个轴,并将它们设置为“X”和“Y” 我已经实现了如下的耳朵剪辑算法: