1234567891011121314151617181920212223242526272829303132333435 |
- #include <test_common.h>
- #include <igl/doublearea.h>
- TEST_CASE("doublearea: VF_vs_ABC", "[igl]")
- {
- auto test_case = [](const std::string ¶m)
- {
- Eigen::MatrixXd V;
- Eigen::MatrixXi F;
- test_common::load_mesh(param, V, F);
- // Check that computing double area with (V,F) is the same as computing
- // double area with (V1,V2,V2)
- Eigen::VectorXd A1,A2;
- igl::doublearea(V,F,A1);
- Eigen::MatrixXd A(F.rows(),3);
- Eigen::MatrixXd B(F.rows(),3);
- Eigen::MatrixXd C(F.rows(),3);
- for(int f = 0;f<F.rows();f++)
- {
- A.row(f) = V.row(F(f,0));
- B.row(f) = V.row(F(f,1));
- C.row(f) = V.row(F(f,2));
- }
- igl::doublearea(A,B,C,A2);
- REQUIRE (A2.size() == A1.size());
- for(int a = 0;a<A1.size();a++)
- {
- REQUIRE (A2(a) == Approx (A1(a)).margin(1e-15));
- }
- };
- test_common::run_test_cases(test_common::all_meshes(), test_case);
- }
|