Ejemplo n.º 1
0
        public void ComputeCollision()
        {
            CollisionObject a = new CollisionObject(
                new GeometricObject
            {
                Pose  = new Pose(new Vector3F(0, 0, 0)),
                Shape = new BoxShape(2, 2, 2),
            });

            CollisionObject b = new CollisionObject(
                new GeometricObject
            {
                Shape = new BoxShape(2, 2, 2),
                Pose  = Pose.Identity,
            });

            ContactSet      set;
            BoxBoxAlgorithm algo = new BoxBoxAlgorithm(new CollisionDetection());

            ((GeometricObject)b.GeometricObject).Pose = new Pose(new Vector3F(0, 3f, 0));
            Assert.AreEqual(false, algo.HaveContact(a, b));
            Assert.AreEqual(false, algo.HaveContact(b, a));
            set = algo.GetContacts(a, b);
            Assert.AreEqual(0, set.Count);

            ((GeometricObject)b.GeometricObject).Pose = new Pose(new Vector3F(0, -3f, 0));
            Assert.AreEqual(false, algo.HaveContact(a, b));
            Assert.AreEqual(false, algo.HaveContact(b, a));
            algo.UpdateContacts(set, 0);
            Assert.AreEqual(0, set.Count);

            ((GeometricObject)b.GeometricObject).Pose = new Pose(new Vector3F(3, 0f, 0));
            Assert.AreEqual(false, algo.HaveContact(a, b));
            Assert.AreEqual(false, algo.HaveContact(b, a));
            algo.UpdateContacts(set, 0);
            Assert.AreEqual(0, set.Count);

            ((GeometricObject)b.GeometricObject).Pose = new Pose(new Vector3F(-3, 0f, 0));
            Assert.AreEqual(false, algo.HaveContact(a, b));
            Assert.AreEqual(false, algo.HaveContact(b, a));
            algo.UpdateContacts(set, 0);
            Assert.AreEqual(0, set.Count);

            ((GeometricObject)b.GeometricObject).Pose = new Pose(new Vector3F(0, 0f, 3));
            Assert.AreEqual(false, algo.HaveContact(a, b));
            Assert.AreEqual(false, algo.HaveContact(b, a));
            algo.UpdateContacts(set, 0);
            Assert.AreEqual(0, set.Count);

            ((GeometricObject)b.GeometricObject).Pose = new Pose(new Vector3F(0, 0f, -3));
            Assert.AreEqual(false, algo.HaveContact(a, b));
            Assert.AreEqual(false, algo.HaveContact(b, a));
            algo.UpdateContacts(set, 0);
            Assert.AreEqual(0, set.Count);

            // TODO: More unit tests required...
        }
Ejemplo n.º 2
0
        public void ComputeCollision()
        {
            CollisionObject a = new CollisionObject(
            new GeometricObject
            {
              Pose = new Pose(new Vector3F(0, 0, 0)),
              Shape = new BoxShape(2, 2, 2),
            });

              CollisionObject b = new CollisionObject(
            new GeometricObject
            {
              Shape = new BoxShape(2, 2, 2),
              Pose = Pose.Identity,
            });

              ContactSet set;
              BoxBoxAlgorithm algo = new BoxBoxAlgorithm(new CollisionDetection());

              ((GeometricObject)b.GeometricObject).Pose = new Pose(new Vector3F(0, 3f, 0));
              Assert.AreEqual(false, algo.HaveContact(a, b));
              Assert.AreEqual(false, algo.HaveContact(b, a));
              set = algo.GetContacts(a, b);
              Assert.AreEqual(0, set.Count);

              ((GeometricObject)b.GeometricObject).Pose = new Pose(new Vector3F(0, -3f, 0));
              Assert.AreEqual(false, algo.HaveContact(a, b));
              Assert.AreEqual(false, algo.HaveContact(b, a));
              algo.UpdateContacts(set, 0);
              Assert.AreEqual(0, set.Count);

              ((GeometricObject)b.GeometricObject).Pose = new Pose(new Vector3F(3, 0f, 0));
              Assert.AreEqual(false, algo.HaveContact(a, b));
              Assert.AreEqual(false, algo.HaveContact(b, a));
              algo.UpdateContacts(set, 0);
              Assert.AreEqual(0, set.Count);

              ((GeometricObject)b.GeometricObject).Pose = new Pose(new Vector3F(-3, 0f, 0));
              Assert.AreEqual(false, algo.HaveContact(a, b));
              Assert.AreEqual(false, algo.HaveContact(b, a));
              algo.UpdateContacts(set, 0);
              Assert.AreEqual(0, set.Count);

              ((GeometricObject)b.GeometricObject).Pose = new Pose(new Vector3F(0, 0f, 3));
              Assert.AreEqual(false, algo.HaveContact(a, b));
              Assert.AreEqual(false, algo.HaveContact(b, a));
              algo.UpdateContacts(set, 0);
              Assert.AreEqual(0, set.Count);

              ((GeometricObject)b.GeometricObject).Pose = new Pose(new Vector3F(0, 0f, -3));
              Assert.AreEqual(false, algo.HaveContact(a, b));
              Assert.AreEqual(false, algo.HaveContact(b, a));
              algo.UpdateContacts(set, 0);
              Assert.AreEqual(0, set.Count);

              // TODO: More unit tests required...
        }