public void MinkowskiDifference_of_two_boxes_amounts_to_subtracting_minima_and_maxima()
        {
            var box1 = new Box2(new Interval(0.123, 0.456), new Interval(2.718, 3.141));
            var box2 = new Box2(new Interval(0.0777, 0.0888), new Interval(-0.1, +0.1));

            var expectedAnswer = Box2.Hull(box1.MinCorner - box2.MaxCorner, box1.MaxCorner - box2.MinCorner);
            var actualAnswer   = PolygonUtils.MinkowskiDifference(box1, box2);

            ExpectPolygonsAreEqualWithinTolerance(actualAnswer, expectedAnswer, _tolerance);
        }
        public void MinkowskiDifference_is_distributive_with_Union()
        {
            var box1 = new Box2(new Interval(0.123, 0.456), new Interval(2.718, 3.141));
            var box2 = new Box2(new Interval(0.777, 0.888), new Interval(-1, +1));
            var box3 = new Box2(new Interval(1.519, 1.784), new Interval(-0.256, +0.324));

            var diff1 = PolygonUtils.MinkowskiDifference(box1, PolygonUtils.Union(box2, box3));
            var diff2 = PolygonUtils.Union(PolygonUtils.MinkowskiDifference(box1, box2), PolygonUtils.MinkowskiDifference(box1, box3));

            ExpectPolygonsAreEqualWithinTolerance(diff1, diff2, _tolerance);
        }