Automatic documentation by generate_reference_manual 1.1:

* Bug fixes:
- Document properly the template parameters of functions. No separate Parameters section.

* Improved formatting of functions and methods:
- Shorter latex code and shorter printed documentation
- Fixed indentation
- Parameter names are in italic instead of bold

* Words surrounded by stars are formatted in bold.
This commit is contained in:
Laurent Saboret 2009-02-26 11:05:12 +00:00
parent 82143450e7
commit d0f63a9ee1
36 changed files with 145 additions and 277 deletions

View File

@ -50,14 +50,14 @@ public:
/// Read access to a matrix coefficient.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - 0 <= row < row_dimension().
/// - 0 <= column < column_dimension().
NT get_coef (int row, int column) const;
/// Write access to a matrix coefficient: a_ij <- a_ij + val.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - 0 <= row < row_dimension().
/// - 0 <= column < column_dimension().
void add_coef(int row, int column, NT value);
@ -68,7 +68,7 @@ public:
/// - Caller can optimize this call by setting 'new_coef' to true
/// if the coefficient does not already exist in the matrix.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - 0 <= i < row_dimension().
/// - 0 <= j < column_dimension().
void set_coef(int row, int column, NT value, bool new_coef = false);

View File

@ -54,7 +54,7 @@ public:
/// The mapping is linear by pieces (linear in each triangle).
/// The result is the (u,v) pair image of each vertex of the 3D surface.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - 'mesh' must be a surface with one connected component and no hole.
/// - 'mesh' must be a triangular mesh.
Error_code parameterize (Adaptor& mesh);

View File

@ -37,7 +37,7 @@ public:
/// Solve the sparse linear system "A*X = B".
/// Return true on success. The solution is then (1/D) * X.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - A.row_dimension() == B.dimension().
/// - A.column_dimension() == X.dimension().
bool linear_solver (const Matrix& A, const Vector& B, Vector& X, NT& D);

View File

@ -51,7 +51,7 @@ public:
/// Read/write access to a vector coefficient.
///
/// Precondition: 0 <= row < dimension().
/// @commentheading Precondition: 0 <= row < dimension().
NT operator[] (int row) const;
NT& operator[] (int row);
};

View File

@ -83,11 +83,9 @@ class \ccc{BorderParameterizer_3} = \ccc{Circular_border_arc_length_parameterize
class \ccc{SparseLinearAlgebraTraits_d} = \ccc{OpenNL::DefaultLinearSolverTraits<typename ParameterizationMesh_3::NT>}$>$ \\
class \ccc{Barycentric_mapping_parameterizer_3};
\ccCommentHeading{Parameters}
\begin{description}
\item[Parameters:]
\begin{description}
\item[\ccc{ParameterizationMesh_3}]3D surface mesh. \item[\ccc{BorderParameterizer_3}]Strategy to parameterize the surface border. \item[\ccc{SparseLinearAlgebraTraits_d}]Traits class to solve a sparse linear system. Note: the system is NOT symmetric because \ccc{Fixed_border_parameterizer_3} does not remove (yet) border vertices from the system. \end{description}
\end{description}
\item \ccc{ParameterizationMesh_3}: 3D surface mesh. \item \ccc{BorderParameterizer_3}: Strategy to parameterize the surface border. \item \ccc{SparseLinearAlgebraTraits_d}: Traits class to solve a sparse linear system. Note: the system is NOT symmetric because \ccc{Fixed_border_parameterizer_3} does not remove (yet) border vertices from the system. \end{description}
%END-AUTO(\ccParameters)
@ -101,14 +99,11 @@ class \ccc{Barycentric_mapping_parameterizer_3};
\ccConstructor{Barycentric_mapping_parameterizer_3(Border_param border_param = Border_param(), Sparse_LA sparse_la = Sparse_LA());}
{
Constructor.
\ccCommentHeading{Parameters}
\begin{description}
\item \ccc{border_param}: Object that maps the surface's border to 2D space. \item \ccc{sparse_la}: Traits object to access a sparse linear system. \end{description}
}
\ccGlue
\begin{description}
\item[Parameters: ]
\begin{description}
\item[\ccc{border_param}]Object that maps the surface's border to 2D space. \item[\ccc{sparse_la}]Traits object to access a sparse linear system. \end{description}
\end{description}
\ccGlue
%END-AUTO(\ccCreation)

View File

@ -82,13 +82,6 @@ class \ccc{Circular_border_arc_length_parameterizer_3};
%END-AUTO(\ccParameters)
\ccTypes
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccTypes)
%END-AUTO(\ccTypes)
\ccCreation
\ccCreationVariable{bp} %% variable name for \ccMethod below

View File

@ -79,13 +79,6 @@ class \ccc{Circular_border_uniform_parameterizer_3};
%END-AUTO(\ccParameters)
\ccTypes
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccTypes)
%END-AUTO(\ccTypes)
\ccCreation
\ccCreationVariable{bp} %% choose variable name for \ccMethod

View File

@ -88,13 +88,6 @@ class \ccc{Discrete_authalic_parameterizer_3};
%END-AUTO(\ccParameters)
\ccTypes
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccTypes)
%END-AUTO(\ccTypes)
\ccCreation
\ccCreationVariable{param} %% variable name used by \ccMethod below
@ -104,14 +97,11 @@ class \ccc{Discrete_authalic_parameterizer_3};
\ccConstructor{Discrete_authalic_parameterizer_3(Border_param border_param = Border_param(), Sparse_LA sparse_la = Sparse_LA());}
{
Constructor.
\ccCommentHeading{Parameters}
\begin{description}
\item \ccc{border_param}: Object that maps the surface's border to 2D space. \item \ccc{sparse_la}: Traits object to access a sparse linear system. \end{description}
}
\ccGlue
\begin{description}
\item[Parameters: ]
\begin{description}
\item[\ccc{border_param}]Object that maps the surface's border to 2D space. \item[\ccc{sparse_la}]Traits object to access a sparse linear system. \end{description}
\end{description}
\ccGlue
%END-AUTO(\ccCreation)

