euler_characteristic.cpp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include <test_common.h>
  2. #include <igl/euler_characteristic.h>
  3. #include <igl/read_triangle_mesh.h>
  4. #include <igl/triangulated_grid.h>
  5. #include <igl/matlab_format.h>
  6. #include <iostream>
  7. TEST_CASE("euler_characteristic: cube", "[igl]" )
  8. {
  9. Eigen::MatrixXi F(12,3);
  10. F <<
  11. 0,1,2,
  12. 0,2,3,
  13. 0,4,5,
  14. 0,5,1,
  15. 0,3,7,
  16. 0,7,4,
  17. 6,5,4,
  18. 6,4,7,
  19. 6,7,3,
  20. 6,3,2,
  21. 6,2,1,
  22. 6,1,5;
  23. const int chi = igl::euler_characteristic(F);
  24. REQUIRE(chi == 2);
  25. }
  26. TEST_CASE("euler_characteristic: triangle", "[igl]" )
  27. {
  28. Eigen::MatrixXi F(1,3);
  29. F << 0,1,2;
  30. const int chi = igl::euler_characteristic(F);
  31. REQUIRE(chi == 1);
  32. }
  33. TEST_CASE("euler_characteristic: square", "[igl]" )
  34. {
  35. Eigen::MatrixXi F;
  36. igl::triangulated_grid(3,3,F);
  37. const int chi = igl::euler_characteristic(F);
  38. REQUIRE(chi == 1);
  39. }
  40. TEST_CASE("euler_characteristic: torus", "[igl]" )
  41. {
  42. Eigen::MatrixXd V;
  43. Eigen::MatrixXi F;
  44. igl::read_triangle_mesh(test_common::data_path("TinyTorus.obj"), V, F);
  45. const int chi = igl::euler_characteristic(F);
  46. REQUIRE(chi == 0);
  47. }