Beispiel #1
0
        public void TestContainment()
        {
            PlaneConvexAlgorithm algo = new PlaneConvexAlgorithm(new CollisionDetection());

            CollisionObject a = new CollisionObject(new GeometricObject
            {
                Shape = new BoxShape(1, 2, 3),
                Pose  = new Pose(new Vector3F(0, -1, 0)),
            });
            CollisionObject b = new CollisionObject(new GeometricObject
            {
                Shape = new PlaneShape(new Vector3F(0, 1, 0), 0),
            });

            Assert.AreEqual(true, algo.HaveContact(a, b));
            Assert.AreEqual(true, algo.HaveContact(b, a));

            // Test contact set update.
            ContactSet cs = ContactSet.Create(a, b);

            cs.Add(Contact.Create());
            algo.UpdateContacts(cs, 0);
            Assert.AreEqual(1, cs.Count);
            Assert.AreEqual(2, cs[0].PenetrationDepth);
        }
Beispiel #2
0
        public void TestContainment()
        {
            PlaneConvexAlgorithm algo = new PlaneConvexAlgorithm(new CollisionDetection());

              CollisionObject a = new CollisionObject(new GeometricObject
                  {
                    Shape = new BoxShape(1, 2, 3),
                    Pose = new Pose(new Vector3F(0, -1, 0)),
                  });
              CollisionObject b = new CollisionObject(new GeometricObject
                  {
                    Shape = new PlaneShape(new Vector3F(0, 1, 0), 0),
                  });

              Assert.AreEqual(true, algo.HaveContact(a, b));
              Assert.AreEqual(true, algo.HaveContact(b, a));

              // Test contact set update.
              ContactSet cs = ContactSet.Create(a, b);
              cs.Add(Contact.Create());
              algo.UpdateContacts(cs, 0);
              Assert.AreEqual(1, cs.Count);
              Assert.AreEqual(2, cs[0].PenetrationDepth);
        }