Exemplo n.º 1
0
	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);
	}
Exemplo n.º 2
0
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());
*/
}
Exemplo n.º 3
0
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;
}