mirror of https://github.com/CGAL/cgal
remove polyhedron delegate
This commit is contained in:
parent
f38c0cb9ce
commit
f8b19da416
|
|
@ -317,47 +317,29 @@ public:
|
|||
bool is_manifold_surface(const std::vector<int> &tris, const std::vector<Point> &vtx) {
|
||||
typedef CGAL::Polyhedron_3<GeomTraits> PolyhedronSurface;
|
||||
typedef typename PolyhedronSurface::HalfedgeDS HDS;
|
||||
// typedef typename HDS::Vertex Vertex;
|
||||
// typedef typename Vertex::Point Point;
|
||||
class Build_triangle : public CGAL::Modifier_base<HDS> {
|
||||
public:
|
||||
Build_triangle(const std::vector<int> &tris_, const std::vector<Point> &vtx_)
|
||||
: m_tris_ref(tris_), m_vtx_ref(vtx_), m_is_manifold(true) {};
|
||||
bool is_manifold() { return m_is_manifold; }
|
||||
void operator()(HDS &hds) {
|
||||
// Postcondition: hds is a valid polyhedral surface.
|
||||
CGAL::Polyhedron_incremental_builder_3<HDS> builder(hds, true);
|
||||
builder.begin_surface(m_vtx_ref.size(), m_tris_ref.size() / 3);
|
||||
BOOST_FOREACH(const Point &v, m_vtx_ref)
|
||||
builder.add_vertex(v);
|
||||
for (std::vector<int>::const_iterator itr = m_tris_ref.begin(); itr != m_tris_ref.end(); itr += 3) {
|
||||
if (m_is_manifold = builder.test_facet(itr, itr + 3)) {
|
||||
builder.begin_facet();
|
||||
builder.add_vertex_to_facet(*itr);
|
||||
builder.add_vertex_to_facet(*(itr + 1));
|
||||
builder.add_vertex_to_facet(*(itr + 2));
|
||||
builder.end_facet();
|
||||
}
|
||||
else {
|
||||
// std::cerr << "test_facet failed" << std::endl;
|
||||
builder.end_surface();
|
||||
return;
|
||||
}
|
||||
}
|
||||
builder.end_surface();
|
||||
m_is_manifold = !builder.error();
|
||||
|
||||
HDS hds;
|
||||
CGAL::Polyhedron_incremental_builder_3<HDS> builder(hds, true);
|
||||
builder.begin_surface(vtx.size(), tris.size() / 3);
|
||||
BOOST_FOREACH(const Point &v, vtx)
|
||||
builder.add_vertex(v);
|
||||
for (std::vector<int>::const_iterator itr = tris.begin(); itr != tris.end(); itr += 3) {
|
||||
if (builder.test_facet(itr, itr + 3)) {
|
||||
builder.begin_facet();
|
||||
builder.add_vertex_to_facet(*itr);
|
||||
builder.add_vertex_to_facet(*(itr + 1));
|
||||
builder.add_vertex_to_facet(*(itr + 2));
|
||||
builder.end_facet();
|
||||
}
|
||||
private:
|
||||
const std::vector<int> &m_tris_ref;
|
||||
const std::vector<Point> &m_vtx_ref;
|
||||
bool m_is_manifold;
|
||||
};
|
||||
else {
|
||||
// std::cerr << "test_facet failed" << std::endl;
|
||||
builder.end_surface();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
builder.end_surface();
|
||||
|
||||
PolyhedronSurface p;
|
||||
Build_triangle tri_builder(tris, vtx);
|
||||
p.delegate(tri_builder);
|
||||
|
||||
return tri_builder.is_manifold();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue