Esempio n. 1
0
        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];
            }
        }
Esempio n. 2
0
        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);
        }