poly2tri - 三角形的IsInterior属性 - 正确配置

时间:2016-09-26 14:20:03

标签: c# triangulation

我想用洞绘画。

result I wanna

要做到这一点,我必须将图形切割成三角形并逐一绘制。

triangulated picture

这里我有八个外部三角形和两个内部。我想,我只会带外景并画出像

一样
const int y = 100;
const int x = 100;
const int offset = 20;

IList<PolygonPoint> bounds = new List<PolygonPoint>
{
    new PolygonPoint(0,0),
    new PolygonPoint(0, y),
    new PolygonPoint(x, y),
    new PolygonPoint(x, 0),
};

IList<PolygonPoint> hole = new List<PolygonPoint>
{
    new PolygonPoint(offset, offset),
    new PolygonPoint(x - offset, offset),
    new PolygonPoint(offset, y - offset),
    new PolygonPoint(x - offset, y - offset),
};

Polygon polygon = new Polygon(bounds); // here polygon contains four dots
polygon.AddHole(new Polygon(hole)); // and here - eight

P2T.Triangulate(polygon); // here I get ten triangles

foreach (var triangle in polygon.Triangles.Where(tr => tr.IsInterior)) // <-- problem
{
    // draw
}

但多边形中的每个三角形都有IsInterior == true。我做错了什么?

P.S。对于PointSet,在同一情况下,此属性始终为false。

1 个答案:

答案 0 :(得分:2)

该死的,这更容易,我想。

我的点订单错了。

必须是

IList<PolygonPoint> hole = new List<PolygonPoint>
{
    new PolygonPoint(offset, offset),
    new PolygonPoint(offset, y - offset),
    new PolygonPoint(x - offset, y - offset),
    new PolygonPoint(x - offset, offset),
};

除了这部分之外的所有部分都很好,结果如下:

correct triangles

感谢一切都在这里!