View File

@ -85,22 +85,13 @@ class \ccc{BorderParameterizer_3} = \ccc{Circular_border_arc_length_parameterize
class \ccc{SparseLinearAlgebraTraits_d} = \ccc{OpenNL::DefaultLinearSolverTraits<typename ParameterizationMesh_3::NT>}$>$ \\
class \ccc{Discrete_conformal_map_parameterizer_3};
\ccCommentHeading{Parameters}
\begin{description}
\item[Parameters:]
\begin{description}
\item[\ccc{ParameterizationMesh_3}]3D surface mesh. \item[\ccc{BorderParameterizer_3}]Strategy to parameterize the surface border. \item[\ccc{SparseLinearAlgebraTraits_d}]Traits class to solve a sparse linear system. Note: the system is NOT symmetric because \ccc{Fixed_border_parameterizer_3} does not remove (yet) border vertices from the system. \end{description}
\end{description}
\item \ccc{ParameterizationMesh_3}: 3D surface mesh. \item \ccc{BorderParameterizer_3}: Strategy to parameterize the surface border. \item \ccc{SparseLinearAlgebraTraits_d}: Traits class to solve a sparse linear system. Note: the system is NOT symmetric because \ccc{Fixed_border_parameterizer_3} does not remove (yet) border vertices from the system. \end{description}
%END-AUTO(\ccParameters)
\ccTypes
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccTypes)
%END-AUTO(\ccTypes)
\ccCreation
\ccCreationVariable{param} %% choose variable name for \ccMethod
@ -110,14 +101,11 @@ class \ccc{Discrete_conformal_map_parameterizer_3};
\ccConstructor{Discrete_conformal_map_parameterizer_3(Border_param border_param = Border_param(), Sparse_LA sparse_la = Sparse_LA());}
{
Constructor.
\ccCommentHeading{Parameters}
\begin{description}
\item \ccc{border_param}: Object that maps the surface's border to 2D space. \item \ccc{sparse_la}: Traits object to access a sparse linear system. \end{description}
}
\ccGlue
\begin{description}
\item[Parameters: ]
\begin{description}
\item[\ccc{border_param}]Object that maps the surface's border to 2D space. \item[\ccc{sparse_la}]Traits object to access a sparse linear system. \end{description}
\end{description}
\ccGlue
%END-AUTO(\ccCreation)

View File

@ -114,14 +114,11 @@ Export \ccc{SparseLinearAlgebraTraits_d} template parameter.
\ccConstructor{Fixed_border_parameterizer_3(Border_param border_param = Border_param(), Sparse_LA sparse_la = Sparse_LA());}
{
Constructor.
\ccCommentHeading{Parameters}
\begin{description}
\item \ccc{border_param}: Object that maps the surface's border to 2D space \item \ccc{sparse_la}: Traits object to access a sparse linear system \end{description}
}
\ccGlue
\begin{description}
\item[Parameters: ]
\begin{description}
\item[\ccc{border_param}]Object that maps the surface's border to 2D space \item[\ccc{sparse_la}]Traits object to access a sparse linear system \end{description}
\end{description}
\ccGlue
%END-AUTO(\ccCreation)
@ -135,7 +132,7 @@ Constructor.
{
[virtual] \\
Compute a one-to-one mapping from a triangular 3D surface \ccc{mesh} to a piece of the 2D space. The mapping is linear by pieces (linear in each triangle). The result is the (u,v) pair image of each vertex of the 3D surface.
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item \ccc{mesh} must be a surface with one connected component.\item \ccc{mesh} must be a triangular mesh.\item the mesh border must be mapped onto a convex polygon. \end{itemize}
}
\ccGlue
@ -150,7 +147,7 @@ Check parameterize() preconditions:\begin{itemize}
{
[protected] \\
Initialize A, Bu and Bv after border parameterization. Fill the border vertices' lines in both linear systems: {\em u = constant} and {\em v = constant}.
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item vertices must be indexed.\item A, Bu and Bv must be allocated.\item border vertices must be parameterized. \end{itemize}
}
\ccGlue
@ -165,7 +162,7 @@ Compute \ccc{w_ij} = (i, j) coefficient of matrix A for j neighbor vertex of i.
[protected, virtual] \\
Compute the line i of matrix A for i inner vertex:\begin{itemize}
\item call \ccc{compute_w_ij}() to compute the A coefficient \ccc{w_ij} for each neighbor \ccc{v_j}.\item compute \ccc{w_ii} = - sum of \ccc{w_ijs}.\end{itemize}
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item vertices must be indexed.\item vertex i musn't be already parameterized.\item line i of A must contain only zeros. \end{itemize}
}
\ccGlue

View File

@ -113,14 +113,11 @@ Export \ccc{SparseLinearAlgebraTraits_d} template parameter.
\ccConstructor{LSCM_parameterizer_3(Border_param border_param = Border_param(), Sparse_LA sparse_la = Sparse_LA());}
{
Constructor.
\ccCommentHeading{Parameters}
\begin{description}
\item \ccc{border_param}: Object that maps the surface's border to 2D space \item \ccc{sparse_la}: Traits object to access a sparse linear system \end{description}
}
\ccGlue
\begin{description}
\item[Parameters: ]
\begin{description}
\item[\ccc{border_param}]Object that maps the surface's border to 2D space \item[\ccc{sparse_la}]Traits object to access a sparse linear system \end{description}
\end{description}
\ccGlue
%END-AUTO(\ccCreation)
@ -134,7 +131,7 @@ Constructor.
{
[virtual] \\
Compute a one-to-one mapping from a triangular 3D surface \ccc{mesh} to a piece of the 2D space. The mapping is linear by pieces (linear in each triangle). The result is the (u,v) pair image of each vertex of the 3D surface.
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item \ccc{mesh} must be a surface with one connected component.\item \ccc{mesh} must be a triangular mesh. \end{itemize}
}
\ccGlue

