mirror of https://github.com/CGAL/cgal
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:
parent
82143450e7
commit
d0f63a9ee1
|
|
@ -50,14 +50,14 @@ public:
|
||||||
|
|
||||||
/// Read access to a matrix coefficient.
|
/// Read access to a matrix coefficient.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - 0 <= row < row_dimension().
|
/// - 0 <= row < row_dimension().
|
||||||
/// - 0 <= column < column_dimension().
|
/// - 0 <= column < column_dimension().
|
||||||
NT get_coef (int row, int column) const;
|
NT get_coef (int row, int column) const;
|
||||||
|
|
||||||
/// Write access to a matrix coefficient: a_ij <- a_ij + val.
|
/// Write access to a matrix coefficient: a_ij <- a_ij + val.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - 0 <= row < row_dimension().
|
/// - 0 <= row < row_dimension().
|
||||||
/// - 0 <= column < column_dimension().
|
/// - 0 <= column < column_dimension().
|
||||||
void add_coef(int row, int column, NT value);
|
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
|
/// - Caller can optimize this call by setting 'new_coef' to true
|
||||||
/// if the coefficient does not already exist in the matrix.
|
/// if the coefficient does not already exist in the matrix.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - 0 <= i < row_dimension().
|
/// - 0 <= i < row_dimension().
|
||||||
/// - 0 <= j < column_dimension().
|
/// - 0 <= j < column_dimension().
|
||||||
void set_coef(int row, int column, NT value, bool new_coef = false);
|
void set_coef(int row, int column, NT value, bool new_coef = false);
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ public:
|
||||||
/// The mapping is linear by pieces (linear in each triangle).
|
/// 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.
|
/// 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 surface with one connected component and no hole.
|
||||||
/// - 'mesh' must be a triangular mesh.
|
/// - 'mesh' must be a triangular mesh.
|
||||||
Error_code parameterize (Adaptor& mesh);
|
Error_code parameterize (Adaptor& mesh);
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ public:
|
||||||
/// Solve the sparse linear system "A*X = B".
|
/// Solve the sparse linear system "A*X = B".
|
||||||
/// Return true on success. The solution is then (1/D) * X.
|
/// Return true on success. The solution is then (1/D) * X.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - A.row_dimension() == B.dimension().
|
/// - A.row_dimension() == B.dimension().
|
||||||
/// - A.column_dimension() == X.dimension().
|
/// - A.column_dimension() == X.dimension().
|
||||||
bool linear_solver (const Matrix& A, const Vector& B, Vector& X, NT& D);
|
bool linear_solver (const Matrix& A, const Vector& B, Vector& X, NT& D);
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ public:
|
||||||
|
|
||||||
/// Read/write access to a vector coefficient.
|
/// 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) const;
|
||||||
NT& operator[] (int row);
|
NT& operator[] (int row);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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{SparseLinearAlgebraTraits_d} = \ccc{OpenNL::DefaultLinearSolverTraits<typename ParameterizationMesh_3::NT>}$>$ \\
|
||||||
class \ccc{Barycentric_mapping_parameterizer_3};
|
class \ccc{Barycentric_mapping_parameterizer_3};
|
||||||
|
|
||||||
|
\ccCommentHeading{Parameters}
|
||||||
\begin{description}
|
\begin{description}
|
||||||
\item[Parameters:]
|
\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}
|
||||||
\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}
|
|
||||||
|
|
||||||
%END-AUTO(\ccParameters)
|
%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());}
|
\ccConstructor{Barycentric_mapping_parameterizer_3(Border_param border_param = Border_param(), Sparse_LA sparse_la = Sparse_LA());}
|
||||||
{
|
{
|
||||||
Constructor.
|
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
|
\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)
|
%END-AUTO(\ccCreation)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -82,13 +82,6 @@ class \ccc{Circular_border_arc_length_parameterizer_3};
|
||||||
%END-AUTO(\ccParameters)
|
%END-AUTO(\ccParameters)
|
||||||
|
|
||||||
|
|
||||||
\ccTypes
|
|
||||||
|
|
||||||
% The section below is automatically generated. Do not edit!
|
|
||||||
%START-AUTO(\ccTypes)
|
|
||||||
%END-AUTO(\ccTypes)
|
|
||||||
|
|
||||||
|
|
||||||
\ccCreation
|
\ccCreation
|
||||||
\ccCreationVariable{bp} %% variable name for \ccMethod below
|
\ccCreationVariable{bp} %% variable name for \ccMethod below
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -79,13 +79,6 @@ class \ccc{Circular_border_uniform_parameterizer_3};
|
||||||
%END-AUTO(\ccParameters)
|
%END-AUTO(\ccParameters)
|
||||||
|
|
||||||
|
|
||||||
\ccTypes
|
|
||||||
|
|
||||||
% The section below is automatically generated. Do not edit!
|
|
||||||
%START-AUTO(\ccTypes)
|
|
||||||
%END-AUTO(\ccTypes)
|
|
||||||
|
|
||||||
|
|
||||||
\ccCreation
|
\ccCreation
|
||||||
\ccCreationVariable{bp} %% choose variable name for \ccMethod
|
\ccCreationVariable{bp} %% choose variable name for \ccMethod
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,13 +88,6 @@ class \ccc{Discrete_authalic_parameterizer_3};
|
||||||
%END-AUTO(\ccParameters)
|
%END-AUTO(\ccParameters)
|
||||||
|
|
||||||
|
|
||||||
\ccTypes
|
|
||||||
|
|
||||||
% The section below is automatically generated. Do not edit!
|
|
||||||
%START-AUTO(\ccTypes)
|
|
||||||
%END-AUTO(\ccTypes)
|
|
||||||
|
|
||||||
|
|
||||||
\ccCreation
|
\ccCreation
|
||||||
\ccCreationVariable{param} %% variable name used by \ccMethod below
|
\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());}
|
\ccConstructor{Discrete_authalic_parameterizer_3(Border_param border_param = Border_param(), Sparse_LA sparse_la = Sparse_LA());}
|
||||||
{
|
{
|
||||||
Constructor.
|
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
|
\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)
|
%END-AUTO(\ccCreation)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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{SparseLinearAlgebraTraits_d} = \ccc{OpenNL::DefaultLinearSolverTraits<typename ParameterizationMesh_3::NT>}$>$ \\
|
||||||
class \ccc{Discrete_conformal_map_parameterizer_3};
|
class \ccc{Discrete_conformal_map_parameterizer_3};
|
||||||
|
|
||||||
|
\ccCommentHeading{Parameters}
|
||||||
\begin{description}
|
\begin{description}
|
||||||
\item[Parameters:]
|
\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}
|
||||||
\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}
|
|
||||||
|
|
||||||
%END-AUTO(\ccParameters)
|
%END-AUTO(\ccParameters)
|
||||||
|
|
||||||
|
|
||||||
\ccTypes
|
|
||||||
|
|
||||||
% The section below is automatically generated. Do not edit!
|
|
||||||
%START-AUTO(\ccTypes)
|
|
||||||
%END-AUTO(\ccTypes)
|
|
||||||
|
|
||||||
|
|
||||||
\ccCreation
|
\ccCreation
|
||||||
\ccCreationVariable{param} %% choose variable name for \ccMethod
|
\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());}
|
\ccConstructor{Discrete_conformal_map_parameterizer_3(Border_param border_param = Border_param(), Sparse_LA sparse_la = Sparse_LA());}
|
||||||
{
|
{
|
||||||
Constructor.
|
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
|
\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)
|
%END-AUTO(\ccCreation)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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());}
|
\ccConstructor{Fixed_border_parameterizer_3(Border_param border_param = Border_param(), Sparse_LA sparse_la = Sparse_LA());}
|
||||||
{
|
{
|
||||||
Constructor.
|
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
|
\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)
|
%END-AUTO(\ccCreation)
|
||||||
|
|
||||||
|
|
@ -135,7 +132,7 @@ Constructor.
|
||||||
{
|
{
|
||||||
[virtual] \\
|
[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.
|
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}
|
\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
|
\ccGlue
|
||||||
|
|
@ -150,7 +147,7 @@ Check parameterize() preconditions:\begin{itemize}
|
||||||
{
|
{
|
||||||
[protected] \\
|
[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}.
|
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}
|
\item vertices must be indexed.\item A, Bu and Bv must be allocated.\item border vertices must be parameterized. \end{itemize}
|
||||||
}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
|
|
@ -165,7 +162,7 @@ Compute \ccc{w_ij} = (i, j) coefficient of matrix A for j neighbor vertex of i.
|
||||||
[protected, virtual] \\
|
[protected, virtual] \\
|
||||||
Compute the line i of matrix A for i inner vertex:\begin{itemize}
|
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}
|
\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}
|
\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
|
\ccGlue
|
||||||
|
|
|
||||||
|
|
@ -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());}
|
\ccConstructor{LSCM_parameterizer_3(Border_param border_param = Border_param(), Sparse_LA sparse_la = Sparse_LA());}
|
||||||
{
|
{
|
||||||
Constructor.
|
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
|
\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)
|
%END-AUTO(\ccCreation)
|
||||||
|
|
||||||
|
|
@ -134,7 +131,7 @@ Constructor.
|
||||||
{
|
{
|
||||||
[virtual] \\
|
[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.
|
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}
|
\item \ccc{mesh} must be a surface with one connected component.\item \ccc{mesh} must be a triangular mesh. \end{itemize}
|
||||||
}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
|
|
|
||||||
|
|
@ -89,14 +89,14 @@ Return the matrix number of columns.
|
||||||
\ccMethod{NT get_coef(int row, int column) const;}
|
\ccMethod{NT get_coef(int row, int column) const;}
|
||||||
{
|
{
|
||||||
Read access to a matrix coefficient.
|
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}
|
\item 0 $<$= row $<$ \ccc{row_dimension}().\item 0 $<$= column $<$ \ccc{column_dimension}(). \end{itemize}
|
||||||
}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
\ccMethod{void add_coef(int row, int column, NT value);}
|
\ccMethod{void add_coef(int row, int column, NT value);}
|
||||||
{
|
{
|
||||||
Write access to a matrix coefficient: \ccc{a_ij} $<$- \ccc{a_ij} + val.
|
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}
|
\item 0 $<$= row $<$ \ccc{row_dimension}().\item 0 $<$= column $<$ \ccc{column_dimension}(). \end{itemize}
|
||||||
}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
|
|
@ -105,7 +105,7 @@ Preconditions:\begin{itemize}
|
||||||
Write access to a matrix coefficient: \ccc{a_ij} $<$- val.
|
Write access to a matrix coefficient: \ccc{a_ij} $<$- val.
|
||||||
Optimization:\begin{itemize}
|
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}
|
\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}
|
\item 0 $<$= i $<$ \ccc{row_dimension}().\item 0 $<$= j $<$ \ccc{column_dimension}(). \end{itemize}
|
||||||
}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
|
|
|
||||||
|
|
@ -88,13 +88,6 @@ class \ccc{Mean_value_coordinates_parameterizer_3};
|
||||||
%END-AUTO(\ccParameters)
|
%END-AUTO(\ccParameters)
|
||||||
|
|
||||||
|
|
||||||
\ccTypes
|
|
||||||
|
|
||||||
% The section below is automatically generated. Do not edit!
|
|
||||||
%START-AUTO(\ccTypes)
|
|
||||||
%END-AUTO(\ccTypes)
|
|
||||||
|
|
||||||
|
|
||||||
\ccCreation
|
\ccCreation
|
||||||
\ccCreationVariable{param} %% variable name used by \ccMethod below
|
\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());}
|
\ccConstructor{Mean_value_coordinates_parameterizer_3(Border_param border_param = Border_param(), Sparse_LA sparse_la = Sparse_LA());}
|
||||||
{
|
{
|
||||||
Constructor.
|
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
|
\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)
|
%END-AUTO(\ccCreation)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -59,13 +59,6 @@ In addition to the requirements described in the concept \ccc{ParameterizationMe
|
||||||
\ccc{ParameterizationPatchableMesh_3} provides the following:
|
\ccc{ParameterizationPatchableMesh_3} provides the following:
|
||||||
|
|
||||||
|
|
||||||
\ccTypes
|
|
||||||
|
|
||||||
% The section below is automatically generated. Do not edit!
|
|
||||||
%START-AUTO(\ccTypes)
|
|
||||||
%END-AUTO(\ccTypes)
|
|
||||||
|
|
||||||
|
|
||||||
\ccCreation
|
\ccCreation
|
||||||
\ccCreationVariable{mesh} %% define variable name used by \ccMethod below
|
\ccCreationVariable{mesh} %% define variable name used by \ccMethod below
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -68,11 +68,8 @@ template$<$ \\
|
||||||
class \ccc{ParameterizationPatchableMesh_3}$>$ \\
|
class \ccc{ParameterizationPatchableMesh_3}$>$ \\
|
||||||
class \ccc{Parameterization_mesh_patch_3};
|
class \ccc{Parameterization_mesh_patch_3};
|
||||||
|
|
||||||
\begin{description}
|
\ccCommentHeading{Parameters}
|
||||||
\item[Parameters:]
|
\ccc{ParameterizationPatchableMesh_3}: 3D surface mesh.
|
||||||
\begin{description}
|
|
||||||
\item[\ccc{ParameterizationPatchableMesh_3}]3D surface mesh. \end{description}
|
|
||||||
\end{description}
|
|
||||||
|
|
||||||
%END-AUTO(\ccParameters)
|
%END-AUTO(\ccParameters)
|
||||||
|
|
||||||
|
|
@ -221,11 +218,11 @@ The decorated mesh.
|
||||||
% The section below is automatically generated. Do not edit!
|
% The section below is automatically generated. Do not edit!
|
||||||
%START-AUTO(\ccCreation)
|
%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.
|
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}
|
\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 $\ast$not$\ast$ be duplicated at the end. \end{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
|
\ccGlue
|
||||||
|
|
||||||
|
|
@ -243,11 +240,9 @@ non-mutable counterpart methods, i.e. \ccc{const}, returning a \ccc{const_handle
|
||||||
|
|
||||||
\ccMethod{Adaptor& get_decorated_mesh();}
|
\ccMethod{Adaptor& get_decorated_mesh();}
|
||||||
{
|
{
|
||||||
|
\ccCommentHeading{Returns} the decorated mesh.
|
||||||
}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
\begin{description}
|
|
||||||
\item[Returns:]the decorated mesh. \end{description}
|
|
||||||
\ccGlue
|
|
||||||
\ccMethod{const Adaptor& get_decorated_mesh() const;}
|
\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
|
\ccGlue
|
||||||
\ccMethod{std::list<Vertex_handle> get_border(Vertex_handle seed_vertex);}
|
\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
|
\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();}
|
\ccMethod{Facet_iterator mesh_facets_begin();}
|
||||||
{
|
{
|
||||||
Get iterator over first facet of mesh.
|
Get iterator over first facet of mesh.
|
||||||
|
|
|
||||||
|
|
@ -60,10 +60,7 @@ Export the type of mesh to parameterize.
|
||||||
\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.
|
List of errors detected by this package.
|
||||||
}
|
\ccCommentHeading{Enumeration values}
|
||||||
\ccGlue
|
|
||||||
\begin{description}
|
|
||||||
\item[Enumeration values: ]
|
|
||||||
\begin{description}
|
\begin{description}
|
||||||
\item[OK
|
\item[OK
|
||||||
]Success. \item[\ccc{ERROR_EMPTY_MESH}
|
]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}
|
]Parameterization failed: no one-to-one mapping. \item[\ccc{ERROR_OUT_OF_MEMORY}
|
||||||
]Not enough memory. \item[\ccc{ERROR_WRONG_PARAMETER}
|
]Not enough memory. \item[\ccc{ERROR_WRONG_PARAMETER}
|
||||||
]A method received an unexpected parameter. \end{description}
|
]A method received an unexpected parameter. \end{description}
|
||||||
\end{description}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
|
|
||||||
%END-AUTO(\ccConstants)
|
%END-AUTO(\ccConstants)
|
||||||
|
|
@ -100,7 +97,7 @@ Construction and destruction are undefined.
|
||||||
\ccMethod{Error_code parameterize(Adaptor& mesh);}
|
\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.
|
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}
|
\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
|
\ccGlue
|
||||||
|
|
|
||||||
|
|
@ -199,10 +199,7 @@ Export \ccc{ParameterizationMesh_3} template 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 };}
|
\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.
|
List of errors detected by this package.
|
||||||
}
|
\ccCommentHeading{Enumeration values}
|
||||||
\ccGlue
|
|
||||||
\begin{description}
|
|
||||||
\item[Enumeration values: ]
|
|
||||||
\begin{description}
|
\begin{description}
|
||||||
\item[OK
|
\item[OK
|
||||||
]Success. \item[\ccc{ERROR_EMPTY_MESH}
|
]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}
|
]Parameterization failed: no one-to-one mapping. \item[\ccc{ERROR_OUT_OF_MEMORY}
|
||||||
]Not enough memory. \item[\ccc{ERROR_WRONG_PARAMETER}
|
]Not enough memory. \item[\ccc{ERROR_WRONG_PARAMETER}
|
||||||
]A method received an unexpected parameter. \end{description}
|
]A method received an unexpected parameter. \end{description}
|
||||||
\end{description}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
|
|
||||||
%END-AUTO(\ccConstants)
|
%END-AUTO(\ccConstants)
|
||||||
|
|
@ -238,7 +235,7 @@ List of errors detected by this package.
|
||||||
{
|
{
|
||||||
[pure virtual] \\
|
[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.
|
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}
|
\item \ccc{mesh} must be a surface with one connected component.\item \ccc{mesh} must be a triangular mesh. \end{itemize}
|
||||||
}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
|
|
@ -246,16 +243,11 @@ Preconditions:\begin{itemize}
|
||||||
{
|
{
|
||||||
[static] \\
|
[static] \\
|
||||||
Get message (in English) corresponding to an error code
|
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
|
\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)
|
%END-AUTO(\ccOperations)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ Default constructor.
|
||||||
\ccMethod{bool linear_solver(const Matrix& A, const Vector& B, Vector& X, NT& D);}
|
\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.
|
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}
|
\item A.\ccc{row_dimension}() == B.dimension().\item A.\ccc{column_dimension}() == X.dimension(). \end{itemize}
|
||||||
}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
|
|
|
||||||
|
|
@ -81,13 +81,6 @@ class \ccc{Square_border_arc_length_parameterizer_3};
|
||||||
%END-AUTO(\ccParameters)
|
%END-AUTO(\ccParameters)
|
||||||
|
|
||||||
|
|
||||||
\ccTypes
|
|
||||||
|
|
||||||
% The section below is automatically generated. Do not edit!
|
|
||||||
%START-AUTO(\ccTypes)
|
|
||||||
%END-AUTO(\ccTypes)
|
|
||||||
|
|
||||||
|
|
||||||
\ccCreation
|
\ccCreation
|
||||||
\ccCreationVariable{bp} %% variable name for \ccMethod
|
\ccCreationVariable{bp} %% variable name for \ccMethod
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -81,13 +81,6 @@ class \ccc{Square_border_uniform_parameterizer_3};
|
||||||
%END-AUTO(\ccParameters)
|
%END-AUTO(\ccParameters)
|
||||||
|
|
||||||
|
|
||||||
\ccTypes
|
|
||||||
|
|
||||||
% The section below is automatically generated. Do not edit!
|
|
||||||
%START-AUTO(\ccTypes)
|
|
||||||
%END-AUTO(\ccTypes)
|
|
||||||
|
|
||||||
|
|
||||||
\ccCreation
|
\ccCreation
|
||||||
\ccCreationVariable{bp} %% variable name for \ccMethod
|
\ccCreationVariable{bp} %% variable name for \ccMethod
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,9 @@ template$<$ \\
|
||||||
class T$>$ \\
|
class T$>$ \\
|
||||||
struct \ccc{Taucs_matrix};
|
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)
|
%END-AUTO(\ccParameters)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -83,25 +86,20 @@ struct \ccc{Taucs_matrix};
|
||||||
\ccConstructor{Taucs_matrix(int dim, bool is_symmetric = false);}
|
\ccConstructor{Taucs_matrix(int dim, bool is_symmetric = false);}
|
||||||
{
|
{
|
||||||
Create a square matrix initialized with zeros.
|
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
|
\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);}
|
\ccConstructor{Taucs_matrix(int rows, int columns, bool is_symmetric = false);}
|
||||||
{
|
{
|
||||||
Create a rectangular matrix initialized with zeros.
|
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
|
\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)
|
%END-AUTO(\ccCreation)
|
||||||
|
|
||||||
|
|
@ -124,7 +122,7 @@ Return the matrix number of columns.
|
||||||
\ccMethod{T get_coef(int i, int j) const;}
|
\ccMethod{T get_coef(int i, int j) const;}
|
||||||
{
|
{
|
||||||
Read access to a matrix coefficient.
|
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}
|
\item 0 $<$= i $<$ \ccc{row_dimension}().\item 0 $<$= j $<$ \ccc{column_dimension}(). \end{itemize}
|
||||||
}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
|
|
@ -133,7 +131,7 @@ Preconditions:\begin{itemize}
|
||||||
Write access to a matrix coefficient: \ccc{a_ij} $<$- val.
|
Write access to a matrix coefficient: \ccc{a_ij} $<$- val.
|
||||||
Optimizations:\begin{itemize}
|
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}
|
\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}
|
\item 0 $<$= i $<$ \ccc{row_dimension}().\item 0 $<$= j $<$ \ccc{column_dimension}(). \end{itemize}
|
||||||
}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
|
|
@ -141,7 +139,7 @@ Preconditions:\begin{itemize}
|
||||||
{
|
{
|
||||||
Write access to a matrix coefficient: \ccc{a_ij} $<$- \ccc{a_ij} + val.
|
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.
|
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}
|
\item 0 $<$= i $<$ \ccc{row_dimension}().\item 0 $<$= j $<$ \ccc{column_dimension}(). \end{itemize}
|
||||||
}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
|
|
|
||||||
|
|
@ -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);}
|
\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.
|
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}
|
\item A.\ccc{row_dimension}() == B.dimension().\item A.\ccc{column_dimension}() == X.dimension(). \end{itemize}
|
||||||
}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
% The section below is automatically generated. Do not edit!
|
% The section below is automatically generated. Do not edit!
|
||||||
%START-AUTO(\ccDefinition)
|
%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.
|
Symmetric matrices store only the lower triangle.
|
||||||
|
|
||||||
|
|
@ -68,6 +68,9 @@ template$<$ \\
|
||||||
class T$>$ \\
|
class T$>$ \\
|
||||||
struct \ccc{Taucs_symmetric_matrix};
|
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)
|
%END-AUTO(\ccParameters)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -92,37 +95,24 @@ struct \ccc{Taucs_symmetric_matrix};
|
||||||
|
|
||||||
\ccConstructor{Taucs_symmetric_matrix(int dim);}
|
\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
|
\ccGlue
|
||||||
\begin{description}
|
|
||||||
\item[Parameters: ]
|
|
||||||
\begin{description}
|
|
||||||
\item[dim]Matrix dimension. \end{description}
|
|
||||||
\end{description}
|
|
||||||
\ccGlue
|
|
||||||
\ccConstructor{Taucs_symmetric_matrix(int rows, int columns);}
|
\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
|
\ccGlue
|
||||||
\begin{description}
|
|
||||||
\item[Parameters: ]
|
|
||||||
\begin{description}
|
|
||||||
\item[rows]Matrix dimensions. \end{description}
|
|
||||||
\end{description}
|
|
||||||
\ccGlue
|
|
||||||
|
|
||||||
%END-AUTO(\ccCreation)
|
%END-AUTO(\ccCreation)
|
||||||
|
|
||||||
|
|
||||||
\ccOperations
|
|
||||||
|
|
||||||
% The section below is automatically generated. Do not edit!
|
|
||||||
%START-AUTO(\ccOperations)
|
|
||||||
%END-AUTO(\ccOperations)
|
|
||||||
|
|
||||||
|
|
||||||
\ccSeeAlso
|
\ccSeeAlso
|
||||||
|
|
||||||
\ccRefIdfierPage{CGAL::Taucs_solver_traits<T>} \\
|
\ccRefIdfierPage{CGAL::Taucs_solver_traits<T>} \\
|
||||||
|
|
|
||||||
|
|
@ -89,14 +89,11 @@ class \ccc{Taucs_symmetric_solver_traits};
|
||||||
\ccConstructor{Taucs_symmetric_solver_traits(const char * options[] = NULL, const void * arguments[] = NULL);}
|
\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.
|
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
|
\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)
|
%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);}
|
\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.
|
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}
|
\item A.\ccc{row_dimension}() == B.dimension().\item A.\ccc{column_dimension}() == X.dimension(). \end{itemize}
|
||||||
}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ Copy constructor.
|
||||||
% The section below is automatically generated. Do not edit!
|
% The section below is automatically generated. Do not edit!
|
||||||
%START-AUTO(\ccOperations)
|
%START-AUTO(\ccOperations)
|
||||||
|
|
||||||
\ccMethod{Taucs_vector& operator=(const Taucs_vector<T>& toCopy);}
|
\ccMethod{Taucs_vector& operator =(const Taucs_vector<T>& toCopy);}
|
||||||
{
|
{
|
||||||
operator =()
|
operator =()
|
||||||
}
|
}
|
||||||
|
|
@ -110,7 +110,7 @@ Return the vector's number of coefficients.
|
||||||
\ccMethod{T operator[](int i) const;}
|
\ccMethod{T operator[](int i) const;}
|
||||||
{
|
{
|
||||||
Read/write access to a vector coefficient.
|
Read/write access to a vector coefficient.
|
||||||
Preconditions: 0 $<$= i $<$ dimension().
|
\ccCommentHeading{Preconditions} 0 $<$= i $<$ dimension().
|
||||||
}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
\ccMethod{T& operator[](int i);}
|
\ccMethod{T& operator[](int i);}
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ Copy constructor.
|
||||||
% The section below is automatically generated. Do not edit!
|
% The section below is automatically generated. Do not edit!
|
||||||
%START-AUTO(\ccOperations)
|
%START-AUTO(\ccOperations)
|
||||||
|
|
||||||
\ccMethod{Vector& operator=(const Vector& toCopy);}
|
\ccMethod{Vector& operator =(const Vector& toCopy);}
|
||||||
{
|
{
|
||||||
operator =()
|
operator =()
|
||||||
}
|
}
|
||||||
|
|
@ -87,7 +87,7 @@ Return the vector's number of coefficients.
|
||||||
\ccMethod{NT operator[](int row) const;}
|
\ccMethod{NT operator[](int row) const;}
|
||||||
{
|
{
|
||||||
Read/write access to a vector coefficient.
|
Read/write access to a vector coefficient.
|
||||||
Precondition: 0 $<$= row $<$ dimension().
|
\ccPrecond 0 $<$= row $<$ dimension().
|
||||||
}
|
}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
\ccMethod{NT& operator[](int row);}
|
\ccMethod{NT& operator[](int row);}
|
||||||
|
|
|
||||||
|
|
@ -33,57 +33,30 @@ of Floater Mean Value Coordinates.
|
||||||
% The section below is automatically generated. Do not edit!
|
% The section below is automatically generated. Do not edit!
|
||||||
%START-AUTO(\ccDefinition)
|
%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.
|
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.
|
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}
|
\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
|
\ccGlue
|
||||||
\begin{description}
|
\ccFunction{template<class ParameterizationMesh_3, class ParameterizerTraits_3> Parameterizer_traits_3<ParameterizationMesh_3>::Error_code parameterize(ParameterizationMesh_3& mesh, ParameterizerTraits_3 parameterizer);}
|
||||||
\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);}
|
|
||||||
{
|
{
|
||||||
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.
|
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.
|
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}
|
\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
|
\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)
|
%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
|
\ccSeeAlso
|
||||||
|
|
||||||
\ccRefIdfierPage{CGAL::Barycentric_mapping_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>} \\
|
\ccRefIdfierPage{CGAL::Barycentric_mapping_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>} \\
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,7 @@ public:
|
||||||
/// The mapping is linear by pieces (linear in each triangle).
|
/// 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.
|
/// 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 surface with one connected component.
|
||||||
/// - 'mesh' must be a triangular mesh.
|
/// - 'mesh' must be a triangular mesh.
|
||||||
/// - the mesh border must be mapped onto a convex polygon.
|
/// - the mesh border must be mapped onto a convex polygon.
|
||||||
|
|
@ -169,7 +169,7 @@ protected:
|
||||||
/// Fill the border vertices' lines in both linear systems:
|
/// Fill the border vertices' lines in both linear systems:
|
||||||
/// "u = constant" and "v = constant".
|
/// "u = constant" and "v = constant".
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - vertices must be indexed.
|
/// - vertices must be indexed.
|
||||||
/// - A, Bu and Bv must be allocated.
|
/// - A, Bu and Bv must be allocated.
|
||||||
/// - border vertices must be parameterized.
|
/// - 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.
|
/// - call compute_w_ij() to compute the A coefficient w_ij for each neighbor v_j.
|
||||||
/// - compute w_ii = - sum of w_ijs.
|
/// - compute w_ii = - sum of w_ijs.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - vertices must be indexed.
|
/// - vertices must be indexed.
|
||||||
/// - vertex i musn't be already parameterized.
|
/// - vertex i musn't be already parameterized.
|
||||||
/// - line i of A must contain only zeros.
|
/// - line i of A must contain only zeros.
|
||||||
|
|
|
||||||
|
|
@ -148,7 +148,7 @@ public:
|
||||||
/// The mapping is linear by pieces (linear in each triangle).
|
/// 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.
|
/// 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 surface with one connected component.
|
||||||
/// - 'mesh' must be a triangular mesh.
|
/// - 'mesh' must be a triangular mesh.
|
||||||
virtual Error_code parameterize(Adaptor& mesh);
|
virtual Error_code parameterize(Adaptor& mesh);
|
||||||
|
|
@ -163,7 +163,7 @@ private:
|
||||||
/// Initialize "A*X = B" linear system after
|
/// Initialize "A*X = B" linear system after
|
||||||
/// (at least two) border vertices are parameterized.
|
/// (at least two) border vertices are parameterized.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - vertices must be indexed.
|
/// - vertices must be indexed.
|
||||||
/// - X and B must be allocated and empty.
|
/// - X and B must be allocated and empty.
|
||||||
/// - (at least two) border vertices must be parameterized.
|
/// - (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).
|
/// Create two lines in the linear system per triangle (one for u, one for v).
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - vertices must be indexed.
|
/// - vertices must be indexed.
|
||||||
Error_code setup_triangle_relations(LeastSquaresSolver& solver,
|
Error_code setup_triangle_relations(LeastSquaresSolver& solver,
|
||||||
const Adaptor& mesh,
|
const Adaptor& mesh,
|
||||||
|
|
|
||||||
|
|
@ -370,9 +370,9 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
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()
|
void update_inherited_handle()
|
||||||
{
|
{
|
||||||
Vertex_handle current_decorated_vertex = NULL;
|
Vertex_handle current_decorated_vertex = NULL;
|
||||||
|
|
@ -566,9 +566,9 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
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()
|
void update_inherited_handle()
|
||||||
{
|
{
|
||||||
Vertex_handle current_decorated_vertex = NULL;
|
Vertex_handle current_decorated_vertex = NULL;
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,7 @@ public:
|
||||||
/// describes the border of a topological disc. This border may be an actual
|
/// describes the border of a topological disc. This border may be an actual
|
||||||
/// border of the mesh or a virtual border.
|
/// border of the mesh or a virtual border.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - first_seam_vertex -> end_seam_vertex defines the outer seam,
|
/// - first_seam_vertex -> end_seam_vertex defines the outer seam,
|
||||||
/// i.e. Parameterization_mesh_patch_3 will export the "right" of the 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.
|
/// - 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
|
/// w.r.t. the first_seam_vertex -> end_seam_vertex border
|
||||||
/// (outer seam edges are marked BORDER).
|
/// (outer seam edges are marked BORDER).
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - first_seam_vertex -> end_seam_vertex defines the outer seam,
|
/// - first_seam_vertex -> end_seam_vertex defines the outer seam,
|
||||||
/// i.e. Parameterization_mesh_patch_3 will export the "right" of the 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.
|
/// - 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
|
/// Set the seaming flag of inner vertices and edges to INNER
|
||||||
/// by filling the topological disk.
|
/// by filling the topological disk.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - Inner vertices are marked as OUTER, seam vertices as BORDER.
|
/// - Inner vertices are marked as OUTER, seam vertices as BORDER.
|
||||||
/// - Inner edges are marked as OUTER,
|
/// - Inner edges are marked as OUTER,
|
||||||
/// outer seam edges as BORDER, inner seam edges as INNER.
|
/// 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.
|
// 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,
|
/// - first_seam_vertex -> end_seam_vertex defines the outer seam,
|
||||||
/// i.e. Parameterization_mesh_patch_3 will export the "right" of the 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.
|
/// - 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.
|
/// Create a patch vertex from an adaptor vertex + one of its neighbors.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - adaptor_neighbor is a neighbor of adaptor_vertex.
|
/// - adaptor_neighbor is a neighbor of adaptor_vertex.
|
||||||
/// - (adaptor_vertex, adaptor_neighbor) must NOT be a seam (non-oriented) edge.
|
/// - (adaptor_vertex, adaptor_neighbor) must NOT be a seam (non-oriented) edge.
|
||||||
Vertex_const_handle get_decorated_vertex_from_inner_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
|
/// Create a patch vertex from a border/seam adaptor vertex
|
||||||
/// + one of its neighbors on the seam.
|
/// + one of its neighbors on the seam.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - adaptor_vertex is a border/seam vertex.
|
/// - adaptor_vertex is a border/seam vertex.
|
||||||
/// - [first_cw_neighbor, last_cw_neighbor] defines the range
|
/// - [first_cw_neighbor, last_cw_neighbor] defines the range
|
||||||
/// of the valid neighbors of adaptor_vertex (included) or are NULL.
|
/// of the valid neighbors of adaptor_vertex (included) or are NULL.
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,7 @@ public:
|
||||||
/// The mapping is linear by pieces (linear in each triangle).
|
/// 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.
|
/// 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 surface with one connected component.
|
||||||
/// - 'mesh' must be a triangular mesh.
|
/// - 'mesh' must be a triangular mesh.
|
||||||
virtual Error_code parameterize (Adaptor& mesh) = 0;
|
virtual Error_code parameterize (Adaptor& mesh) = 0;
|
||||||
|
|
|
||||||
|
|
@ -43,8 +43,11 @@ template<class T> struct Taucs_traits;
|
||||||
///
|
///
|
||||||
/// @heading Is Model for the Concepts: Model of the SparseLinearAlgebraTraits_d::Matrix concept.
|
/// @heading Is Model for the Concepts: Model of the SparseLinearAlgebraTraits_d::Matrix concept.
|
||||||
///
|
///
|
||||||
template<class T> // Tested with T = float or double
|
/// @heading Parameters:
|
||||||
// May also work with T = taucs_dcomplex and taucs_scomplex
|
/// @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
|
struct Taucs_matrix
|
||||||
{
|
{
|
||||||
// Public types
|
// Public types
|
||||||
|
|
@ -161,8 +164,10 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Create a rectangular matrix initialized with zeros.
|
/// 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?
|
bool is_symmetric = false) ///< Symmetric/hermitian?
|
||||||
{
|
{
|
||||||
CGAL_precondition(rows > 0);
|
CGAL_precondition(rows > 0);
|
||||||
|
|
@ -199,7 +204,7 @@ public:
|
||||||
|
|
||||||
/// Read access to a matrix coefficient.
|
/// Read access to a matrix coefficient.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - 0 <= i < row_dimension().
|
/// - 0 <= i < row_dimension().
|
||||||
/// - 0 <= j < column_dimension().
|
/// - 0 <= j < column_dimension().
|
||||||
T get_coef(int i, int j) const
|
T get_coef(int i, int j) const
|
||||||
|
|
@ -227,7 +232,7 @@ public:
|
||||||
/// - Caller can optimize this call by setting 'new_coef' to true
|
/// - Caller can optimize this call by setting 'new_coef' to true
|
||||||
/// if the coefficient does not already exist in the matrix.
|
/// if the coefficient does not already exist in the matrix.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - 0 <= i < row_dimension().
|
/// - 0 <= i < row_dimension().
|
||||||
/// - 0 <= j < column_dimension().
|
/// - 0 <= j < column_dimension().
|
||||||
void set_coef(int i, int j, T val, bool new_coef = false)
|
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
|
/// For symmetric matrices, Taucs_matrix stores only the lower triangle
|
||||||
/// add_coef() does nothing if (i, j) belongs to the upper triangle.
|
/// add_coef() does nothing if (i, j) belongs to the upper triangle.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - 0 <= i < row_dimension().
|
/// - 0 <= i < row_dimension().
|
||||||
/// - 0 <= j < column_dimension().
|
/// - 0 <= j < column_dimension().
|
||||||
void add_coef(int i, int j, T val)
|
void add_coef(int i, int j, T val)
|
||||||
|
|
@ -403,9 +408,12 @@ private:
|
||||||
/// Symmetric matrices store only the lower triangle.
|
/// Symmetric matrices store only the lower triangle.
|
||||||
///
|
///
|
||||||
/// @heading Is Model for the Concepts: Model of the SparseLinearAlgebraTraits_d::Matrix concept.
|
/// @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
|
template<class T>
|
||||||
// May also work with T = taucs_dcomplex and taucs_scomplex
|
|
||||||
struct Taucs_symmetric_matrix
|
struct Taucs_symmetric_matrix
|
||||||
: public Taucs_matrix<T>
|
: public Taucs_matrix<T>
|
||||||
{
|
{
|
||||||
|
|
@ -417,16 +425,17 @@ public:
|
||||||
// Public operations
|
// Public operations
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/// Create a square SYMMETRIC matrix initialized with zeros.
|
/// Create a square *symmetric* matrix initialized with zeros.
|
||||||
/// The max number of non 0 elements in the matrix is automatically computed.
|
|
||||||
Taucs_symmetric_matrix(int dim) ///< Matrix dimension.
|
Taucs_symmetric_matrix(int dim) ///< Matrix dimension.
|
||||||
: Taucs_matrix<T>(dim, true /* symmetric */)
|
: Taucs_matrix<T>(dim, true /* symmetric */)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Create a square SYMMETRIC matrix initialized with zeros.
|
/// Create a square *symmetric* matrix initialized with zeros.
|
||||||
Taucs_symmetric_matrix(int rows, ///< Matrix dimensions.
|
///
|
||||||
int columns)
|
/// @commentheading Precondition: rows == columns.
|
||||||
|
Taucs_symmetric_matrix(int rows, ///< Number of rows.
|
||||||
|
int columns) ///< Number of columns.
|
||||||
: Taucs_matrix<T>(rows, columns, true /* symmetric */)
|
: Taucs_matrix<T>(rows, columns, true /* symmetric */)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ public:
|
||||||
/// Solve the sparse linear system "A*X = B".
|
/// Solve the sparse linear system "A*X = B".
|
||||||
/// Return true on success. The solution is then (1/D) * X.
|
/// Return true on success. The solution is then (1/D) * X.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - A.row_dimension() == B.dimension().
|
/// - A.row_dimension() == B.dimension().
|
||||||
/// - A.column_dimension() == X.dimension().
|
/// - A.column_dimension() == X.dimension().
|
||||||
bool linear_solver (const Matrix& A, const Vector& B, Vector& X, NT& D)
|
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".
|
/// Solve the sparse linear system "A*X = B".
|
||||||
/// Return true on success. The solution is then (1/D) * X.
|
/// Return true on success. The solution is then (1/D) * X.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - A.row_dimension() == B.dimension().
|
/// - A.row_dimension() == B.dimension().
|
||||||
/// - A.column_dimension() == X.dimension().
|
/// - A.column_dimension() == X.dimension().
|
||||||
bool linear_solver (const Matrix& A, const Vector& B, Vector& X, NT& D)
|
bool linear_solver (const Matrix& A, const Vector& B, Vector& X, NT& D)
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ public:
|
||||||
|
|
||||||
/// Read/write access to a vector coefficient.
|
/// Read/write access to a vector coefficient.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// 0 <= i < dimension().
|
/// 0 <= i < dimension().
|
||||||
T operator[](int i) const {
|
T operator[](int i) const {
|
||||||
CGAL_precondition(i < m_dimension);
|
CGAL_precondition(i < m_dimension);
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ CGAL_BEGIN_NAMESPACE
|
||||||
/// The mapping is piecewise linear on the input mesh triangles.
|
/// 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.
|
/// 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 surface with one connected component.
|
||||||
/// - 'mesh' must be a triangular mesh.
|
/// - '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
|
/// One-to-one mapping may be guaranteed or
|
||||||
/// not, depending on the chosen ParametizerTraits_3 algorithm.
|
/// not, depending on the chosen ParametizerTraits_3 algorithm.
|
||||||
///
|
///
|
||||||
/// Preconditions:
|
/// @commentheading Preconditions:
|
||||||
/// - 'mesh' must be a surface with one connected component.
|
/// - 'mesh' must be a surface with one connected component.
|
||||||
/// - 'mesh' must be a triangular mesh.
|
/// - 'mesh' must be a triangular mesh.
|
||||||
/// - the mesh border must be mapped onto a convex polygon
|
/// - the mesh border must be mapped onto a convex polygon
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue