## CGAL::Polyhedron_traits_3<Kernel>

### Definition

The class Polyhedron_traits_3<Kernel> is a model of the PolyhedronTraits_3 concept. It defines the geometric types and primitive operations used in the polyhedral surface data structure CGAL::Polyhedron_3<PolyhedronTraits_3> in terms of the CGAL Kernel. It keeps a local copy of the kernel which makes it suitable for kernels with local state.

#include <CGAL/Polyhedron_traits_3.h>

### Is Model for the Concept

PolyhedronTraits_3

### Types

Polyhedron_traits_3<Kernel>::Kernel
| the Kernel model.

typedef Kernel::Point_3
| Point_3;
typedef Kernel::Plane_3
| Plane_3;
typedef Kernel::Construct_opposite_plane_3
| Construct_opposite_plane_3;

### Creation

Polyhedron_traits_3<Kernel> traits;
| default constructor, uses Kernel() as local reference to the kernel.
Polyhedron_traits_3<Kernel> traits ( Kernel kernel);
| stores kernel as local reference.

### Operations

Construct_opposite_plane_3
| traits.construct_opposite_plane_3_object ()
|  | forwarded to kernel.

### See Also

CGAL::Polyhedron_traits_with_normals_3<Kernel>

### Implementation

Since the PolyhedronTraits_3 concept is a subset of the 3D kernel concept, this class just forwards the relevant types and access member functions from its template argument. However, it is useful for testing sufficiency of requirements.

### Example

Instantiation of a polyhedral surface with the Cartesian kernel based on double coordinates.

    // file: examples/Polyhedron/polyhedron_prog_simple.C

    #include <CGAL/Simple_cartesian.h>
    #include <CGAL/Polyhedron_3.h>

    typedef CGAL::Simple_cartesian<double>     Kernel;
    typedef CGAL::Polyhedron_3<Kernel>         Polyhedron;
    typedef Polyhedron::Halfedge_handle        Halfedge_handle;

    int main() {
        Polyhedron P;
        Halfedge_handle h = P.make_tetrahedron();
        if ( P.is_tetrahedron(h))
            return 0;
        return 1;
    }