View File

@ -89,14 +89,14 @@ Return the matrix number of columns.
\ccMethod{NT get_coef(int row, int column) const;}
{
Read access to a matrix coefficient.
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item 0 $<$= row $<$ \ccc{row_dimension}().\item 0 $<$= column $<$ \ccc{column_dimension}(). \end{itemize}
}
\ccGlue
\ccMethod{void add_coef(int row, int column, NT value);}
{
Write access to a matrix coefficient: \ccc{a_ij} $<$- \ccc{a_ij} + val.
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item 0 $<$= row $<$ \ccc{row_dimension}().\item 0 $<$= column $<$ \ccc{column_dimension}(). \end{itemize}
}
\ccGlue
@ -105,7 +105,7 @@ Preconditions:\begin{itemize}
Write access to a matrix coefficient: \ccc{a_ij} $<$- val.
Optimization:\begin{itemize}
\item Caller can optimize this call by setting \ccc{new_coef} to true if the coefficient does not already exist in the matrix.\end{itemize}
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item 0 $<$= i $<$ \ccc{row_dimension}().\item 0 $<$= j $<$ \ccc{column_dimension}(). \end{itemize}
}
\ccGlue

View File

@ -88,13 +88,6 @@ class \ccc{Mean_value_coordinates_parameterizer_3};
%END-AUTO(\ccParameters)
\ccTypes
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccTypes)
%END-AUTO(\ccTypes)
\ccCreation
\ccCreationVariable{param} %% variable name used by \ccMethod below
@ -104,14 +97,11 @@ class \ccc{Mean_value_coordinates_parameterizer_3};
\ccConstructor{Mean_value_coordinates_parameterizer_3(Border_param border_param = Border_param(), Sparse_LA sparse_la = Sparse_LA());}
{
Constructor.
\ccCommentHeading{Parameters}
\begin{description}
\item \ccc{border_param}: Object that maps the surface's border to 2D space. \item \ccc{sparse_la}: Traits object to access a sparse linear system. \end{description}
}
\ccGlue
\begin{description}
\item[Parameters: ]
\begin{description}
\item[\ccc{border_param}]Object that maps the surface's border to 2D space. \item[\ccc{sparse_la}]Traits object to access a sparse linear system. \end{description}
\end{description}
\ccGlue
%END-AUTO(\ccCreation)

View File

