public void UnionSquareWithHoleWithOtherSquare() { var expected = new List <List <PointD> > { new List <PointD> { new PointD(0, 0), new PointD(6, 0), new PointD(6, 3), new PointD(9, 3), new PointD(9, 9), new PointD(3, 9), new PointD(3, 6), new PointD(0, 6), }, new List <PointD> { new PointD(2, 2), new PointD(2, 4), new PointD(3, 4), new PointD(3, 3), new PointD(4, 3), new PointD(4, 2), } }; _clipper.Execute(); var actual = _clipper.GetSolution(); AssertPolygonsAreSame(expected, actual); }
public List <Polygon> Union(Polygon a, Polygon b) { var subject = _adapter.GetPaths(a); var clipping = _adapter.GetPaths(b); _clipper.SetSubject(subject); _clipper.SetClipping(clipping); _clipper.Execute(); return(new List <Polygon>() { _adapter.GetPolygon(_clipper.GetSolution()) }); }
public void UnionTwoOtherUnconvexPolygonWithoutHolesWhenSolutionHasHole() { var subject = new List <List <PointD> > { new List <PointD>() { new PointD(0, 3), new PointD(3, 0), new PointD(1, 3), new PointD(3, 6), } }; var clipping = new List <List <PointD> > { new List <PointD>() { new PointD(3, 0), new PointD(6, 3), new PointD(3, 6), new PointD(5, 3), } }; var expected = new List <List <PointD> > { new List <PointD> { new PointD(0, 3), new PointD(3, 0), new PointD(6, 3), new PointD(3, 6), }, new List <PointD> { new PointD(1, 3), new PointD(3, 6), new PointD(5, 3), new PointD(3, 0), } }; _clipper = new Clipper(subject, clipping); _clipper.Execute(); var actual = _clipper.GetSolution(); AssertPolygonsAreSame(expected, actual); }
public void UnionTwoSquares() { var subject = new List <List <PointD> > { new List <PointD> { new PointD(4, 4), new PointD(0, 4), new PointD(0, 0), new PointD(4, 0), } }; var clipping = new List <List <PointD> > { new List <PointD> { new PointD(6, 6), new PointD(2, 6), new PointD(2, 2), new PointD(6, 2), } }; var expected = new List <List <PointD> > { new List <PointD> { new PointD(0, 0), new PointD(4, 0), new PointD(4, 2), new PointD(6, 2), new PointD(6, 6), new PointD(2, 6), new PointD(2, 4), new PointD(0, 4), } }; _clipper = new Clipper(subject, clipping); _clipper.Execute(); var actual = _clipper.GetSolution(); AssertPolygonsAreSame(expected, actual); }
public void UnionSolutionIsSameAfterReplacingSubjectAndClipping() { var subject = new List <List <PointD> > { new List <PointD>() { new PointD(0, 3), new PointD(3, 0), new PointD(1, 3), new PointD(3, 6), } }; var clipping = new List <List <PointD> > { new List <PointD>() { new PointD(3, 0), new PointD(6, 3), new PointD(3, 6), new PointD(5, 3), } }; _clipper = new Clipper(subject, clipping); _clipper.Execute(); var expected = _clipper.GetSolution(); _clipper = new Clipper(clipping, subject); _clipper.Execute(); var actual = _clipper.GetSolution(); AssertPolygonsAreSame(expected, actual); }
public void UnionTwoSquaresWithSquareHoles() { var subject = new List <List <PointD> > { new List <PointD>() { new PointD(9, 9), new PointD(0, 9), new PointD(0, 0), new PointD(9, 0), }, new List <PointD>() { new PointD(1, 1), new PointD(1, 8), new PointD(8, 8), new PointD(8, 1), } }; var clipping = new List <List <PointD> > { new List <PointD>() { new PointD(4, 4), new PointD(14, 4), new PointD(14, 14), new PointD(4, 14), }, new List <PointD>() { new PointD(5, 5), new PointD(5, 13), new PointD(13, 13), new PointD(13, 5), } }; var expected = new List <List <PointD> > { new List <PointD> { new PointD(0, 0), new PointD(9, 0), new PointD(9, 4), new PointD(14, 4), new PointD(14, 14), new PointD(4, 14), new PointD(4, 9), new PointD(0, 9), }, new List <PointD> { new PointD(1, 1), new PointD(1, 8), new PointD(4, 8), new PointD(4, 4), new PointD(8, 4), new PointD(8, 1), }, new List <PointD> { new PointD(5, 5), new PointD(5, 8), new PointD(8, 8), new PointD(8, 5), }, new List <PointD> { new PointD(5, 9), new PointD(5, 13), new PointD(13, 13), new PointD(13, 5), new PointD(9, 5), new PointD(9, 9), }, }; _clipper = new Clipper(subject, clipping); _clipper.Execute(); var actual = _clipper.GetSolution(); AssertPolygonsAreSame(expected, actual); }