public void Hull_of_Box3_with_empty_Box3_is_original_Box3()
        {
            var a = new Box3(minCorner: new Vector3(2.72, 3.14, 1.23), dimensions: new Vector3(1.0, 2.0, 3.0));

            var c = Box3.Hull(a, Box3.Empty);

            ExpectAlmostEqualBoxes(a, c, _tolerance);

            c = Box3.Hull(Box3.Empty, a);
            ExpectAlmostEqualBoxes(a, c, _tolerance);
        }
        public void Hull_of_two_Box3_is_correct()
        {
            var a = new Box3(minCorner: new Vector3(2.72, 3.14, 1.23), dimensions: new Vector3(1.0, 2.0, 3.0));
            var b = new Box3(minCorner: new Vector3(3.5, 2.5, 3.21), dimensions: new Vector3(2.0, 1.5, 1.0));

            var c = Box3.Hull(a, b);

            Expect(c.MinCorner.X, Is.EqualTo(2.72).Within(_tolerance));
            Expect(c.MinCorner.Y, Is.EqualTo(2.5).Within(_tolerance));
            Expect(c.MinCorner.Z, Is.EqualTo(1.23).Within(_tolerance));

            Expect(c.MaxCorner.X, Is.EqualTo(5.5).Within(_tolerance));
            Expect(c.MaxCorner.Y, Is.EqualTo(5.14).Within(_tolerance));
            Expect(c.MaxCorner.Z, Is.EqualTo(4.23).Within(_tolerance));
        }
        public void Hull_of_a_sequence_of_Vector2_is_correct()
        {
            var points = new List <Vector3>()
            {
                new Vector3(2.72, 3.14, 1.0),
                new Vector3(3.72, 2.14, 0.1),
                new Vector3(4.72, 1.14, 2.0),
                new Vector3(4.02, 4.14, -1.0)
            };

            var c = Box3.Hull(points);

            Expect(c.MinCorner.X, Is.EqualTo(2.72).Within(_tolerance));
            Expect(c.MinCorner.Y, Is.EqualTo(1.14).Within(_tolerance));
            Expect(c.MinCorner.Z, Is.EqualTo(-1.0).Within(_tolerance));
            Expect(c.MaxCorner.X, Is.EqualTo(4.72).Within(_tolerance));
            Expect(c.MaxCorner.Y, Is.EqualTo(4.14).Within(_tolerance));
            Expect(c.MaxCorner.Z, Is.EqualTo(2.0).Within(_tolerance));
        }