@ -59,13 +59,6 @@ In addition to the requirements described in the concept \ccc{ParameterizationMe
\ccc{ParameterizationPatchableMesh_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

View File

@ -68,11 +68,8 @@ template$<$ \\
class \ccc{ParameterizationPatchableMesh_3}$>$ \\
class \ccc{Parameterization_mesh_patch_3};
\begin{description}
\item[Parameters:]
\begin{description}
\item[\ccc{ParameterizationPatchableMesh_3}]3D surface mesh. \end{description}
\end{description}
\ccCommentHeading{Parameters}
\ccc{ParameterizationPatchableMesh_3}: 3D surface mesh.
%END-AUTO(\ccParameters)
@ -221,11 +218,11 @@ The decorated mesh.
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccCreation)
\ccConstructor{template<class InputIterator>Parameterization_mesh_patch_3(Adaptor& mesh, InputIterator first_seam_vertex, InputIterator end_seam_vertex);}
\ccConstructor{template<class InputIterator> Parameterization_mesh_patch_3(Adaptor& mesh, InputIterator first_seam_vertex, InputIterator end_seam_vertex);}
{
Create a Decorator for an existing \ccc{ParameterizationPatchableMesh_3} mesh. The input mesh can be of any genus, but it has to come with a {\em seam} that describes the border of a topological disc. This border may be an actual border of the mesh or a virtual border.
Preconditions:\begin{itemize}
\item \ccc{first_seam_vertex} -$>$ \ccc{end_seam_vertex} defines the outer seam, i.e. \ccc{Parameterization_mesh_patch_3} will export the {\em right} of the seam.\item The {\em seam} is given as a container of \ccc{Adaptor::Vertex_handle} elements.\item The {\em seam} is implicitely a loop. The first vertex should $\ast$not$\ast$ be duplicated at the end. \end{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item \ccc{first_seam_vertex} -$>$ \ccc{end_seam_vertex} defines the outer seam, i.e. \ccc{Parameterization_mesh_patch_3} will export the {\em right} of the seam.\item The {\em seam} is given as a container of \ccc{Adaptor::Vertex_handle} elements.\item The {\em seam} is implicitely a loop. The first vertex should {\bf not} be duplicated at the end. \end{itemize}
}
\ccGlue
@ -243,11 +240,9 @@ non-mutable counterpart methods, i.e. \ccc{const}, returning a \ccc{const_handle
\ccMethod{Adaptor& get_decorated_mesh();}
{
\ccCommentHeading{Returns} the decorated mesh.
}
\ccGlue
\begin{description}
\item[Returns:]the decorated mesh. \end{description}
\ccGlue
\ccMethod{const Adaptor& get_decorated_mesh() const;}
{
}
@ -308,16 +303,11 @@ Get iterator over past-the-end vertex of mesh's main border (aka {\em seam}).
\ccGlue
\ccMethod{std::list<Vertex_handle> get_border(Vertex_handle seed_vertex);}
{
\ccCommentHeading{Returns} the border containing \ccc{seed_vertex} (or an empty list if not found).
\ccCommentHeading{Parameters}
\ccc{seed_vertex}: a border vertex.
}
\ccGlue
\begin{description}
\item[Returns:]the border containing \ccc{seed_vertex} (or an empty list if not found). \end{description}
\begin{description}
\item[Parameters:]
\begin{description}
\item[\ccc{seed_vertex}]a border vertex. \end{description}
\end{description}
\ccGlue
\ccMethod{Facet_iterator mesh_facets_begin();}
{
Get iterator over first facet of mesh.

View File

@ -57,13 +57,10 @@ Export the type of mesh to parameterize.
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccConstants)
\ccEnum{enum Error_code { OK, ERROR_EMPTY_MESH, ERROR_NON_TRIANGULAR_MESH, ERROR_NO_TOPOLOGICAL_DISC, ERROR_BORDER_TOO_SHORT, ERROR_NON_CONVEX_BORDER, ERROR_CANNOT_SOLVE_LINEAR_SYSTEM, ERROR_NO_1_TO_1_MAPPING, ERROR_OUT_OF_MEMORY, ERROR_WRONG_PARAMETER };}
\ccEnum{enum Error_code { OK, ERROR_EMPTY_MESH, ERROR_NON_TRIANGULAR_MESH, ERROR_NO_TOPOLOGICAL_DISC, ERROR_BORDER_TOO_SHORT, ERROR_NON_CONVEX_BORDER, ERROR_CANNOT_SOLVE_LINEAR_SYSTEM, ERROR_NO_1_TO_1_MAPPING, ERROR_OUT_OF_MEMORY, ERROR_WRONG_PARAMETER };}
{
List of errors detected by this package.
}
\ccGlue
\begin{description}
\item[Enumeration values: ]
\ccCommentHeading{Enumeration values}
\begin{description}
\item[OK
]Success. \item[\ccc{ERROR_EMPTY_MESH}
@ -76,7 +73,7 @@ List of errors detected by this package.
]Parameterization failed: no one-to-one mapping. \item[\ccc{ERROR_OUT_OF_MEMORY}
]Not enough memory. \item[\ccc{ERROR_WRONG_PARAMETER}
]A method received an unexpected parameter. \end{description}
\end{description}
}
\ccGlue
%END-AUTO(\ccConstants)
@ -100,7 +97,7 @@ Construction and destruction are undefined.
\ccMethod{Error_code parameterize(Adaptor& mesh);}
{
Compute a one-to-one mapping from a triangular 3D surface \ccc{mesh} to a piece of the 2D space. The mapping is linear by pieces (linear in each triangle). The result is the (u,v) pair image of each vertex of the 3D surface.
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item \ccc{mesh} must be a surface with one connected component and no hole.\item \ccc{mesh} must be a triangular mesh. \end{itemize}
}
\ccGlue

View File

@ -196,13 +196,10 @@ Export \ccc{ParameterizationMesh_3} template parameter.
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccConstants)
\ccEnum{enum Error_code { OK, ERROR_EMPTY_MESH, ERROR_NON_TRIANGULAR_MESH, ERROR_NO_TOPOLOGICAL_DISC, ERROR_BORDER_TOO_SHORT, ERROR_NON_CONVEX_BORDER, ERROR_CANNOT_SOLVE_LINEAR_SYSTEM, ERROR_NO_1_TO_1_MAPPING, ERROR_OUT_OF_MEMORY, ERROR_WRONG_PARAMETER };}
\ccEnum{enum Error_code { OK, ERROR_EMPTY_MESH, ERROR_NON_TRIANGULAR_MESH, ERROR_NO_TOPOLOGICAL_DISC, ERROR_BORDER_TOO_SHORT, ERROR_NON_CONVEX_BORDER, ERROR_CANNOT_SOLVE_LINEAR_SYSTEM, ERROR_NO_1_TO_1_MAPPING, ERROR_OUT_OF_MEMORY, ERROR_WRONG_PARAMETER };}
{
List of errors detected by this package.
}
\ccGlue
\begin{description}
\item[Enumeration values: ]
\ccCommentHeading{Enumeration values}
\begin{description}
\item[OK
]Success. \item[\ccc{ERROR_EMPTY_MESH}
@ -215,7 +212,7 @@ List of errors detected by this package.
]Parameterization failed: no one-to-one mapping. \item[\ccc{ERROR_OUT_OF_MEMORY}
]Not enough memory. \item[\ccc{ERROR_WRONG_PARAMETER}
]A method received an unexpected parameter. \end{description}
\end{description}
}
\ccGlue
%END-AUTO(\ccConstants)
@ -238,7 +235,7 @@ List of errors detected by this package.
{
[pure virtual] \\
Compute a one-to-one mapping from a 3D surface \ccc{mesh} to a piece of the 2D space. The mapping is linear by pieces (linear in each triangle). The result is the (u,v) pair image of each vertex of the 3D surface.
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item \ccc{mesh} must be a surface with one connected component.\item \ccc{mesh} must be a triangular mesh. \end{itemize}
}
\ccGlue
@ -246,16 +243,11 @@ Preconditions:\begin{itemize}
{
[static] \\
Get message (in English) corresponding to an error code
\ccCommentHeading{Parameters}
\ccc{error_code}: The code returned by parameterize()
\ccCommentHeading{Returns} The string describing the error code
}
\ccGlue
\begin{description}
\item[Parameters:]
\begin{description}
\item[\ccc{error_code}]The code returned by parameterize() \end{description}
\end{description}
\begin{description}
\item[Returns:]The string describing the error code \end{description}
\ccGlue
%END-AUTO(\ccOperations)

View File

@ -82,7 +82,7 @@ Default constructor.
\ccMethod{bool linear_solver(const Matrix& A, const Vector& B, Vector& X, NT& D);}
{
Solve the sparse linear system {\em A$\ast$X = B}. Return true on success. The solution is then (1/D) $\ast$ X.
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item A.\ccc{row_dimension}() == B.dimension().\item A.\ccc{column_dimension}() == X.dimension(). \end{itemize}
}
\ccGlue

View File

