47 class OverlappingFaces
50 OverlappingFaces() =
default;
51 ~OverlappingFaces() =
default;
66 std::vector<std::pair<SurfaceMesh::Face, SurfaceMesh::Face > > &duplicate_faces,
67 std::vector<std::pair<SurfaceMesh::Face, SurfaceMesh::Face > > &folding_faces,
68 double dist_threshold = 1e-6
84 bool folding_faces =
false,
85 double dist_threshold = 1e-6
89 typedef CGAL::Simple_cartesian<double> Kernel;
91 typedef CGAL::Point_3<Kernel> Point_3;
92 typedef CGAL::Vector_3<Kernel> Vector_3;
93 typedef CGAL::Triangle_3<Kernel> Triangle_3;
96 Triangle(
const Point_3& a,
const Point_3& b,
const Point_3& c,
SurfaceMesh::Face f) : triangle(a, b, c), face(f) {}
99 std::vector<SurfaceMesh::Vertex> vertices;
103 typedef std::vector<Triangle> Triangles;
104 typedef Triangles::iterator TrianglesIterator;
105 typedef CGAL::Box_intersection_d::Box_with_handle_d<double, 3, TrianglesIterator> Box;
108 Triangles mesh_to_cgal_triangle_list(
SurfaceMesh* esh);
111 enum OverlapType {OT_NONE, OT_SAME, OT_FOLDING};
112 OverlapType do_overlap(
const Triangle& A,
const Triangle& B,
double sqr_eps);
114 Triangles triangle_faces_;
unsigned int remove(SurfaceMesh *mesh, bool folding_faces=false, double dist_threshold=1e-6)
Removes duplicate faces and folding faces.
Definition overlapping_faces.cpp:188
void detect(SurfaceMesh *mesh, std::vector< std::pair< SurfaceMesh::Face, SurfaceMesh::Face > > &duplicate_faces, std::vector< std::pair< SurfaceMesh::Face, SurfaceMesh::Face > > &folding_faces, double dist_threshold=1e-6)
Detects duplicate faces and folding faces.
Definition overlapping_faces.cpp:143