Я хотел бы соединить два многоугольника, которые почти касаются. Проблема в том, что используемая библиотека не позволяет указывать допуск.
Метод, который я пытался использовать, - 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);
Я также пытался преобразовать PolyRegion2D
s до Region
, определяя различные отклонения в методе Regen
, но я получаю тот же результат.
Единственный найденный мной обходной путь - Offset
областей на некоторое количество досоюз, но это кажется подавляющим.