@ -12,7 +12,7 @@
% +------------------------------------------------------------------------+
\begin{ccRefClass}{Square_border_arc_length_parameterizer_3<ParameterizationMesh_3>}
\begin{ccRefClass}{Square_border_arc_length_parameterizer_3<ParameterizationMesh_3>}
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
%% \ccHtmlIndexC[class]{} %% add further index entries
@ -81,13 +81,6 @@ class \ccc{Square_border_arc_length_parameterizer_3};
%END-AUTO(\ccParameters)
\ccTypes
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccTypes)
%END-AUTO(\ccTypes)
\ccCreation
\ccCreationVariable{bp} %% variable name for \ccMethod

View File

@ -81,13 +81,6 @@ class \ccc{Square_border_uniform_parameterizer_3};
%END-AUTO(\ccParameters)
\ccTypes
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccTypes)
%END-AUTO(\ccTypes)
\ccCreation
\ccCreationVariable{bp} %% variable name for \ccMethod

View File

@ -58,6 +58,9 @@ template$<$ \\
class T$>$ \\
struct \ccc{Taucs_matrix};
\ccCommentHeading{Parameters}
\ccc{T}: Number type. Tested with T = \ccc{taucs_single} or \ccc{taucs_double}. May also work with T = \ccc{taucs_dcomplex} and \ccc{taucs_scomplex}.
%END-AUTO(\ccParameters)
@ -83,25 +86,20 @@ struct \ccc{Taucs_matrix};
\ccConstructor{Taucs_matrix(int dim, bool is_symmetric = false);}
{
Create a square matrix initialized with zeros.
\ccCommentHeading{Parameters}
\begin{description}
\item \ccc{dim}: Matrix dimension. \item \ccc{is_symmetric}: Symmetric/hermitian? \end{description}
}
\ccGlue
\begin{description}
\item[Parameters: ]
\begin{description}
\item[dim]Matrix dimension. \item[\ccc{is_symmetric}]Symmetric/hermitian? \end{description}
\end{description}
\ccGlue
\ccConstructor{Taucs_matrix(int rows, int columns, bool is_symmetric = false);}
{
Create a rectangular matrix initialized with zeros.
\ccPrecond rows == columns if \ccc{is_symmetric} is true.
\ccCommentHeading{Parameters}
\begin{description}
\item \ccc{rows}: Number of rows. \item \ccc{columns}: Number of columns. \item \ccc{is_symmetric}: Symmetric/hermitian? \end{description}
}
\ccGlue
\begin{description}
\item[Parameters: ]
\begin{description}
\item[rows]Matrix dimensions. \item[\ccc{is_symmetric}]Symmetric/hermitian? \end{description}
\end{description}
\ccGlue
%END-AUTO(\ccCreation)
@ -124,7 +122,7 @@ Return the matrix number of columns.
\ccMethod{T get_coef(int i, int j) const;}
{
Read access to a matrix coefficient.
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item 0 $<$= i $<$ \ccc{row_dimension}().\item 0 $<$= j $<$ \ccc{column_dimension}(). \end{itemize}
}
\ccGlue
@ -133,7 +131,7 @@ Preconditions:\begin{itemize}
Write access to a matrix coefficient: \ccc{a_ij} $<$- val.
Optimizations:\begin{itemize}
\item For symmetric matrices, \ccc{Taucs_matrix} stores only the lower triangle \ccc{set_coef}() does nothing if (i, j) belongs to the upper triangle.\item Caller can optimize this call by setting \ccc{new_coef} to true if the coefficient does not already exist in the matrix.\end{itemize}
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item 0 $<$= i $<$ \ccc{row_dimension}().\item 0 $<$= j $<$ \ccc{column_dimension}(). \end{itemize}
}
\ccGlue
@ -141,7 +139,7 @@ Preconditions:\begin{itemize}
{
Write access to a matrix coefficient: \ccc{a_ij} $<$- \ccc{a_ij} + val.
Optimization: For symmetric matrices, \ccc{Taucs_matrix} stores only the lower triangle \ccc{add_coef}() does nothing if (i, j) belongs to the upper triangle.
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item 0 $<$= i $<$ \ccc{row_dimension}().\item 0 $<$= j $<$ \ccc{column_dimension}(). \end{itemize}
}
\ccGlue

View File

@ -103,7 +103,7 @@ Create a TAUCS sparse linear solver for GENERAL (aka unsymmetric) matrices.
\ccMethod{bool linear_solver(const Matrix& A, const Vector& B, Vector& X, NT& D);}
{
Solve the sparse linear system {\em A$\ast$X = B}. Return true on success. The solution is then (1/D) $\ast$ X.
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item A.\ccc{row_dimension}() == B.dimension().\item A.\ccc{column_dimension}() == X.dimension(). \end{itemize}
}
\ccGlue

View File

@ -23,7 +23,7 @@
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccDefinition)
The class \ccc{Taucs_symmetric_matrix} is a C++ wrapper around a TAUCS $\ast$symmetric$\ast$ matrix (type \ccc{taucs_ccs_matrix}).
The class \ccc{Taucs_symmetric_matrix} is a C++ wrapper around a TAUCS {\bf symmetric} matrix (type \ccc{taucs_ccs_matrix}).
Symmetric matrices store only the lower triangle.
@ -68,6 +68,9 @@ template$<$ \\
class T$>$ \\
struct \ccc{Taucs_symmetric_matrix};
\ccCommentHeading{Parameters}
\ccc{T}: Number type. Tested with T = \ccc{taucs_single} or \ccc{taucs_double}. May also work with T = \ccc{taucs_dcomplex} and \ccc{taucs_scomplex}.
%END-AUTO(\ccParameters)
@ -92,37 +95,24 @@ struct \ccc{Taucs_symmetric_matrix};
\ccConstructor{Taucs_symmetric_matrix(int dim);}
{
Create a square SYMMETRIC matrix initialized with zeros. The max number of non 0 elements in the matrix is automatically computed.
Create a square {\bf symmetric} matrix initialized with zeros.
\ccCommentHeading{Parameters}
\ccc{dim}: Matrix dimension.
}
\ccGlue
\begin{description}
\item[Parameters: ]
\begin{description}
\item[dim]Matrix dimension. \end{description}
\end{description}
\ccGlue
\ccConstructor{Taucs_symmetric_matrix(int rows, int columns);}
{
Create a square SYMMETRIC matrix initialized with zeros.
Create a square {\bf symmetric} matrix initialized with zeros.
\ccPrecond rows == columns.
\ccCommentHeading{Parameters}
\begin{description}
\item \ccc{rows}: Number of rows. \item \ccc{columns}: Number of columns. \end{description}
}
\ccGlue
\begin{description}
\item[Parameters: ]
\begin{description}
\item[rows]Matrix dimensions. \end{description}
\end{description}
\ccGlue
%END-AUTO(\ccCreation)
\ccOperations
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccOperations)
%END-AUTO(\ccOperations)
\ccSeeAlso
\ccRefIdfierPage{CGAL::Taucs_solver_traits<T>} \\

