无法在给定的前方点找到Node - Poly2Tri

时间:2014-10-19 07:05:09

标签: c# triangulation

我想在多边形中剪一个洞:

|-----------------------|
|                       |
|      |------|         |
|      |      |         |
|      |------|         |
|                       |
|-----------------------|       

外部有以下坐标(双):

-0,76 ; -1,5
1,86  ; -1,5
-0,76 ; 1,5
1,86  ; 1,5

内部坐标(双重)是:

0,65 ; -0,66
1,57 ; -0,66
0,65 ; 0,75
1,57 ; 0,75

我想用这个Poly2Tri创建一个前四个点的Polygon。

PolygonPoint[] pts = new PolygonPoint[shape.Length];
for (int i = 0; i < shape.Length; i++)
{
  pts[i] = new PolygonPoint((shape[i].X), (shape[i].Y));
  points.Add(shape[i]);
}
Polygon p = new Polygon(pts);

之后我在第二个四点添加了一个洞。

p.AddHole(new Polygon(ptsO));

现在我致电:

P2T.Triangulate(p);

我得到以下异常:找不到给定的前方点

的节点

如何修复此异常?

1 个答案:

答案 0 :(得分:2)

我不熟悉这个库,但外部的4个点并不是你指定的逆时针顺序。相反,它们交叉,灰线将point3连接回point0:

enter image description here

请尝试以逆时针顺序添加它们。您可能需要按顺时针顺序创建内部循环,具体取决于Poly2Tri的约定。

<强>更新

刚刚找到了一些文档here

enter image description here

  
      
  1. 输入/输出
  2.         

    以逆时针方向定向的简单多边形外部顶点。

         

    [snip]

         

    以下是沿顺时针方向定向的孔的所有顶点;