Peter Hachenberger, Lutz Kettner, and Michael Seel
A Nef polyhedron is any point set generated from a finite number of open halfspaces by set complement and set intersection operations. In our implementation of Nef polyhedra in 3-dimensional space, we offer a B-rep data structures that is closed under boolean operations and with all their generality. Starting from halfspaces (and also directly from oriented 2-manifolds), we can work with set union, set intersection, set difference, set complement, interior, exterior, boundary, closure, and regularization operations. In essence, we can evaluate a CSG-tree with halfspaces as primitives and convert it into a B-rep representation.
In fact, we work with two data structures; one that represents the local neighborhoods of vertices, which is in itself already a complete description, and a data structure that connects these neighborhoods up to a global data structure with edges, facets, and volumes. We offer a rich interface to investigate these data structures, their different elements and their connectivity. We provide affine (rigid) tranformations and a point location query operation. We have a custom file format for storing and reading Nef polyhedra from files. We offer a simple OpenGL visualization for debugging and illustrations.
CGAL::Nef_polyhedron_3<Traits>
CGAL::Nef_polyhedron_3<Traits>::Vertex
CGAL::Nef_polyhedron_3<Traits>::Halfedge
CGAL::Nef_polyhedron_3<Traits>::Halffacet
CGAL::Nef_polyhedron_3<Traits>::Volume
CGAL::Nef_polyhedron_3<Traits>::SHalfedge
CGAL::Nef_polyhedron_3<Traits>::SHalfloop
CGAL::Nef_polyhedron_3<Traits>::SFace
CGAL::Nef_polyhedron_3<Traits>::SFace_cycle_iterator
template<class Nef_polyhedron_3> | ||
std::size_t | OFF_to_nef_3 ( std::istream& in, Nef_polyhedron_3& N) | |
(go there) | ||
template <class Traits> | ||
ostream& | ostream& out << CGAL::Nef_polyhedron_3<Traits> N | |
(go there) | ||
template <class Traits> | ||
istream& | istream& in >> CGAL::Nef_polyhedron_3<Traits>& N | |
(go there) |