コード例 #1
0
        public void CheckingIfBoxContainsAPoint(double px, double py, double pz, bool result)
        {
            var point = pt.Point(px, py, pz);
            var box   = new shape.BoundingBox(pt.Point(5, -2, 0), pt.Point(11, 4, 7));

            Assert.Equal(result, box.ContainsPoint(point));
        }
コード例 #2
0
        public void IntersectingRayWithNonCubicBoundingBox(double px, double py, double pz, double vx, double vy, double vz, bool result)
        {
            var origin    = pt.Point(px, py, pz);
            var direction = pt.Vector(vx, vy, vz).Normalize();
            var box       = new shape.BoundingBox(pt.Point(5, -2, 0), pt.Vector(11, 4, 7));
            var r         = new Ray(origin, direction);

            Assert.Equal(result, box.Intersects(r));
        }
コード例 #3
0
        public void CreatingBoundingBoxVolume()
        {
            var min = pt.Point(-1, -2, -3);
            var max = pt.Point(3, 2, 1);
            var box = new shape.BoundingBox(min, max);

            Assert.Equal(min, box.Minimum);
            Assert.Equal(max, box.Maximum);
        }
コード例 #4
0
        public void TransformingBoudingBox()
        {
            var box    = new shape.BoundingBox(pt.Point(-1, -1, -1), pt.Point(1, 1, 1));
            var matrix = transform.RotationX(Math.PI / 4) * transform.RotationY(Math.PI / 4);
            var box2   = box.Transform(matrix);

            CustomAssert.Equal(pt.Point(-1.4142, -1.7071, -1.7071), box2.Minimum, 4);
            CustomAssert.Equal(pt.Point(1.4142, 1.7071, 1.7071), box2.Maximum, 4);
        }
コード例 #5
0
        public void CheckingIfBoxContainsBox(double minx, double miny, double minz, double maxx, double maxy, double maxz, bool result)
        {
            var min  = pt.Point(minx, miny, minz);
            var max  = pt.Point(maxx, maxy, maxz);
            var box  = new shape.BoundingBox(pt.Point(5, -2, 0), pt.Point(11, 4, 7));
            var box2 = new shape.BoundingBox(min, max);

            Assert.Equal(result, box.ContainsBox(box2));
        }
コード例 #6
0
        public void CreatingEmptyBoundingBox()
        {
            var box = new shape.BoundingBox();
            var min = pt.Point(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity);
            var max = pt.Point(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity);

            Assert.Equal(min, box.Minimum);
            Assert.Equal(max, box.Maximum);
        }
コード例 #7
0
        public void AddingBoxToAnother()
        {
            var box1 = new shape.BoundingBox(pt.Point(-5, -2, 0), pt.Point(7, 4, 4));
            var box2 = new shape.BoundingBox(pt.Point(8, -7, -2), pt.Point(14, 2, 8));

            box1.Add(box2);
            Assert.Equal(pt.Point(-5, -7, -2), box1.Minimum);
            Assert.Equal(pt.Point(14, 4, 8), box1.Maximum);
        }
コード例 #8
0
        public void SplittingZWideBox()
        {
            var box = new shape.BoundingBox(pt.Point(-1, -2, -3), pt.Point(5, 3, 7));

            (var left, var right) = box.Split();
            Assert.Equal(pt.Point(-1, -2, -3), left.Minimum);
            Assert.Equal(pt.Point(5, 3, 2), left.Maximum);
            Assert.Equal(pt.Point(-1, -2, 2), right.Minimum);
            Assert.Equal(pt.Point(5, 3, 7), right.Maximum);
        }
コード例 #9
0
        public void SplittingAPerfectCube()
        {
            var box = new shape.BoundingBox(pt.Point(-1, -4, -5), pt.Point(9, 6, 5));

            (var left, var right) = box.Split();
            Assert.Equal(pt.Point(-1, -4, -5), left.Minimum);
            Assert.Equal(pt.Point(4, 6, 5), left.Maximum);
            Assert.Equal(pt.Point(4, -4, -5), right.Minimum);
            Assert.Equal(pt.Point(9, 6, 5), right.Maximum);
        }
コード例 #10
0
        public void AddingPointsToEmptyBoundingBox()
        {
            var box = new shape.BoundingBox();
            var p1  = pt.Point(-5, 2, 0);
            var p2  = pt.Point(7, 0, -3);

            box.Add(p1);
            box.Add(p2);

            Assert.Equal(pt.Point(-5, 0, -3), box.Minimum);
            Assert.Equal(pt.Point(7, 2, 0), box.Maximum);
        }