1

我想加入两个几乎相切的多边形。问题是我使用的库不允许指定容差。

我尝试使用的方法是PolyRegion2D.Union. 我想获得的结果应该是一个PolyRegion2D,而不是执行联合。

这是我尝试过的:

Polygon2D pa = new Polygon2D(new Point2D[] {
    new Point2D(1.15938971595503,-0.199967078272286),
    new Point2D(1.52634922341708,-0.420128484528485),
    new Point2D(1.70641430562392,-0.120000722926738),
    new Point2D(1.17299051700752,0.200032892324767),
    new Point2D(0.561190378505281,0.200032892324767),
    new Point2D(0.561190378505281,-0.199967078272286),
    new Point2D(1.15938971595503,-0.199967078272286)
});
PolyRegion2D a = new PolyRegion2D(new Polygon2D[] { pa });

Polygon2D pb = new Polygon2D(new Point2D[] {
    new Point2D(2.15660570919657,-0.39009846249557),
    new Point2D(1.70641430562392,-0.120000887257862),
    new Point2D(1.52634925853194,-0.420128484528485),
    new Point2D(1.97654066210459,-0.690226059766193),
    new Point2D(2.15660570919657,-0.39009846249557)
});
PolyRegion2D b = new PolyRegion2D(new Polygon2D[] { pb });

PolyRegion2D[] ab = PolyRegion2D.Union(a, b);

Assert.AreEqual(1, ab.Length);

我还尝试将PolyRegion2Ds 转换为Region,指定方法的各种偏差Regen,但我得到了相同的结果。

我发现的唯一解决方法是Offset在工会之前对这些地区进行一定程度的调整,但这似乎势不可挡。

4

1 回答 1

2

如果我没记错的话,你对 Regen 的推导应该只影响曲线,所以它不应该影响你的情况,因为你使用了尖锐的线条。

偏移是几何联合的方式。

数学就是这样运作的。投影向量,检查交叉点不是魔术。如果没有偏移,您将不得不发明一种方法来执行您想要的几何联合。

于 2019-10-23T12:23:43.493 回答