View File

@ -89,14 +89,11 @@ class \ccc{Taucs_symmetric_solver_traits};
\ccConstructor{Taucs_symmetric_solver_traits(const char * options[] = NULL, const void * arguments[] = NULL);}
{
Create a TAUCS sparse linear solver for symmetric positive definite matrices. The default solver is the Multifrontal Supernodal Cholesky Factorization. See \ccc{taucs_linsolve}() documentation for the meaning of the \ccc{options} and \ccc{arguments} parameters.
\ccCommentHeading{Parameters}
\begin{description}
\item \ccc{options}: must be persistent \item \ccc{arguments}: must be persistent \end{description}
}
\ccGlue
\begin{description}
\item[Parameters: ]
\begin{description}
\item[options]must be persistent \item[arguments]must be persistent \end{description}
\end{description}
\ccGlue
%END-AUTO(\ccCreation)
@ -109,7 +106,7 @@ Create a TAUCS sparse linear solver for symmetric positive definite matrices. Th
\ccMethod{bool linear_solver(const Matrix& A, const Vector& B, Vector& X, NT& D);}
{
Solve the sparse linear system {\em A$\ast$X = B}. Return true on success. The solution is then (1/D) $\ast$ X.
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item A.\ccc{row_dimension}() == B.dimension().\item A.\ccc{column_dimension}() == X.dimension(). \end{itemize}
}
\ccGlue

View File

@ -97,7 +97,7 @@ Copy constructor.
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccOperations)
\ccMethod{Taucs_vector& operator=(const Taucs_vector<T>& toCopy);}
\ccMethod{Taucs_vector& operator =(const Taucs_vector<T>& toCopy);}
{
operator =()
}
@ -110,7 +110,7 @@ Return the vector's number of coefficients.
\ccMethod{T operator[](int i) const;}
{
Read/write access to a vector coefficient.
Preconditions: 0 $<$= i $<$ dimension().
\ccCommentHeading{Preconditions} 0 $<$= i $<$ dimension().
}
\ccGlue
\ccMethod{T& operator[](int i);}

View File

@ -74,7 +74,7 @@ Copy constructor.
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccOperations)
\ccMethod{Vector& operator=(const Vector& toCopy);}
\ccMethod{Vector& operator =(const Vector& toCopy);}
{
operator =()
}
@ -87,7 +87,7 @@ Return the vector's number of coefficients.
\ccMethod{NT operator[](int row) const;}
{
Read/write access to a vector coefficient.
Precondition: 0 $<$= row $<$ dimension().
\ccPrecond 0 $<$= row $<$ dimension().
}
\ccGlue
\ccMethod{NT& operator[](int row);}

View File

@ -33,57 +33,30 @@ of Floater Mean Value Coordinates.
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccDefinition)
\ccFunction{Parameterizer_traits_3<ParameterizationMesh_3>::Error_code parameterize(ParameterizationMesh_3& mesh);}
\ccFunction{template<class ParameterizationMesh_3> Parameterizer_traits_3<ParameterizationMesh_3>::Error_code parameterize(ParameterizationMesh_3& mesh);}
{
Compute a one-to-one mapping from a 3D triangle surface \ccc{mesh} to a 2D circle, using Floater Mean Value Coordinates algorithm. A one-to-one mapping is guaranteed.
The mapping is piecewise linear on the input mesh triangles. The result is a (u,v) pair of parameter coordinates for each vertex of the input mesh.
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item \ccc{mesh} must be a surface with one connected component.\item \ccc{mesh} must be a triangular mesh. \end{itemize}
\ccCommentHeading{Parameters}
\ccc{mesh}: 3D mesh, model of \ccc{ParameterizationMesh_3} concept
}
\ccGlue
\begin{description}
\item[Parameters: ]
\begin{description}
\item[mesh]3D mesh, model of \ccc{ParameterizationMesh_3} concept \end{description}
\end{description}
\ccGlue
\ccFunction{Parameterizer_traits_3<ParameterizationMesh_3>::Error_code parameterize(ParameterizationMesh_3& mesh, ParameterizerTraits_3 parameterizer);}
\ccFunction{template<class ParameterizationMesh_3, class ParameterizerTraits_3> Parameterizer_traits_3<ParameterizationMesh_3>::Error_code parameterize(ParameterizationMesh_3& mesh, ParameterizerTraits_3 parameterizer);}
{
Compute a one-to-one mapping from a 3D triangle surface \ccc{mesh} to a simple 2D domain. The mapping is piecewise linear on the triangle mesh. The result is a pair (u,v) of parameter coordinates for each vertex of the input mesh.
One-to-one mapping may be guaranteed or not, depending on the chosen \ccc{ParametizerTraits_3} algorithm.
Preconditions:\begin{itemize}
\ccCommentHeading{Preconditions}\begin{itemize}
\item \ccc{mesh} must be a surface with one connected component.\item \ccc{mesh} must be a triangular mesh.\item the mesh border must be mapped onto a convex polygon (for fixed border parameterizations). \end{itemize}
\ccCommentHeading{Parameters}
\begin{description}
\item \ccc{mesh}: 3D mesh, model of \ccc{ParameterizationMesh_3} \item \ccc{parameterizer}: Parameterization method for \ccc{mesh} \end{description}
}
\ccGlue
\begin{description}
\item[Parameters: ]
\begin{description}
\item[mesh]3D mesh, model of \ccc{ParameterizationMesh_3} \item[parameterizer]Parameterization method for \ccc{mesh} \end{description}
\end{description}
\ccGlue
%END-AUTO(\ccDefinition)
\ccParameters
The full template declarations are:
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccParameters)
template$<$ \\
class \ccc{ParameterizationMesh_3}$>$ \\
\ccc{Parameterizer_traits_3<ParameterizationMesh_3>::Error_code} \\
parameterize (\ccc{ParameterizationMesh_3}\& mesh); \\
\\
template$<$ \\
class \ccc{ParameterizationMesh_3}, \\
class \ccc{ParameterizerTraits_3}$>$ \\
\ccc{Parameterizer_traits_3<ParameterizationMesh_3>::Error_code} \\
parameterize (\ccc{ParameterizationMesh_3}\& mesh, \ccc{ParameterizerTraits_3} parameterizer); \\
%END-AUTO(\ccParameters)
\ccSeeAlso
\ccRefIdfierPage{CGAL::Barycentric_mapping_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>} \\

