【问题标题】:Failed to find Node for given afront point - Poly2Tri无法找到给定前点的节点 - Poly2Tri
【发布时间】:2014-10-19 16:08:11
【问题描述】:

我想在多边形上切一个洞:

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

外部有以下坐标(双):

-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 创建一个带有前四个点的多边形。

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);

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

如何解决这个异常?

【问题讨论】:

  • 完整的堆栈跟踪和错误消息是什么?

标签: c# triangulation


【解决方案1】:

我不熟悉这个库,但是外面的 4 个点不是按照您指定的逆时针顺序排列的。相反,它们交叉,灰线将点 3 连接回点 0:

尝试按逆时针顺序添加它们。根据 Poly2Tri 的约定,您可能需要按顺时针顺序创建内部循环。

更新

刚刚找到一些文档here:

  1. 输入/输出

逆时针方向的简单多边形外边界顶点。

[剪辑]

这里是顺时针方向的孔的所有顶点;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 2018-06-22
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    相关资源
    最近更新 更多