void test_addition_change_max() { AABB aabb1(glm::vec3(0.f), glm::vec3(1.f)); AABB aabb2(glm::vec3(0.5f), glm::vec3(1.5f)); AABB res = aabb1 + aabb2; CPPUNIT_ASSERT_VEC3_EQUAL(glm::vec3(0.f), res.min, 0.01f); CPPUNIT_ASSERT_VEC3_EQUAL(glm::vec3(1.5f), res.max, 0.01f); }
TEST(collideWorld, box2box) { Vector3 p1(1.0f, -1.0f, 1.0f); Vector3 p2(-1.01f, 1.01f, -1.01f); Vector3 p3(-1.0f, 1.0f, -1.0f); Vector3 p4(-3.0f, 3.0f, -3.0f); AABB aabb1(p1, p2); AABB aabb2(p3, p4); CollidableObject object1(&aabb1, p1, 0); CollidableObject object2(&aabb2, p1, 1); Collide collide; collide.collision(&object1, &object2); EXPECT_TRUE(collide.getCollide()); /** CollisionWorld world; world.addObject(object1); world.addObject(object2); world.computeCollision(); printf("# of objects: %d\n", world.getObjectSize()); printf("# of collides: %d\n", world.getCollideSize()); */ }
void AABB::Test() { AABB aabb1(Vector3f(0.0f, 0.0f, 0.0f), Vector3f(1.0f, 1.0f, 1.0f)); AABB aabb2(Vector3f(1.0f, 1.0f, 1.0f), Vector3f(2.0f, 2.0f, 2.0f)); AABB aabb3(Vector3f(1.0f, 0.0f, 0.0f), Vector3f(2.0f, 1.0f, 1.0f)); AABB aabb4(Vector3f(0.0f, 0.0f, -2.0f), Vector3f(1.0f, 1.0f, -1.0f)); AABB aabb5(Vector3f(0.0f, 0.5f, 0.0f), Vector3f(1.0f, 1.5f, 1.0f)); AABB aabb6(Vector3f(0.3f, 0.5f, 0.7f), Vector3f(1.3f, 1.5f, 1.7f)); IntersectData aabb1Intersectaabb2 = aabb1.IntersectAABB(aabb2); IntersectData aabb1Intersectaabb3 = aabb1.IntersectAABB(aabb3); IntersectData aabb1Intersectaabb4 = aabb1.IntersectAABB(aabb4); IntersectData aabb1Intersectaabb5 = aabb1.IntersectAABB(aabb5); IntersectData aabb1Intersectaabb6 = aabb1.IntersectAABB(aabb6); assert(aabb1Intersectaabb2.GetDoesIntersect() == false); assert(aabb1Intersectaabb2.GetDistance() == 0.0f); assert(aabb1Intersectaabb3.GetDoesIntersect() == false); assert(aabb1Intersectaabb3.GetDistance() == 0.0f); assert(aabb1Intersectaabb4.GetDoesIntersect() == false); assert(aabb1Intersectaabb4.GetDistance() == 1.0f); assert(aabb1Intersectaabb5.GetDoesIntersect() == true); assert(aabb1Intersectaabb5.GetDistance() == -0.5f); assert(aabb1Intersectaabb6.GetDoesIntersect() == true); assert(aabb1Intersectaabb6.GetDistance() == -0.3f); // std::cout << "AABB1 intersect AABB2: " << aabb1Intersectaabb2.GetDoesIntersect() // << ", Distance: " << aabb1Intersectaabb2.GetDistance() << std::endl; // // std::cout << "AABB1 intersect AABB3: " << aabb1Intersectaabb3.GetDoesIntersect() // << ", Distance: " << aabb1Intersectaabb3.GetDistance() << std::endl; // // std::cout << "AABB1 intersect AABB4: " << aabb1Intersectaabb4.GetDoesIntersect() // << ", Distance: " << aabb1Intersectaabb4.GetDistance() << std::endl; // // std::cout << "AABB1 intersect AABB5: " << aabb1Intersectaabb5.GetDoesIntersect() // << ", Distance: " << aabb1Intersectaabb5.GetDistance() << std::endl; // // std::cout << "AABB1 intersect AABB6: " << aabb1Intersectaabb6.GetDoesIntersect() // << ", Distance: " << aabb1Intersectaabb6.GetDistance() << std::endl; }