# Chapter 16
3D Nef Polyhedron

Peter Hachenberger, Lutz Kettner, and Michael Seel

## 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.

### Classes

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

### Functions

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)

### Links to the Reference Sections

- Nef_polyhedron_3<Traits>

- Nef_polyhedron_3<Traits>::Vertex

- Nef_polyhedron_3<Traits>::Halfedge

- Nef_polyhedron_3<Traits>::Halffacet

- Nef_polyhedron_3<Traits>::Volume

- Nef_polyhedron_3<Traits>::SHalfedge

- Nef_polyhedron_3<Traits>::SHalfloop

- Nef_polyhedron_3<Traits>::SFace

- Nef_polyhedron_3<Traits>::Halffacet_cycle_iterator

- Nef_polyhedron_3<Traits>::SFace_cycle_iterator

- operator<<

- operator>>

- Qt_widget_Nef_3<Nef_polyhedron_3