The simplest declaration of the polyhedron consists of templating with a cartesian kernel and double number precision: \begin{lstlisting} #include #include typedef CGAL::Cartesian kernel; typedef CGAL::Polyhedron_3 Polyhedron; Polyhedron p; \end{lstlisting} The full template declaration of \poly\ has four template parameters: \begin{lstlisting} template class HalfedgeDS = CGAL::HalfedgeDS_default, class Alloc = CGAL_ALLOCATOR(int)> class Polyhedron_3; \end{lstlisting} The \polytrait\ is a concept defines the point and plane required in the \poly . This concept is a subset of the 3d kernel traits and any CGAL kernel model can be used directly as the template argument. The \polyitem\ is an extended concept of the \hdsitem\ that wraps three item types of vertex, halfedge and face. The \polyitem\ is also required to define the point of vertices and plane of facets. The \hds\ is a class template of a model of the \hds\ concept. It is defined and instansiated based on \polytrait\ and \polyitem . The fourth parameter \lstinline!Alloc! requires a standard allocator for STL container classes. The default container of \poly\ is the linked list. In situations list is prefered, the polyhedron with vector container can be declared as: \begin{lstlisting} typedef CGAL::Cartesian Kernel; typedef CGAL::Polyhedron_3< Kernel, CGAL::Polyhedron_items_3, CGAL::HalfedgeDS_vector> Polyhedron; \end{lstlisting} TODO: pros and cons of list vs vector CGAL provide a \lstinline!Polyhedron_traits_with_normals_3! defining the plane equation of the facet as the vector from \kernel . Following codes demonstrate a polyhderon with normal vector of the facet (and vector container). \begin{lstlisting} typedef CGAL::Cartesian Kernel; typedef Kernel::Vector_3 NormalVector; typedef CGAL::Polyhedron_traits_with_normals_3 Traits; typedef CGAL::Polyhedron_3 Polyhedron; \end{lstlisting} In addition to positions of vertices and plane equations (or normals) of facets, different graphics applications require different attribute associations. For examples, colors of facets, normals of vertices or texture coordinates of corners (halfedges). To tailor the \poly\ to fufill the application requirements, a user-defined model of the concept of the \polyitem\ need to be provided as the second template parameter. See next section.