View File

@ -151,7 +151,7 @@ public:
/// The mapping is linear by pieces (linear in each triangle).
/// The result is the (u,v) pair image of each vertex of the 3D surface.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - 'mesh' must be a surface with one connected component.
/// - 'mesh' must be a triangular mesh.
/// - the mesh border must be mapped onto a convex polygon.
@ -169,7 +169,7 @@ protected:
/// Fill the border vertices' lines in both linear systems:
/// "u = constant" and "v = constant".
///
/// Preconditions:
/// @commentheading Preconditions:
/// - vertices must be indexed.
/// - A, Bu and Bv must be allocated.
/// - border vertices must be parameterized.
@ -187,7 +187,7 @@ protected:
/// - call compute_w_ij() to compute the A coefficient w_ij for each neighbor v_j.
/// - compute w_ii = - sum of w_ijs.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - vertices must be indexed.
/// - vertex i musn't be already parameterized.
/// - line i of A must contain only zeros.

View File

@ -148,7 +148,7 @@ public:
/// The mapping is linear by pieces (linear in each triangle).
/// The result is the (u,v) pair image of each vertex of the 3D surface.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - 'mesh' must be a surface with one connected component.
/// - 'mesh' must be a triangular mesh.
virtual Error_code parameterize(Adaptor& mesh);
@ -163,7 +163,7 @@ private:
/// Initialize "A*X = B" linear system after
/// (at least two) border vertices are parameterized.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - vertices must be indexed.
/// - X and B must be allocated and empty.
/// - (at least two) border vertices must be parameterized.
@ -178,7 +178,7 @@ private:
/// Create two lines in the linear system per triangle (one for u, one for v).
///
/// Preconditions:
/// @commentheading Preconditions:
/// - vertices must be indexed.
Error_code setup_triangle_relations(LeastSquaresSolver& solver,
const Adaptor& mesh,

View File

@ -370,9 +370,9 @@ public:
}
private:
/// Update the inherited vertex handle
/// Update the inherited vertex handle.
///
/// Precondition: m_adaptor_circulator and m_center are valid
/// @commentheading Precondition: m_adaptor_circulator and m_center are valid.
void update_inherited_handle()
{
Vertex_handle current_decorated_vertex = NULL;
@ -566,9 +566,9 @@ public:
}
private:
/// Update the inherited vertex handle
/// Update the inherited vertex handle.
///
/// Precondition: m_adaptor_circulator is valid
/// @commentheading Precondition: m_adaptor_circulator is valid.
void update_inherited_handle()
{
Vertex_handle current_decorated_vertex = NULL;

View File

@ -157,7 +157,7 @@ public:
/// describes the border of a topological disc. This border may be an actual
/// border of the mesh or a virtual border.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - first_seam_vertex -> end_seam_vertex defines the outer seam,
/// i.e. Parameterization_mesh_patch_3 will export the "right" of the seam.
/// - The "seam" is given as a container of Adaptor::Vertex_handle elements.
@ -600,7 +600,7 @@ private:
/// w.r.t. the first_seam_vertex -> end_seam_vertex border
/// (outer seam edges are marked BORDER).
///
/// Preconditions:
/// @commentheading Preconditions:
/// - first_seam_vertex -> end_seam_vertex defines the outer seam,
/// i.e. Parameterization_mesh_patch_3 will export the "right" of the seam.
/// - The "seam" is given as a container of Adaptor::Vertex_handle elements.
@ -694,7 +694,7 @@ private:
/// Set the seaming flag of inner vertices and edges to INNER
/// by filling the topological disk.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - Inner vertices are marked as OUTER, seam vertices as BORDER.
/// - Inner edges are marked as OUTER,
/// outer seam edges as BORDER, inner seam edges as INNER.
@ -746,7 +746,7 @@ private:
// Check that the seam is valid, i.e. that the cut mesh is 2-manifold.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - first_seam_vertex -> end_seam_vertex defines the outer seam,
/// i.e. Parameterization_mesh_patch_3 will export the "right" of the seam.
/// - The "seam" is given as a container of Adaptor::Vertex_handle elements.
@ -841,7 +841,7 @@ private:
/// Create a patch vertex from an adaptor vertex + one of its neighbors.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - adaptor_neighbor is a neighbor of adaptor_vertex.
/// - (adaptor_vertex, adaptor_neighbor) must NOT be a seam (non-oriented) edge.
Vertex_const_handle get_decorated_vertex_from_inner_edge(
@ -903,7 +903,7 @@ private:
/// Create a patch vertex from a border/seam adaptor vertex
/// + one of its neighbors on the seam.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - adaptor_vertex is a border/seam vertex.
/// - [first_cw_neighbor, last_cw_neighbor] defines the range
/// of the valid neighbors of adaptor_vertex (included) or are NULL.

View File

@ -112,7 +112,7 @@ public:
/// The mapping is linear by pieces (linear in each triangle).
/// The result is the (u,v) pair image of each vertex of the 3D surface.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - 'mesh' must be a surface with one connected component.
/// - 'mesh' must be a triangular mesh.
virtual Error_code parameterize (Adaptor& mesh) = 0;

View File

@ -43,8 +43,11 @@ template<class T> struct Taucs_traits;
///
/// @heading Is Model for the Concepts: Model of the SparseLinearAlgebraTraits_d::Matrix concept.
///
template<class T> // Tested with T = float or double
// May also work with T = taucs_dcomplex and taucs_scomplex
/// @heading Parameters:
/// @param T Number type. Tested with T = taucs_single or taucs_double.
/// May also work with T = taucs_dcomplex and taucs_scomplex.
template<class T>
struct Taucs_matrix
{
// Public types
@ -161,8 +164,10 @@ public:
}
/// Create a rectangular matrix initialized with zeros.
Taucs_matrix(int rows, ///< Matrix dimensions.
int columns,
///
/// @commentheading Precondition: rows == columns if is_symmetric is true.
Taucs_matrix(int rows, ///< Number of rows.
int columns, ///< Number of columns.
bool is_symmetric = false) ///< Symmetric/hermitian?
{
CGAL_precondition(rows > 0);
@ -199,7 +204,7 @@ public:
/// Read access to a matrix coefficient.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - 0 <= i < row_dimension().
/// - 0 <= j < column_dimension().
T get_coef(int i, int j) const
@ -227,7 +232,7 @@ public:
/// - Caller can optimize this call by setting 'new_coef' to true
/// if the coefficient does not already exist in the matrix.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - 0 <= i < row_dimension().
/// - 0 <= j < column_dimension().
void set_coef(int i, int j, T val, bool new_coef = false)
@ -260,7 +265,7 @@ public:
/// For symmetric matrices, Taucs_matrix stores only the lower triangle
/// add_coef() does nothing if (i, j) belongs to the upper triangle.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - 0 <= i < row_dimension().
/// - 0 <= j < column_dimension().
void add_coef(int i, int j, T val)
@ -403,9 +408,12 @@ private:
/// Symmetric matrices store only the lower triangle.
///
/// @heading Is Model for the Concepts: Model of the SparseLinearAlgebraTraits_d::Matrix concept.
///
/// @heading Parameters:
/// @param T Number type. Tested with T = taucs_single or taucs_double.
/// May also work with T = taucs_dcomplex and taucs_scomplex.
template<class T> // Tested with T = taucs_single or taucs_double
// May also work with T = taucs_dcomplex and taucs_scomplex
template<class T>
struct Taucs_symmetric_matrix
: public Taucs_matrix<T>
{
@ -417,16 +425,17 @@ public:
// Public operations
public:
/// Create a square SYMMETRIC matrix initialized with zeros.
/// The max number of non 0 elements in the matrix is automatically computed.
/// Create a square *symmetric* matrix initialized with zeros.
Taucs_symmetric_matrix(int dim) ///< Matrix dimension.
: Taucs_matrix<T>(dim, true /* symmetric */)
{
}
/// Create a square SYMMETRIC matrix initialized with zeros.
Taucs_symmetric_matrix(int rows, ///< Matrix dimensions.
int columns)
/// Create a square *symmetric* matrix initialized with zeros.
///
/// @commentheading Precondition: rows == columns.
Taucs_symmetric_matrix(int rows, ///< Number of rows.
int columns) ///< Number of columns.
: Taucs_matrix<T>(rows, columns, true /* symmetric */)
{
}

View File

@ -84,7 +84,7 @@ public:
/// Solve the sparse linear system "A*X = B".
/// Return true on success. The solution is then (1/D) * X.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - A.row_dimension() == B.dimension().
/// - A.column_dimension() == X.dimension().
bool linear_solver (const Matrix& A, const Vector& B, Vector& X, NT& D)
@ -209,7 +209,7 @@ public:
/// Solve the sparse linear system "A*X = B".
/// Return true on success. The solution is then (1/D) * X.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - A.row_dimension() == B.dimension().
/// - A.column_dimension() == X.dimension().
bool linear_solver (const Matrix& A, const Vector& B, Vector& X, NT& D)

View File

@ -87,7 +87,7 @@ public:
/// Read/write access to a vector coefficient.
///
/// Preconditions:
/// @commentheading Preconditions:
/// 0 <= i < dimension().
T operator[](int i) const {
CGAL_precondition(i < m_dimension);

View File

@ -32,7 +32,7 @@ CGAL_BEGIN_NAMESPACE
/// The mapping is piecewise linear on the input mesh triangles.
/// The result is a (u,v) pair of parameter coordinates for each vertex of the input mesh.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - 'mesh' must be a surface with one connected component.
/// - 'mesh' must be a triangular mesh.
///
@ -53,7 +53,7 @@ parameterize(ParameterizationMesh_3& mesh) ///< 3D mesh, model of Parameterizat
/// One-to-one mapping may be guaranteed or
/// not, depending on the chosen ParametizerTraits_3 algorithm.
///
/// Preconditions:
/// @commentheading Preconditions:
/// - 'mesh' must be a surface with one connected component.
/// - 'mesh' must be a triangular mesh.
/// - the mesh border must be mapped onto a convex polygon