% +------------------------------------------------------------------------+
% | Reference manual page: Polyhedron_traits_3.tex
% +------------------------------------------------------------------------+
% | 17.03.1999   Lutz Kettner
% | Package: Polyhedron
% | 
\RCSdef{\RCSPolyhedrontraitsRev}{$Id$}
\RCSdefDate{\RCSPolyhedrontraitsDate}{$Date$}
% +------------------------------------------------------------------------+

\ccRefPageBegin

%%RefPage: end of header, begin of main body
% +------------------------------------------------------------------------+


\begin{ccRefClass}{Polyhedron_traits_3<Kernel>}

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

\ccInclude{CGAL/Polyhedron_traits_3.h}

\ccIsModel

\ccRefConceptPage{PolyhedronTraits_3}

\ccTypes
\ccThree{typedef Kernel::Construct_opposite_plane_3;}
    {Construct_opposite_plane_3;;}{}
\ccTwo{Polyhedron_traits_3<Kernel> traits ( Kernel kernel);;;;}{}

\ccNestedType{Kernel}{the \ccc{Kernel} model.}
\ccGlue
\ccTypedef{typedef Kernel::Point_3 Point_3;}{}
\ccGlue
\ccTypedef{typedef Kernel::Plane_3 Plane_3;}{}
\ccGlue
\ccTypedef{typedef Kernel::Construct_opposite_plane_3 
    Construct_opposite_plane_3;}{}

\ccCreation
\ccCreationVariable{traits}  %% choose variable name
%\ccThree{typedef Kernel::Vector_3;}{Plane_3;;}{}
%\ccTwo{CGAL::Polyhedron_traits_3<R> traits;;;}{}

\ccConstructor{Polyhedron_traits_3();}{default constructor, uses 
    \ccc{Kernel()} as local reference to the kernel.}

\ccConstructor{Polyhedron_traits_3( const Kernel& kernel);}{stores \ccc{kernel}
    as local reference.}

\ccOperations
\ccThree{Construct_opposite_plane_3}
    {traits.construct_opposite_plane_3_object();}{}

\ccMethod{Construct_opposite_plane_3 construct_opposite_plane_3_object();}{
    forwarded to \ccc{kernel}.}

\ccSeeAlso

\ccRefIdfierPage{CGAL::Polyhedron_traits_with_normals_3<Kernel>}

\ccImplementation

Since the \ccc{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.

\ccExample

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

\ccIncludeExampleCode{Polyhedron/polyhedron_prog_simple.cpp}

\end{ccRefClass}

% +------------------------------------------------------------------------+
%%RefPage: end of main body, begin of footer
\ccRefPageEnd
% EOF
% +------------------------------------------------------------------------+

