% +------------------------------------------------------------------------+
% | Reference manual page: ParameterizationPatchableMesh_3.tex
% +------------------------------------------------------------------------+
% | 29.08.2005   Laurent Saboret, Pierre Alliez
% | Package: Parameterization
% |
\RCSdef{\RCSPatchableMeshAdaptorRev}{$Revision$}
\RCSdefDate{\RCSPatchableMeshAdaptorDate}{$Date$}
% |
%%RefPage: end of header, begin of main body
% +------------------------------------------------------------------------+


\begin{ccRefConcept}{ParameterizationPatchableMesh_3}

%% \ccHtmlCrossLink{}     %% add further rules for cross referencing links
%% \ccHtmlIndexC[concept]{} %% add further index entries


\ccDefinition

% The section below is automatically generated. Do not edit!
%START-AUTO(\ccDefinition)

ParameterizationPatchableMesh\_3 inherits from concept ParameterizationMesh\_3, thus is a concept of a 3D surface mesh.

ParameterizationPatchableMesh\_3 adds the ability to support patches and virtual seams. Patches are a subset of a 3D mesh. Virtual seams are the ability to behave exactly as if the surface was {\em cut} following a certain path.

This mainly means that:\begin{itemize}
\item vertices can be tagged as inside or outside the patch to parameterize.\item the fields specific to parameterizations (index, u, v, is\_parameterized) can be set per {\em corner} (aka half-edge).\end{itemize}


The main purpose of this feature is to allow the parameterization package to parameterize any 3D surface by decomposing it as a list of topological disks.

%END-AUTO(\ccDefinition)


\ccHeading{Design Pattern}

% The section below is automatically generated. Do not edit!
%START-AUTO(\ccHeading{Design Pattern})

ParameterizationPatchableMesh\_3 is an Adaptor \cite{cgal:ghjv-dpero-95}: it changes the interface of a 3D mesh to match the interface expected by class Parameterization\_mesh\_patch\_3.

%END-AUTO(\ccHeading{Design Pattern})


\ccRefines

% The section below is automatically generated. Do not edit!
%START-AUTO(\ccRefines)

ParameterizationPatchableMesh\_3 inherits from concept ParameterizationMesh\_3.

%END-AUTO(\ccRefines)

In addition to the requirements described in the concept MeshAdaptor\_3,
PatchableMeshAdaptor\_3 provides the following:


\ccTypes

% The section below is automatically generated. Do not edit!
%START-AUTO(\ccTypes)



%END-AUTO(\ccTypes)


\ccCreation
\ccCreationVariable{mesh}  %% define variable name used by \ccMethod below

Construction and destruction are undefined.

% The section below is automatically generated. Do not edit!
%START-AUTO(\ccCreation)



%END-AUTO(\ccCreation)


\ccOperations

% The section below is automatically generated. Do not edit!
%START-AUTO(\ccOperations)

\ccMethod{int get_vertex_seaming (Vertex_const_handle vertex) const;}
{
Get/set vertex seaming flag. Default value is undefined.
}
\ccGlue
\ccMethod{void set_vertex_seaming (Vertex_handle vertex, int seaming);}
{
}
\ccGlue
\ccMethod{int get_halfedge_seaming (Vertex_const_handle source, Vertex_const_handle target) const;}
{
Get/set oriented edge's seaming flag, ie position of the oriented edge wrt to the UNIQUE main border.
}
\ccGlue
\ccMethod{void set_halfedge_seaming (Vertex_handle source, Vertex_handle target, int seaming);}
{
}
\ccGlue
\ccMethod{Point_2 get_corners_uv (Vertex_const_handle vertex, Vertex_const_handle prev_vertex, Vertex_const_handle next_vertex) const;}
{
Get/set the 2D position (= (u,v) pair) of corners at the {\em right} of the prev\_vertex -$>$ vertex -$>$ next\_vertex line. Default value is undefined.
}
\ccGlue
\ccMethod{void set_corners_uv (Vertex_handle vertex, Vertex_const_handle prev_vertex, Vertex_const_handle next_vertex, const Point_2 & uv);}
{
}
\ccGlue
\ccMethod{bool are_corners_parameterized (Vertex_const_handle vertex, Vertex_const_handle prev_vertex, Vertex_const_handle next_vertex) const;}
{
Get/set {\em is parameterized} field of corners at the {\em right} of the prev\_vertex -$>$ vertex -$>$ next\_vertex line. Default value is undefined.
}
\ccGlue
\ccMethod{void set_corners_parameterized (Vertex_handle vertex, Vertex_const_handle prev_vertex, Vertex_const_handle next_vertex, bool parameterized);}
{
}
\ccGlue
\ccMethod{int get_corners_index (Vertex_const_handle vertex, Vertex_const_handle prev_vertex, Vertex_const_handle next_vertex) const;}
{
Get/set index of corners at the {\em right} of the prev\_vertex -$>$ vertex -$>$ next\_vertex line. Default value is undefined.
}
\ccGlue
\ccMethod{void set_corners_index (Vertex_handle vertex, Vertex_const_handle prev_vertex, Vertex_const_handle next_vertex, int index);}
{
}
\ccGlue
\ccMethod{int get_corners_tag (Vertex_const_handle vertex, Vertex_const_handle prev_vertex, Vertex_const_handle next_vertex) const;}
{
Get/set all purpose tag of corners at the {\em right} of the prev\_vertex -$>$ vertex -$>$ next\_vertex line. Default value is undefined.
}
\ccGlue
\ccMethod{void set_corners_tag (Vertex_handle vertex, Vertex_const_handle prev_vertex, Vertex_const_handle next_vertex, int tag);}
{
}
\ccGlue

%END-AUTO(\ccOperations)


\ccHasModels

% The section below is automatically generated. Do not edit!
%START-AUTO(\ccHasModels)

Adaptators for Polyhedron\_3 and TDS\_2 with 3D points are provided.

%END-AUTO(\ccHasModels)

\ccRefIdfierPage{CGAL::Parameterization_polyhedron_adaptor_3} \\


\ccSeeAlso

\ccRefIdfierPage{ParameterizationMesh_3}


\end{ccRefConcept}

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

