Exemplo n.º 1
0
        public void GetAxisAlignedBoundingBox()
        {
            Assert.AreEqual(new Aabb(new Vector3(0, -100, 0), new Vector3(1000, 0, 1000)),
                            new HeightField().GetAabb(Pose.Identity));
            Assert.AreEqual(new Aabb(new Vector3(1000, -101, 2000), new Vector3(1100, 5, 2200)),
                            _field.GetAabb(Pose.Identity));
            Assert.AreEqual(new Aabb(new Vector3(0, -1, 0), new Vector3(10, 5, 20)),
                            new HeightField(0, 0, 10, 20, _samples, 3, 8)
            {
                Depth = 0
            }.GetAabb(Pose.Identity));

            // Now with pose.
            Quaternion rotation = Quaternion.CreateRotationX(0.2f);
            Pose       pose     = new Pose(new Vector3(1, 1, 1), rotation);

            _field.Depth = 0;
            var box = new TransformedShape(
                new GeometricObject(new BoxShape(100, 6, 200), new Pose(new Vector3(1050, 2, 2100))));

            Assert.IsTrue(Vector3.AreNumericallyEqual(box.GetAabb(pose).Minimum, _field.GetAabb(pose).Minimum));
            _field.Depth = 4;
            box          = new TransformedShape(
                new GeometricObject(new BoxShape(100, 10, 200), new Pose(new Vector3(1000, 0, 2000))));
            Assert.IsTrue(Vector3.AreNumericallyEqual(box.GetAabb(pose).Minimum + rotation.Rotate(new Vector3(50, 0, 100)), _field.GetAabb(pose).Minimum));
        }
Exemplo n.º 2
0
        public void GetAabb()
        {
            Assert.AreEqual(new Vector3F(0, 0, 0), new TransformedShape().GetAabb(Pose.Identity).Minimum);
              Assert.AreEqual(new Vector3F(0, 0, 0), new TransformedShape().GetAabb(Pose.Identity).Maximum);

              TransformedShape t = new TransformedShape
              {
            Child = new GeometricObject
            {
              Pose = new Pose(new Vector3F(0, 1, 0)),
              Shape = new SphereShape(10),
            },
              };

              Assert.AreEqual(new Vector3F(-10, -9, -10), t.GetAabb(Pose.Identity).Minimum);
              Assert.AreEqual(new Vector3F(10, 11, 10), t.GetAabb(Pose.Identity).Maximum);

              Assert.AreEqual(new Vector3F(-8, -9, -10), t.GetAabb(new Pose(new Vector3F(2, 0, 0))).Minimum);
              Assert.AreEqual(new Vector3F(12, 11, 10), t.GetAabb(new Pose(new Vector3F(2, 0, 0))).Maximum);
        }
Exemplo n.º 3
0
        public void Clone()
        {
            Pose pose = new Pose(new Vector3F(1, 2, 3));
              PointShape pointShape = new PointShape(3, 4, 5);
              GeometricObject geometry = new GeometricObject(pointShape, pose);

              TransformedShape transformedShape = new TransformedShape(geometry);
              TransformedShape clone = transformedShape.Clone() as TransformedShape;
              Assert.IsNotNull(clone);
              Assert.IsNotNull(clone.Child);
              Assert.AreNotSame(geometry, clone.Child);
              Assert.IsTrue(clone.Child is GeometricObject);
              Assert.AreEqual(pose, clone.Child.Pose);
              Assert.IsNotNull(clone.Child.Shape);
              Assert.AreNotSame(pointShape, clone.Child.Shape);
              Assert.IsTrue(clone.Child.Shape is PointShape);
              Assert.AreEqual(pointShape.Position, ((PointShape)clone.Child.Shape).Position);
              Assert.AreEqual(transformedShape.GetAabb(Pose.Identity).Minimum, clone.GetAabb(Pose.Identity).Minimum);
              Assert.AreEqual(transformedShape.GetAabb(Pose.Identity).Maximum, clone.GetAabb(Pose.Identity).Maximum);
        }
