% +------------------------------------------------------------------------+ % | CGAL Reference Manual: intro.tex % +------------------------------------------------------------------------+ % | Nef 3 reference manual pages % | \RCSdef{\polyhedronRefRev}{$Id$} \RCSdefDate{\polyhedronRefDate}{$Date$} % +------------------------------------------------------------------------+ \chapter{3D Nef Polyhedron} \label{chapterNef3Ref} \ccChapterAuthor{Peter Hachenberger \and Lutz Kettner \and Michael Seel} % +------------------------------------------------------------------------+ \section*{Summary} 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. \subsection*{Classes} \ccRefIdfierPage{CGAL::Nef_polyhedron_3}\\ \ccRefIdfierPage{CGAL::Nef_polyhedron_3::Vertex}\\ \ccRefIdfierPage{CGAL::Nef_polyhedron_3::Halfedge}\\ \ccRefIdfierPage{CGAL::Nef_polyhedron_3::Halffacet}\\ \ccRefIdfierPage{CGAL::Nef_polyhedron_3::Volume}\\ \ccRefIdfierPage{CGAL::Nef_polyhedron_3::SHalfedge}\\ \ccRefIdfierPage{CGAL::Nef_polyhedron_3::SHalfloop}\\ \ccRefIdfierPage{CGAL::Nef_polyhedron_3::SFace}\\ \ccRefIdfierPage{CGAL::Nef_polyhedron_3::SFace_cycle_iterator} %\ccRefIdfierPage{CGAL::Nef_polyhedron_3::Shell_entry_iterator} \subsection*{Functions} \ccThree{ostream&}{}{page 999.} \ccHtmlNoLinks\ccHtmlNoIndex \ccFunction{template ostream& operator<<( ostream& out, const CGAL::Nef_polyhedron_3& N);} {\lcRawHtml{(go there)} \lcTex{\hfill page~\pageref{refNef_polyhedron_operator_leftshift_3}}} \ccHtmlNoLinks\ccHtmlNoIndex \ccFunction{template istream& operator>>( istream& in, CGAL::Nef_polyhedron_3& N);} {\lcRawHtml{(go there)} \lcTex{\hfill page~\pageref{refNef_polyhedron_operator_rightshift_3}}} \lcHtml{\subsection*{Links to the Reference Sections}} %% EOF %%