/// \defgroup PkgNef3Ref Reference Manual
///
/// \defgroup PkgNef3IOFunctions I/O Functions
/// \ingroup PkgNef3Ref

/*! Draw.
\cgalInclude{CGAL/draw_nef_3.h}
*/
/// \defgroup PkgDrawNef3 Draw a Nef Polyhedron
/// \ingroup PkgNef3Ref

/*!
\addtogroup PkgNef3Ref
\cgalPkgDescriptionBegin{3D Boolean Operations on Nef Polyhedra,PkgNef3}
\cgalPkgPicture{Nef_3-teaser.png}
\cgalPkgSummaryBegin
\cgalPkgAuthors{Peter Hachenberger and Lutz Kettner}
\cgalPkgDesc{3D Nef polyhedra, are a boundary representation for cell-complexes bounded by halfspaces that supports Boolean operations and topological operations in full generality including unbounded cells, mixed dimensional cells (e.g., isolated vertices and antennas). Nef polyhedra distinguish between open and closed sets and can represent non-manifold geometry.}
\cgalPkgManuals{Chapter_3D_Boolean_Operations_on_Nef_Polyhedra,PkgNef3Ref}
\cgalPkgSummaryEnd
\cgalPkgShortInfoBegin
\cgalPkgSince{3.1}
\cgalPkgDependsOn{\ref PkgNef2\, \ref PkgNefS2}
\cgalPkgBib{cgal:hk-bonp3}
\cgalPkgLicense{\ref licensesGPL  "GPL"}
\cgalPkgDemo{CGAL Lab,CGALlab.zip}
\cgalPkgShortInfoEnd
\cgalPkgDescriptionEnd

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)
transformations 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.

\cgalClassifedRefPages

\cgalCRPSection{Classes}
- `CGAL::Nef_polyhedron_3<Traits>`
- \link CGAL::Nef_polyhedron_3::Vertex `CGAL::Nef_polyhedron_3<Traits>::Vertex` \endlink
- \link CGAL::Nef_polyhedron_3::Halfedge `CGAL::Nef_polyhedron_3<Traits>::Halfedge` \endlink
- \link CGAL::Nef_polyhedron_3::Halffacet `CGAL::Nef_polyhedron_3<Traits>::Halffacet` \endlink
- \link CGAL::Nef_polyhedron_3::Volume `CGAL::Nef_polyhedron_3<Traits>::Volume` \endlink
- \link CGAL::Nef_polyhedron_3::SHalfedge `CGAL::Nef_polyhedron_3<Traits>::SHalfedge` \endlink
- \link CGAL::Nef_polyhedron_3::SHalfloop `CGAL::Nef_polyhedron_3<Traits>::SHalfloop` \endlink
- \link CGAL::Nef_polyhedron_3::SFace `CGAL::Nef_polyhedron_3<Traits>::SFace` \endlink
- \link CGAL::Nef_polyhedron_3::SFace_cycle_iterator `CGAL::Nef_polyhedron_3<Traits>::SFace_cycle_iterator` \endlink

\cgalCRPSection{Functions}
- `CGAL::OFF_to_nef_3()`
- `CGAL::convert_nef_polyhedron_to_polygon_mesh()`
- `CGAL::convert_nef_polyhedron_to_polygon_soup()`
- \link PkgNef3IOFunctions `CGAL::operator<<()` \endlink
- \link PkgNef3IOFunctions `CGAL::operator>>()` \endlink

\cgalCRPSection{Draw a Nef Polyhedron}
- \link PkgDrawNef3 CGAL::draw<Nef3>() \endlink

*/