Exemplo n.º 4
0
        public void GetAabb()
        {
            Assert.AreEqual(new Vector3(0, 0, 0), new TransformedShape().GetAabb(Pose.Identity).Minimum);
            Assert.AreEqual(new Vector3(0, 0, 0), new TransformedShape().GetAabb(Pose.Identity).Maximum);

            TransformedShape t = new TransformedShape
            {
                Child = new GeometricObject
                {
                    Pose  = new Pose(new Vector3(0, 1, 0)),
                    Shape = new SphereShape(10),
                },
            };

            Assert.AreEqual(new Vector3(-10, -9, -10), t.GetAabb(Pose.Identity).Minimum);
            Assert.AreEqual(new Vector3(10, 11, 10), t.GetAabb(Pose.Identity).Maximum);

            Assert.AreEqual(new Vector3(-8, -9, -10), t.GetAabb(new Pose(new Vector3(2, 0, 0))).Minimum);
            Assert.AreEqual(new Vector3(12, 11, 10), t.GetAabb(new Pose(new Vector3(2, 0, 0))).Maximum);
        }
Exemplo n.º 5
0
        public void Clone()
        {
            Pose            pose       = new Pose(new Vector3(1, 2, 3));
            PointShape      pointShape = new PointShape(3, 4, 5);
            GeometricObject geometry   = new GeometricObject(pointShape, pose);

            TransformedShape transformedShape = new TransformedShape(geometry);
            TransformedShape clone            = transformedShape.Clone() as TransformedShape;

            Assert.IsNotNull(clone);
            Assert.IsNotNull(clone.Child);
            Assert.AreNotSame(geometry, clone.Child);
            Assert.IsTrue(clone.Child is GeometricObject);
            Assert.AreEqual(pose, clone.Child.Pose);
            Assert.IsNotNull(clone.Child.Shape);
            Assert.AreNotSame(pointShape, clone.Child.Shape);
            Assert.IsTrue(clone.Child.Shape is PointShape);
            Assert.AreEqual(pointShape.Position, ((PointShape)clone.Child.Shape).Position);
            Assert.AreEqual(transformedShape.GetAabb(Pose.Identity).Minimum, clone.GetAabb(Pose.Identity).Minimum);
            Assert.AreEqual(transformedShape.GetAabb(Pose.Identity).Maximum, clone.GetAabb(Pose.Identity).Maximum);
        }
Exemplo n.º 6
0
        public void GetAxisAlignedBoundingBox()
        {
            Assert.AreEqual(new Aabb(new Vector3F(0, -100, 0), new Vector3F(1000, 0, 1000)),
                      new HeightField().GetAabb(Pose.Identity));
              Assert.AreEqual(new Aabb(new Vector3F(1000, -101, 2000), new Vector3F(1100, 5, 2200)),
                      _field.GetAabb(Pose.Identity));
              Assert.AreEqual(new Aabb(new Vector3F(0, -1, 0), new Vector3F(10, 5, 20)),
                      new HeightField(0, 0, 10, 20, _samples, 3, 8) { Depth = 0 }.GetAabb(Pose.Identity));

              // Now with pose.
              QuaternionF rotation = QuaternionF.CreateRotationX(0.2f);
              Pose pose = new Pose(new Vector3F(1, 1, 1), rotation);
              _field.Depth = 0;
              var box = new TransformedShape(
            new GeometricObject(new BoxShape(100, 6, 200), new Pose(new Vector3F(1050, 2, 2100))));
              Assert.IsTrue(Vector3F.AreNumericallyEqual(box.GetAabb(pose).Minimum, _field.GetAabb(pose).Minimum));
              _field.Depth = 4;
              box = new TransformedShape(
            new GeometricObject(new BoxShape(100, 10, 200), new Pose(new Vector3F(1000, 0, 2000))));
              Assert.IsTrue(Vector3F.AreNumericallyEqual(box.GetAabb(pose).Minimum + rotation.Rotate(new Vector3F(50, 0, 100)), _field.GetAabb(pose).Minimum));
        }