| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- #include <test_common.h>
- #include <igl/embree/EmbreeIntersector.h>
- // TEST_CASE("EmbreeIntersector: cube", "[igl/embree]")
- // {
- // //The allowed error for this test
- // const double epsilon = 1e-6;
- // Eigen::MatrixXd V;
- // Eigen::MatrixXi F;
- // // This is a cube of dimensions 1.0x1.0x1.0
- // test_common::load_mesh("cube.obj", V, F);
- // // Initialize embree
- // igl::embree::EmbreeIntersector embree;
- // embree.init(V.cast<float>(),F.cast<int>());
- // const int expected_id[] = {4,8,5,2,7,0};
- // const float expected_u[] = {0.5,0.5,0.5,0.5,0.5,0.5};
- // const float expected_v[] = {0.5,0.0,0.0,0.0,0.5,0.0};
- // // Shoot ray from inside out
- // for (int dim=0; dim<6; ++dim)
- // {
- // Eigen::Vector3f pos(0,0,0);
- // Eigen::Vector3f dir(0,0,0);
- // // test each dimension, pos and neg
- // dir[dim/2] = dim%2 ? -1 : 1;
- // igl::Hit hit;
- // bool hitP = embree.intersectRay(pos, dir, hit);
- // CHECK(hitP);
- // REQUIRE(hit.t == Approx(0.5).margin(epsilon));
- // REQUIRE(hit.id == expected_id[dim]);
- // REQUIRE(hit.u == Approx(expected_u[dim]).margin(epsilon));
- // REQUIRE(hit.v == Approx(expected_v[dim]).margin(epsilon));
- // }
- // // Shoot ray from outside in
- // for (int dim=0; dim<6; ++dim)
- // {
- // Eigen::Vector3f dir(0,0,0);
- // // test each dimension, pos and neg
- // dir[dim/2] = dim%2 ? 1 : -1;
- // Eigen::Vector3f pos = -dir;
- // igl::Hit hit;
- // bool hitP = embree.intersectRay(pos, dir, hit);
- // CHECK(hitP);
- // REQUIRE(hit.t == Approx(0.5).margin(epsilon));
- // REQUIRE(hit.id == expected_id[dim]);
- // REQUIRE(hit.u == Approx(expected_u[dim]).margin(epsilon));
- // REQUIRE(hit.v == Approx(expected_v[dim]).margin(epsilon));
- // }
- // // Rays that miss
- // for (int dim=0; dim<6; ++dim)
- // {
- // Eigen::Vector3f pos(0,0,0);
- // Eigen::Vector3f dir(0,0,0);
- // // test each dimension, pos and neg
- // dir[dim/2] = dim%2 ? -1 : 1;
- // pos[(dim/2+1)%3] = dir[dim/2];
- // igl::Hit hit;
- // bool hitP = embree.intersectRay(pos, dir, hit);
- // CHECK_FALSE(hitP);
- // }
- // // intersect beam
- // {
- // Eigen::Vector3f pos(-0.5,-0.5,1);
- // Eigen::Vector3f dir(0,0,-1);
- // igl::Hit hit;
- // bool hitP = embree.intersectBeam(pos, dir, hit);
- // CHECK(hitP);
- // REQUIRE(hit.t == Approx(0.5).margin(epsilon));
- // REQUIRE(hit.id == 7);
- // REQUIRE(hit.u == Approx(0).margin(epsilon));
- // REQUIRE(hit.v == Approx(1).margin(epsilon));
- // }
- // {
- // Eigen::Vector3f pos(0.5,-1,0.5);
- // Eigen::Vector3f dir(0,1,0);
- // igl::Hit hit;
- // bool hitP = embree.intersectBeam(pos, dir, hit);
- // CHECK(hitP);
- // REQUIRE(hit.t == Approx(0.5).margin(epsilon));
- // REQUIRE(hit.id == 2);
- // REQUIRE(hit.u == Approx(0).margin(epsilon));
- // REQUIRE(hit.v == Approx(0).margin(epsilon));
- // }
- // }
|