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... }