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
@ -123,7 +123,7 @@ bool Slic3r::its_quadric_edge_collapse(indexed_triangle_set &its,
|
||||
EdgeInfos e_infos;
|
||||
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 {
|
||||
const Error &e0 = t_infos[vi0].e;
|
||||
|
@ -140,3 +140,18 @@ TEST_CASE("Reduce one edge by Quadric Edge Collapse", "[its]")
|
||||
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 New Issue
Block a user