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)); }
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()); }