public void SnapToOriginInPlace(IList <C2DPoint> input) { var minXy = MinMax(input); for (var i = 0; i < input.Count; ++i) { input[i] = new C2DPoint(input[i].X - minXy.Item1, input[i].Y - minXy.Item2); } var poly = new C2DPolygon(input.ToList(), true); poly.RandomPerturb(); var pointsCopy = new C2DPointSet(); poly.GetPointsCopy(pointsCopy); for (var i = 0; i < pointsCopy.Count; ++i) { input[i] = pointsCopy[i]; } }
public List <C2DHoledPolygon> GetIntersectingPolygons(IList <C2DPoint> pointsA, IList <C2DPoint> pointsB, IntersectionType whichPolygons) { var leftPoly = new C2DPolygon(pointsA.ToList(), true); var rightPoly = new C2DPolygon(pointsB.ToList(), true); rightPoly.RandomPerturb(); var someGrid = new CGrid(); var smallPolygons = new List <C2DHoledPolygon>(); switch (whichPolygons) { case IntersectionType.Overlapping: leftPoly.GetOverlaps(rightPoly, smallPolygons, someGrid); break; case IntersectionType.NonOverlapping: leftPoly.GetNonOverlaps(rightPoly, smallPolygons, someGrid); break; default: throw new ArgumentException(nameof(whichPolygons)); } return(smallPolygons); }