Skip to content
Snippets Groups Projects
Commit 198367ed authored by Jeongseok Lee's avatar Jeongseok Lee
Browse files

Update another tests: box-box, sphere-box, sphere-capsule, cylinder-cylinder,...

Update another tests: box-box, sphere-box, sphere-capsule, cylinder-cylinder, cone-cone, cone-cylinder
parent 5c34ca94
No related branches found
No related tags found
No related merge requests found
......@@ -371,52 +371,49 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_boxbox)
Box s1(20, 40, 50);
Box s2(10, 10, 10);
Transform3f tf1;
Transform3f tf2;
Transform3f transform;
generateRandomTransform(extents, transform);
Transform3f identity;
CollisionRequest request;
CollisionResult result;
// Vec3f point;
// FCL_REAL depth;
Vec3f normal;
bool res;
Quaternion3f q;
q.fromAxisAngle(Vec3f(0, 0, 1), (FCL_REAL)3.140 / 6);
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(), request, result) > 0);
BOOST_CHECK(res);
tf1 = Transform3f();
tf2 = Transform3f();
// TODO: Need convention for normal when the centers of two objects are at same position. The current result is (1, 0, 0).
normal.setValue(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
res = solver1.shapeIntersect(s1, transform, s2, transform, NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, transform, &s2, transform, request, result) > 0);
BOOST_CHECK(res);
tf1 = transform;
tf2 = transform;
// TODO: Need convention for normal when the centers of two objects are at same position. The current result is (1, 0, 0).
normal.setValue(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(Vec3f(15, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(Vec3f(15, 0, 0)), request, result) > 0);
BOOST_CHECK(res);
tf1 = Transform3f();
tf2 = Transform3f(Vec3f(15, 0, 0));
normal.setValue(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
res = solver1.shapeIntersect(s1, transform, s2, transform * Transform3f(Vec3f(15.01, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK_FALSE(res);
result.clear();
res = (collide(&s1, transform, &s2, transform * Transform3f(Vec3f(15.01, 0, 0)), request, result) > 0);
BOOST_CHECK_FALSE(res);
tf1 = Transform3f();
tf2 = Transform3f(Vec3f(15.01, 0, 0));
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, false);
Quaternion3f q;
q.fromAxisAngle(Vec3f(0, 0, 1), (FCL_REAL)3.140 / 6);
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(q), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(q), request, result) > 0);
BOOST_CHECK(res);
tf1 = Transform3f();
tf2 = Transform3f(q);
normal = Transform3f(q).getRotation() * Vec3f(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
res = solver1.shapeIntersect(s1, transform, s2, transform * Transform3f(q), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, transform, &s2, transform * Transform3f(q), request, result) > 0);
BOOST_CHECK(res);
tf1 = transform;
tf2 = transform * Transform3f(q);
normal = Transform3f(q).getRotation() * Vec3f(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
}
BOOST_AUTO_TEST_CASE(shapeIntersection_spherebox)
......@@ -424,51 +421,101 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_spherebox)
Sphere s1(20);
Box s2(5, 5, 5);
Transform3f tf1;
Transform3f tf2;
Transform3f transform;
generateRandomTransform(extents, transform);
Transform3f identity;
CollisionRequest request;
CollisionResult result;
// Vec3f point;
// FCL_REAL depth;
Vec3f normal;
bool res;
tf1 = Transform3f();
tf2 = Transform3f();
// TODO: Need convention for normal when the centers of two objects are at same position. The current result is (-1, 0, 0).
normal.setValue(-1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(), request, result) > 0);
BOOST_CHECK(res);
tf1 = transform;
tf2 = transform;
// TODO: Need convention for normal when the centers of two objects are at same position. The current result is (-0.9985590945508502, 0.02998909000838618, -0.04450156368325561).
normal.setValue(-0.9985590945508502, 0.02998909000838618, -0.04450156368325561);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
res = solver1.shapeIntersect(s1, transform, s2, transform, NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, transform, &s2, transform, request, result) > 0);
BOOST_CHECK(res);
tf1 = Transform3f();
tf2 = Transform3f(Vec3f(22.5, 0, 0));
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, false);
tf1 = transform;
tf2 = transform * Transform3f(Vec3f(22.501, 0, 0));
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, false);
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(Vec3f(22.5, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK_FALSE(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(Vec3f(22.5, 0, 0)), request, result) > 0);
BOOST_CHECK_FALSE(res);
tf1 = Transform3f();
tf2 = Transform3f(Vec3f(22.4, 0, 0));
normal.setValue(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
res = solver1.shapeIntersect(s1, transform, s2, transform * Transform3f(Vec3f(22.501, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK_FALSE(res);
result.clear();
res = (collide(&s1, transform, &s2, transform * Transform3f(Vec3f(22.501, 0, 0)), request, result) > 0);
BOOST_CHECK_FALSE(res);
tf1 = transform;
tf2 = transform * Transform3f(Vec3f(22.4, 0, 0));
normal = transform.getRotation() * Vec3f(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
}
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(Vec3f(22.4, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(Vec3f(22.4, 0, 0)), request, result) > 0);
BOOST_CHECK(res);
BOOST_AUTO_TEST_CASE(shapeIntersection_spherecapsule)
{
Sphere s1(20);
Capsule s2(5, 10);
res = solver1.shapeIntersect(s1, transform, s2, transform * Transform3f(Vec3f(22.4, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, transform, &s2, transform * Transform3f(Vec3f(22.4, 0, 0)), request, result) > 0);
BOOST_CHECK(res);
Transform3f tf1;
Transform3f tf2;
Transform3f transform;
generateRandomTransform(extents, transform);
// Vec3f point;
// FCL_REAL depth;
Vec3f normal;
tf1 = Transform3f();
tf2 = Transform3f();
// TODO: Need convention for normal when the centers of two objects are at same position.
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, NULL);
tf1 = transform;
tf2 = transform;
// TODO: Need convention for normal when the centers of two objects are at same position.
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, NULL);
tf1 = Transform3f();
tf2 = Transform3f(Vec3f(24.9, 0, 0));
normal.setValue(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
tf1 = transform;
tf2 = transform * Transform3f(Vec3f(24.9, 0, 0));
normal = transform.getRotation() * Vec3f(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
tf1 = Transform3f();
tf2 = Transform3f(Vec3f(25, 0, 0));
normal.setValue(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
tf1 = transform;
tf2 = transform * Transform3f(Vec3f(25, 0, 0));
normal = transform.getRotation() * Vec3f(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
tf1 = Transform3f();
tf2 = Transform3f(Vec3f(25.1, 0, 0));
normal.setValue(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, false);
tf1 = transform;
tf2 = transform * Transform3f(Vec3f(25.1, 0, 0));
normal = transform.getRotation() * Vec3f(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, false);
}
BOOST_AUTO_TEST_CASE(shapeIntersection_cylindercylinder)
......@@ -476,50 +523,43 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_cylindercylinder)
Cylinder s1(5, 10);
Cylinder s2(5, 10);
Transform3f tf1;
Transform3f tf2;
Transform3f transform;
generateRandomTransform(extents, transform);
Transform3f identity;
CollisionRequest request;
CollisionResult result;
bool res;
// Vec3f point;
// FCL_REAL depth;
Vec3f normal;
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(), request, result) > 0);
BOOST_CHECK(res);
tf1 = Transform3f();
tf2 = Transform3f();
// TODO: Need convention for normal when the centers of two objects are at same position.
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, NULL);
res = solver1.shapeIntersect(s1, transform, s2, transform, NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, transform, &s2, transform, request, result) > 0);
BOOST_CHECK(res);
tf1 = transform;
tf2 = transform;
// TODO: Need convention for normal when the centers of two objects are at same position.
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, NULL);
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(Vec3f(9.9, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(Vec3f(9.9, 0, 0)), request, result) > 0);
BOOST_CHECK(res);
tf1 = Transform3f();
tf2 = Transform3f(Vec3f(9.9, 0, 0));
normal.setValue(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
res = solver1.shapeIntersect(s1, transform, s2, transform * Transform3f(Vec3f(9.9, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, transform, &s2, transform * Transform3f(Vec3f(9.9, 0, 0)), request, result) > 0);
BOOST_CHECK(res);
tf1 = transform;
tf2 = transform * Transform3f(Vec3f(9.9, 0, 0));
normal = transform.getRotation() * Vec3f(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(Vec3f(10, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK_FALSE(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(Vec3f(10, 0, 0)), request, result) > 0);
BOOST_CHECK_FALSE(res);
tf1 = Transform3f();
tf2 = Transform3f(Vec3f(10.01, 0, 0));
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, false);
res = solver1.shapeIntersect(s1, transform, s2, transform * Transform3f(Vec3f(10.01, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK_FALSE(res);
result.clear();
res = (collide(&s1, transform, &s2, transform * Transform3f(Vec3f(10.01, 0, 0)), request, result) > 0);
BOOST_CHECK_FALSE(res);
tf1 = transform;
tf2 = transform * Transform3f(Vec3f(10.01, 0, 0));
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, false);
}
BOOST_AUTO_TEST_CASE(shapeIntersection_conecone)
......@@ -527,62 +567,53 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_conecone)
Cone s1(5, 10);
Cone s2(5, 10);
Transform3f tf1;
Transform3f tf2;
Transform3f transform;
generateRandomTransform(extents, transform);
Transform3f identity;
CollisionRequest request;
CollisionResult result;
bool res;
// Vec3f point;
// FCL_REAL depth;
Vec3f normal;
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(), request, result) > 0);
BOOST_CHECK(res);
tf1 = Transform3f();
tf2 = Transform3f();
// TODO: Need convention for normal when the centers of two objects are at same position.
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, NULL);
res = solver1.shapeIntersect(s1, transform, s2, transform, NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, transform, &s2, transform, request, result) > 0);
BOOST_CHECK(res);
tf1 = transform;
tf2 = transform;
// TODO: Need convention for normal when the centers of two objects are at same position.
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, NULL);
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(Vec3f(9.9, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(Vec3f(9.9, 0, 0)), request, result) > 0);
BOOST_CHECK(res);
tf1 = Transform3f();
tf2 = Transform3f(Vec3f(9.9, 0, 0));
normal.setValue(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
res = solver1.shapeIntersect(s1, transform, s2, transform * Transform3f(Vec3f(9.9, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, transform, &s2, transform * Transform3f(Vec3f(9.9, 0, 0)), request, result) > 0);
BOOST_CHECK(res);
tf1 = transform;
tf2 = transform * Transform3f(Vec3f(9.9, 0, 0));
normal = transform.getRotation() * Vec3f(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(Vec3f(10.001, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK_FALSE(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(Vec3f(10.001, 0, 0)), request, result) > 0);
BOOST_CHECK_FALSE(res);
tf1 = Transform3f();
tf2 = Transform3f(Vec3f(10.001, 0, 0));
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, false);
res = solver1.shapeIntersect(s1, transform, s2, transform * Transform3f(Vec3f(10.001, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK_FALSE(res);
result.clear();
res = (collide(&s1, transform, &s2, transform * Transform3f(Vec3f(10.001, 0, 0)), request, result) > 0);
BOOST_CHECK_FALSE(res);
tf1 = transform;
tf2 = transform * Transform3f(Vec3f(10.001, 0, 0));
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, false);
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(Vec3f(0, 0, 9.9)), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(Vec3f(0, 0, 9.9)), request, result) > 0);
BOOST_CHECK(res);
tf1 = Transform3f();
tf2 = Transform3f(Vec3f(0, 0, 9.9));
normal.setValue(0, 0, 1);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
res = solver1.shapeIntersect(s1, transform, s2, transform * Transform3f(Vec3f(0, 0, 9.9)), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, transform, &s2, transform * Transform3f(Vec3f(0, 0, 9.9)), request, result) > 0);
BOOST_CHECK(res);
tf1 = transform;
tf2 = transform * Transform3f(Vec3f(0, 0, 9.9));
normal = transform.getRotation() * Vec3f(0, 0, 1);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
}
BOOST_AUTO_TEST_CASE(shapeIntersection_conecylinder)
......@@ -590,74 +621,61 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_conecylinder)
Cylinder s1(5, 10);
Cone s2(5, 10);
Transform3f tf1;
Transform3f tf2;
Transform3f transform;
generateRandomTransform(extents, transform);
Transform3f identity;
CollisionRequest request;
CollisionResult result;
bool res;
// Vec3f point;
// FCL_REAL depth;
Vec3f normal;
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(), request, result) > 0);
BOOST_CHECK(res);
tf1 = Transform3f();
tf2 = Transform3f();
// TODO: Need convention for normal when the centers of two objects are at same position.
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, NULL);
res = solver1.shapeIntersect(s1, transform, s2, transform, NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, transform, &s2, transform, request, result) > 0);
BOOST_CHECK(res);
tf1 = transform;
tf2 = transform;
// TODO: Need convention for normal when the centers of two objects are at same position.
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, NULL);
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(Vec3f(9.9, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(Vec3f(9.9, 0, 0)), request, result) > 0);
BOOST_CHECK(res);
tf1 = Transform3f();
tf2 = Transform3f(Vec3f(9.9, 0, 0));
normal.setValue(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal, false, 0.061);
res = solver1.shapeIntersect(s1, transform, s2, transform * Transform3f(Vec3f(9.9, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, transform, &s2, transform * Transform3f(Vec3f(9.9, 0, 0)), request, result) > 0);
BOOST_CHECK(res);
tf1 = transform;
tf2 = transform * Transform3f(Vec3f(9.9, 0, 0));
normal = transform.getRotation() * Vec3f(1, 0, 0);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal, false, 0.46);
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(Vec3f(10.01, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK_FALSE(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(Vec3f(10, 0, 0)), request, result) > 0);
BOOST_CHECK_FALSE(res);
tf1 = Transform3f();
tf2 = Transform3f(Vec3f(10.01, 0, 0));
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, false);
res = solver1.shapeIntersect(s1, transform, s2, transform * Transform3f(Vec3f(10.01, 0, 0)), NULL, NULL, NULL);
BOOST_CHECK_FALSE(res);
result.clear();
res = (collide(&s1, transform, &s2, transform * Transform3f(Vec3f(10.01, 0, 0)), request, result) > 0);
BOOST_CHECK_FALSE(res);
tf1 = transform;
tf2 = transform * Transform3f(Vec3f(10.01, 0, 0));
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, false);
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(Vec3f(0, 0, 9.9)), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(Vec3f(0, 0, 9.9)), request, result) > 0);
BOOST_CHECK(res);
tf1 = Transform3f();
tf2 = Transform3f(Vec3f(0, 0, 9.9));
normal.setValue(0, 0, 1);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
res = solver1.shapeIntersect(s1, transform, s2, transform * Transform3f(Vec3f(0, 0, 9.9)), NULL, NULL, NULL);
BOOST_CHECK(res);
result.clear();
res = (collide(&s1, transform, &s2, transform * Transform3f(Vec3f(0, 0, 9.9)), request, result) > 0);
BOOST_CHECK(res);
tf1 = transform;
tf2 = transform * Transform3f(Vec3f(0, 0, 9.9));
normal = transform.getRotation() * Vec3f(0, 0, 1);
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal);
res = solver1.shapeIntersect(s1, Transform3f(), s2, Transform3f(Vec3f(0, 0, 10.01)), NULL, NULL, NULL);
BOOST_CHECK_FALSE(res);
result.clear();
res = (collide(&s1, Transform3f(), &s2, Transform3f(Vec3f(0, 0, 10)), request, result) > 0);
BOOST_CHECK_FALSE(res);
tf1 = Transform3f();
tf2 = Transform3f(Vec3f(0, 0, 10.01));
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, false);
res = solver1.shapeIntersect(s1, transform, s2, transform * Transform3f(Vec3f(0, 0, 10.01)), NULL, NULL, NULL);
BOOST_CHECK_FALSE(res);
result.clear();
res = (collide(&s1, transform, &s2, transform * Transform3f(Vec3f(0, 0, 10.01)), request, result) > 0);
BOOST_CHECK_FALSE(res);
tf1 = transform;
tf2 = transform * Transform3f(Vec3f(0, 0, 10.01));
testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, false);
}
BOOST_AUTO_TEST_CASE(shapeIntersection_spheretriangle)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment