Add test checking diference in volume before/after simplification
FIX warnings ..\src\libslic3r\QuadricEdgeCollapse.cpp(173): warning C4056: overflow in floating-point constant arithmetic ..\src\libslic3r\QuadricEdgeCollapse.cpp(232): warning C4056: overflow in floating-point constant arithmetic
This commit is contained in:
parent
e3cdeda673
commit
7c13cfa1d9
2 changed files with 16 additions and 1 deletions
|
@ -123,7 +123,7 @@ bool Slic3r::its_quadric_edge_collapse(indexed_triangle_set &its,
|
||||||
EdgeInfos e_infos;
|
EdgeInfos e_infos;
|
||||||
std::tie(t_infos, v_infos, e_infos) = init(its);
|
std::tie(t_infos, v_infos, e_infos) = init(its);
|
||||||
|
|
||||||
static constexpr double max_error = std::numeric_limits<double>::max();
|
static constexpr float max_error = std::numeric_limits<float>::max();
|
||||||
|
|
||||||
auto cmp = [&t_infos](size_t vi0, size_t vi1) -> bool {
|
auto cmp = [&t_infos](size_t vi0, size_t vi1) -> bool {
|
||||||
const Error &e0 = t_infos[vi0].e;
|
const Error &e0 = t_infos[vi0].e;
|
||||||
|
|
|
@ -140,3 +140,18 @@ TEST_CASE("Reduce one edge by Quadric Edge Collapse", "[its]")
|
||||||
CHECK(is_between);
|
CHECK(is_between);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include "test_utils.hpp"
|
||||||
|
TEST_CASE("Symplify mesh by Quadric edge collapse to 5%", "[its]")
|
||||||
|
{
|
||||||
|
TriangleMesh mesh = load_model("frog_legs.obj");
|
||||||
|
double original_volume = its_volume(mesh.its);
|
||||||
|
size_t wanted_count = mesh.its.indices.size() * 0.05;
|
||||||
|
REQUIRE_FALSE(mesh.empty());
|
||||||
|
indexed_triangle_set its = mesh.its; // copy
|
||||||
|
its_quadric_edge_collapse(its, wanted_count);
|
||||||
|
// its_write_obj(its, "frog_legs_qec.obj");
|
||||||
|
CHECK(its.indices.size() <= wanted_count);
|
||||||
|
double volume = its_volume(its);
|
||||||
|
CHECK(fabs(original_volume - volume) < 30.);
|
||||||
|
}
|
Loading…
Reference in a new issue