2012-10-08 182 views
4

我需要计算多边形的三角形。多边形可以包含孔。并要求一个有效的方法。所以我想我需要约束Delaunay三角剖分。多边形三角形c#

我必须在c#中做到这一点,只需要计算不绘制或其他东西。

poly2tri似乎不错,但IDK它不是为我工作:S

无论如何,我需要帮助。我如何计算三角形? (如果你的最好的报价为poly2tri,我可以解释一下我的问题)

+0

你用poly2tri收到了什么问题? –

+0

当我适应它到我的代码我收到一个空参数问题,但我期待相同的结果。看看js,因为它更清晰(全部在一个文件中)扫描。在CreateAdvancingFront()中分配我们的起始点以指定前置变量。前面的变量有两个节点。头,尾巴。因为你看到头没有prev价值。让我们继续sweep.SweepPoints调用sweep.PointEvent。在开始时你会看到“var node = tcx.LocateNode(point);” SweepContext将调用front.LocateNode,正如你所看到的,search_node是头部。头部X值最大。所以“if(x user1708062

+0

头没有prev,所以null将返回。所以我们会得到错误。 – user1708062

回答

1

我想我的github:gist简单的解决方案(但它是相当古老,可能不是最优的)。

+0

谢谢,我将检查它,如果不能修复poly2tri。顺便说一句我想我发现了一些算法(poly2tri)。我改变了一些代码行似乎现在工作。我会继续我的测试。 Poly2tri算法在js,c,C++,c#和java版本的InitTriangulation()上有错误,也可能有其他错误。我会继续测试我的修理。 – user1708062

2

德劳内不是为此设计的,而是使用Ear Clipping来代替。

+0

德劳内不是为此而设计的。但约束Delaunay为此而设计。顺便说一句耳廓似乎有点慢,在一些多边形它没有得到任何结果。 – user1708062

+0

您还可以通过将2D顶点投影到3D抛物面上,使用QuickHull算法使用Delauney三角剖分。一旦你进行了三角测量,放下其中心点位于多边形轨迹之外或者在你的洞多边形轨迹内的面。这可能比耳廓修剪更快。 – kneo