private static IPolygon ConvertToFloatingPoint(ClipperPolygon p, Box2 range)
        {
            var answer = new PolygonBuilder();

            foreach (var clipContour in p)
            {
                var contour = clipContour.Select(v => ConvertToFloatingPoint(v, range)).ToList();
                answer.AddContour(contour);
            }

            return(answer.ExtractPolygon());
        }
        public void Area_is_correct_for_a_Polygon_with_axis_aligned_square_contours()
        {
            var corner1 = new Vector2(0.1, 0.2);
            var side1   = 4.5;

            var corner2 = new Vector2(0.9, 0.8);
            var side2   = 2.3;

            var corner3 = new Vector2(-5.1, -8.2);
            var side3   = 3.14;

            var builder = new PolygonBuilder();

            builder.AddContour(Square(corner1, side1, positive: true));
            builder.AddContour(Square(corner2, side2, positive: false));
            builder.AddContour(Square(corner3, side3, positive: true));

            var area = BasicMath.Sqr(side1) - BasicMath.Sqr(side2) + BasicMath.Sqr(side3);

            Expect(builder.ExtractPolygon().Area(), Is.EqualTo(area).Within(_tolerance));
        }
Exemple #3
0
 internal Polygon(PolygonBuilder builder) : this(builder.Contours)
 {
 }