mirror of https://github.com/CGAL/cgal
update test to check we can prevent collapses and flips
This commit is contained in:
parent
6869bddeaa
commit
c8654724e2
|
|
@ -5,6 +5,7 @@
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <CGAL/Polygon_mesh_processing/repair_degeneracies.h>
|
#include <CGAL/Polygon_mesh_processing/repair_degeneracies.h>
|
||||||
#include <CGAL/Polyhedral_envelope.h>
|
#include <CGAL/Polyhedral_envelope.h>
|
||||||
|
#include <CGAL/Polygon_mesh_processing/measure.h>
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
@ -116,7 +117,49 @@ void test_with_envelope(std::string filename, double eps)
|
||||||
std::cout << " Output mesh has self-intersections\n";
|
std::cout << " Output mesh has self-intersections\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool same_meshes(const Mesh& m1, const Mesh& m2)
|
||||||
|
{
|
||||||
|
std::size_t c=0, m1_only=0, m2_only=0;
|
||||||
|
PMP::match_faces(m1, m2, CGAL::Counting_output_iterator(&c)
|
||||||
|
, CGAL::Counting_output_iterator(&m1_only)
|
||||||
|
, CGAL::Counting_output_iterator(&m2_only));
|
||||||
|
return m1_only==0 && m2_only==0;
|
||||||
|
}
|
||||||
|
void test_parameters_on_pig(std::string filename)
|
||||||
|
{
|
||||||
|
std::ifstream input(filename);
|
||||||
|
|
||||||
|
Mesh mesh, bk;
|
||||||
|
if (!input || !(input >> mesh) || !CGAL::is_triangle_mesh(mesh)) {
|
||||||
|
std::cerr << "Not a valid input file." << std::endl;
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
bk=mesh;
|
||||||
|
|
||||||
|
PMP::experimental::remove_almost_degenerate_faces(mesh,
|
||||||
|
std::cos(160. / 180 * CGAL_PI),
|
||||||
|
4,
|
||||||
|
9999 /*no_constraints*/);
|
||||||
|
assert(vertices(mesh).size()!=vertices(bk).size());
|
||||||
|
|
||||||
|
mesh=bk;
|
||||||
|
PMP::experimental::remove_almost_degenerate_faces(mesh,
|
||||||
|
std::cos(160. / 180 * CGAL_PI),
|
||||||
|
4,
|
||||||
|
0.000000000000001); // no-collapse but flips
|
||||||
|
assert(vertices(mesh).size()==vertices(bk).size());
|
||||||
|
assert(!same_meshes(mesh,bk));
|
||||||
|
|
||||||
|
mesh=bk;
|
||||||
|
PMP::experimental::remove_almost_degenerate_faces(mesh,
|
||||||
|
std::cos(160. / 180 * CGAL_PI),
|
||||||
|
4,
|
||||||
|
0.000000000000001,
|
||||||
|
CGAL::parameters::flip_triangle_height_threshold(0.000000000000001)); // no-collapse and no flip
|
||||||
|
assert(vertices(mesh).size()==vertices(bk).size());
|
||||||
|
assert(same_meshes(mesh,bk));
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
|
|
@ -129,5 +172,9 @@ int main(int argc, char** argv)
|
||||||
if (argc==3)
|
if (argc==3)
|
||||||
test_with_envelope(filename, atof(argv[2]));
|
test_with_envelope(filename, atof(argv[2]));
|
||||||
|
|
||||||
|
// only run that test with pig.off
|
||||||
|
if (argc==1)
|
||||||
|
test_parameters_on_pig(filename);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue