0
我想绘制带孔的图形。(已解决)poly2tri - 三角形的IsInterior属性 - 正确配置
要做到这一点,我不得不削减身影三角形和一个吸引他们的。
在这里,我有八个外部三角形和两个室内。我想,我会只取外景,并提请他们像
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 ==真。我做错了什么?
P.S.对于PointSet,这个属性在相同情况下总是为false。
每个三角形都在矩形ABCD内部,所以它们都是内部的。你只需要三角形内部/外部的洞。 – jdweng
@jdweng,如果是这样的话,这是一个问题。我没有洞:他们是私人的。 – homk
进行以下更改:polygon.AddHole(new Polygon(hole)); To:多边形孔=新多边形(孔); polygon.AddHole(空穴); – jdweng