CGAL 4.7 - 3D Polyhedral Surface: PolyhedronItems_3 Concept Reference

\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.7 - 3D Polyhedral Surface

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Classes
PolyhedronItems_3 Concept Reference
Concepts

## Definition

The `PolyhedronItems_3` concept refines the `HalfedgeDSItems` concept. In addition to the requirements stated there, a model for this concept must fulfill the following requirements for the local PolyhedronItems_3::Vertex_wrapper<Refs,Traits>::Vertex type and PolyhedronItems_3::Face_wrapper<Refs,Traits>::Face type in order to support the point for vertices and the optional plane equation for facets. Note that the items class uses face instead of facet. Only the polyhedral surface renames faces to facets.

Refines:
  `HalfedgeDSItems`

Has Models:

  `CGAL::Polyhedron_items_3`

  `CGAL::Polyhedron_min_items_3`

See Also
  `CGAL::Polyhedron_3<Traits>`
  `HalfedgeDSItems`
  `CGAL::HalfedgeDS_items_2`
  `CGAL::HalfedgeDS_vertex_base<Refs>`
  `CGAL::HalfedgeDS_halfedge_base<Refs>`
  `CGAL::HalfedgeDS_face_base<Refs>`

Example

We define our own items class based on the available `CGAL::HalfedgeDS_face_base` base class for faces. We derive the the `Halfedge_wrapper` without further modifications from the `CGAL::HalfedgeDS_items_2`, replace the `Face_wrapper` definition with our new definition, and also replace the `Vertex_wrapper` with a definition that uses `Point_3` instead of `Point_2` as point type. The result is a model for the `PolyhedronItems_3` concept similar to the available `CGAL::Polyhedron_items_3` class. See also there for another illustrative example.

#include <CGAL/HalfedgeDS_bases.h>
struct My_items : public CGAL::HalfedgeDS_items_2 {
template < class Refs, class Traits>
struct Vertex_wrapper {
typedef typename Traits::Point_3 Point;
typedef CGAL::HalfedgeDS_vertex_base< Refs, CGAL::Tag_true, Point> Vertex;
};
template < class Refs, class Traits>
struct Face_wrapper {
typedef typename Traits::Plane_3 Plane;
typedef CGAL::HalfedgeDS_face_base< Refs, CGAL::Tag_true, Plane> Face;
};
};

## Concepts

concept | Face
| The `PolyhedronItems_3::Face` concept refines the `HalfedgeDSItems::Face` concept. This concept adds the requirement for the support of the geometry. More...
concept | Vertex
| The `PolyhedronItems_3::Vertex` concept refines the `HalfedgeDSItems::Vertex` concept. This concept adds the requirement for the support of the geometry. More...