我想在多边形中剪一个洞:
|-----------------------|
| |
| |------| |
| | | |
| |------| |
| |
|-----------------------|
外部有以下坐标(双):
-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);
我得到以下异常:找不到给定的前方点
的节点如何修复此异常?
答案 0 :(得分:2)
我不熟悉这个库,但外部的4个点并不是你指定的逆时针顺序。相反,它们交叉,灰线将point3连接回point0:
请尝试以逆时针顺序添加它们。您可能需要按顺时针顺序创建内部循环,具体取决于Poly2Tri的约定。
<强>更新强>
刚刚找到了一些文档here:
- 输入/输出
醇>以逆时针方向定向的简单多边形外部顶点。
[snip]
以下是沿顺时针方向定向的孔的所有顶点;