Clarify documentation about symmetric/asymmetric matrices

This commit is contained in:
Laurent Saboret 2006-03-20 11:22:05 +00:00
parent c37d17aa82
commit 86adba238c
22 changed files with 104 additions and 114 deletions

View File

@ -21,9 +21,6 @@
/// The concept SparseLinearAlgebraTraits_d
/// is used to solve sparse linear systems "A*X = B".
///
/// @todo Add to SparseLinearAlgebraTraits_d the ability to solve
/// linear systems in the least squares sense.
///
/// Sub-concept: This is a sub-concept of LinearAlgebraTraits_d.
class SparseLinearAlgebraTraits_d

View File

@ -77,15 +77,15 @@ Each of these surface parameterization methods is templated by
the input mesh type, a border parameterization and a solver:
% Insert image parameterizer_class_diagram_simplified.png/eps
% with title "A parameterizer UML class diagram (simplified)"
% with title "A parameterizer UML class diagram (simplified)" and scale = 1:1
\begin{center}
\label{Surface_mesh_parameterization-fig-parameterizer_class_diagram_simplified}
% Image
\begin{ccTexOnly}
\includegraphics[width=0.80\textwidth]{Surface_mesh_parameterization/parameterizer_class_diagram_simplified} % omit .eps suffix
\includegraphics{Surface_mesh_parameterization/parameterizer_class_diagram_simplified} % omit .eps suffix
\end{ccTexOnly}
\begin{ccHtmlOnly}
<img width="80%" border=0 src="./parameterizer_class_diagram_simplified.png"><P>
<img border=0 src="./parameterizer_class_diagram_simplified.png"><P>
\end{ccHtmlOnly}
% Title
\begin{figure}[h]

View File

@ -25,18 +25,20 @@ Tutte~\cite{t-hdg-63}. In parameter space, each vertex is
placed at the barycenter of its neighbors to achieve the so-called
convex combination condition. This algorithm amounts to solve one
sparse linear solver for each set of parameter coordinates, with a
\#vertices x \#vertices sparse and symmetric positive definite matrix.
\#vertices x \#vertices sparse and symmetric positive definite matrix
(if the border vertices are eliminated from the linear system).
A coefficient $(i, j)$ of the matrix is set to 1 for an edge linking
the vertex $v_i$ to the vertex $v_j$, to minus the degree of the
vertex $v_i$ for a diagonal element, and to 0 for any other matrix
entry. Although a bijective mapping is guaranteed when the border is convex, this method does not minimize angles nor areas distortion.
entry. Although a bijective mapping is guaranteed when the border is convex,
this method does not minimize angles nor areas distortion.
% Tutte barycentric mapping
\begin{center}
\label{Surface_mesh_parameterization-fig-uniform}
% Image
\begin{ccTexOnly}
\includegraphics[width=1.0\textwidth]{Surface_mesh_parameterization/uniform}
\includegraphics[width=0.9\textwidth]{Surface_mesh_parameterization/uniform}
\end{ccTexOnly}
\begin{ccHtmlOnly}
<img width="90%" border=0 src="./uniform.png"><P>
@ -58,18 +60,21 @@ al. to the graphics community~\cite{cgal:eddhls-maam-95}. It attempts to
lower angle deformation by minimizing a discrete version of the
Dirichlet energy as derived by Pinkall and
Polthier~\cite{cgal:pp-cdmsc-93}. A one-to-one mapping is guaranteed
only when the two following conditions are fulfilled: the barycentric mapping condition (each vertex in parameter space is a convex combination if
its neighboring vertices), and the border is convex. This method solves two \#vertices x \#vertices sparse linear
only when the two following conditions are fulfilled: the barycentric mapping
condition (each vertex in parameter space is a convex combination if
its neighboring vertices), and the border is convex.
This method solves two \#vertices x \#vertices sparse linear
systems. The matrix (the same for both systems) is sparse and symmetric definite
positive, thus can be efficiently solved using dedicated linear
solvers.
positive (if the border vertices are eliminated from the linear system
and if the mesh contains no hole),
thus can be efficiently solved using dedicated linear solvers.
% Discrete conformal map
\begin{center}
\label{Surface_mesh_parameterization-fig-conformal}
% Image
\begin{ccTexOnly}
\includegraphics[width=0.45\textwidth]{Surface_mesh_parameterization/conformal}
\includegraphics[width=0.9\textwidth]{Surface_mesh_parameterization/conformal}
\end{ccTexOnly}
\begin{ccHtmlOnly}
<img width="90%" border=0 src="./conformal.png"><P>
@ -90,7 +95,8 @@ optimized so as to be a convex combination of its neighboring
vertices. The barycentric coordinates are this time unconditionally
positive, by deriving an application of the mean theorem for harmonic
functions. This method is in essence an approximation of the discrete conformal
maps, with a guaranteed one-to-one mapping when the border is convex. This method solves two \#vertices x \#vertices sparse linear systems. The matrix (the
maps, with a guaranteed one-to-one mapping when the border is convex.
This method solves two \#vertices x \#vertices sparse linear systems. The matrix (the
same for both systems) is asymmetric.
% Floater mean value coordinates
@ -98,7 +104,7 @@ same for both systems) is asymmetric.
\label{Surface_mesh_parameterization-fig-floater}
% Image
\begin{ccTexOnly}
\includegraphics[width=1.0\textwidth]{Surface_mesh_parameterization/floater}
\includegraphics[width=0.9\textwidth]{Surface_mesh_parameterization/floater}
\end{ccTexOnly}
\begin{ccHtmlOnly}
<img width="90%" border=0 src="./floater.png"><P>
@ -127,7 +133,7 @@ for both systems) is asymmetric.
\label{Surface_mesh_parameterization-fig-authalic}
% Image
\begin{ccTexOnly}
\includegraphics[width=1.0\textwidth]{Surface_mesh_parameterization/authalic}
\includegraphics[width=0.9\textwidth]{Surface_mesh_parameterization/authalic}
\end{ccTexOnly}
\begin{ccHtmlOnly}
<img width="90%" border=0 src="./authalic.png"><P>
@ -204,7 +210,8 @@ $u,v$ coordinates for each vertex along the border.
\ccc{CGAL::LSCM_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>} \\
The Least Squares Conformal Maps (LSCM) parameterization method has
been introduced by L\'evy et al.~\cite{cgal:lprm-lscm-02}. It corresponds to a conformal method with a free border (at least two
been introduced by L\'evy et al.~\cite{cgal:lprm-lscm-02}.
It corresponds to a conformal method with a free border (at least two
vertices have to be constrained to obtain a unique solution), which
allows further lowering of the angle distortion. A one-to-one mapping
is not guaranteed by this method. It solves a (2 $\times$
@ -216,7 +223,7 @@ which implies solving a symmetric matrix.
\label{Surface_mesh_parameterization-fig-LSCM}
% Image
\begin{ccTexOnly}
\includegraphics[width=1.0\textwidth]{Surface_mesh_parameterization/LSCM}
\includegraphics[width=0.9\textwidth]{Surface_mesh_parameterization/LSCM}
\end{ccTexOnly}
\begin{ccHtmlOnly}
<img width="90%" border=0 src="./LSCM.png"><P>

View File

@ -1,7 +1,7 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: GIMP PostScript file plugin V 1,16 by Peter Kirchgessner
%%Title: Z:\src\cgal\SVNROOT\trunk\Surface_mesh_parameterization\doc_tex\Surface_mesh_parameterization\parameterizer_class_diagram.eps
%%CreationDate: Tue Mar 07 16:41:41 2006
%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
%%Title: parameterizer_class_diagram.eps
%%CreationDate: Fri Mar 17 17:24:00 2006
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%Pages: 1
@ -15,8 +15,8 @@
% Translate for offset
14.173228346456694 14.173228346456694 translate
% Translate to begin of first scanline
0 281.28000000000003 translate
404.15999999999997 -281.28000000000003 scale
0 281.25674944204616 translate
404.12659220171139 -281.25674944204616 scale
% Image geometry
842 586 8
% Transformation matrix

View File

@ -1,7 +1,7 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: GIMP PostScript file plugin V 1,16 by Peter Kirchgessner
%%Title: Z:\src\cgal\SVNROOT\trunk\Surface_mesh_parameterization\doc_tex\Surface_mesh_parameterization\parameterizer_class_diagram_simplified.eps
%%CreationDate: Tue Mar 07 16:28:42 2006
%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
%%Title: parameterizer_class_diagram_simplified.eps
%%CreationDate: Fri Mar 17 17:26:45 2006
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%Pages: 1
@ -15,8 +15,8 @@
% Translate for offset
14.173228346456694 14.173228346456694 translate
% Translate to begin of first scanline
0 125.27692213200341 translate
307.67244094488188 -125.27692213200341 scale
0 125.26538012701613 translate
307.64409448818901 -125.26538012701613 scale
% Image geometry
641 261 8
% Transformation matrix

View File

@ -1,7 +1,7 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: GIMP PostScript file plugin V 1,16 by Peter Kirchgessner
%%Title: Z:\src\cgal\SVNROOT\trunk\Surface_mesh_parameterization\doc_tex\Surface_mesh_parameterization\parameterizers_class_hierarchy.eps
%%CreationDate: Tue Mar 07 16:08:08 2006
%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
%%Title: parameterizers_class_hierarchy.eps
%%CreationDate: Fri Mar 17 17:28:01 2006
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%Pages: 1
@ -15,8 +15,8 @@
% Translate for offset
14.173228346456694 14.173228346456694 translate
% Translate to begin of first scanline
0 92.159999999999997 translate
340.80000000000001 -92.159999999999997 scale
0 92.15238206974891 translate
340.77182952875899 -92.15238206974891 scale
% Image geometry
710 192 8
% Transformation matrix

View File

@ -88,16 +88,16 @@ Therefore, the software design chosen is:
\item Code factorization is achieved using a class hierarchy and (few) virtual methods.
\end{itemize}
% Insert image parameterizer_class_diagram.png/eps with
% title "A parameterizer UML class diagram (main types and methods only)"
% Insert image parameterizer_class_diagram.png/eps with title
% "A parameterizer UML class diagram (main types and methods only)" and scale = 1:1
\begin{center}
\label{Surface_mesh_parameterization-fig-parameterizer_class_diagram}
% Image
\begin{ccTexOnly}
\includegraphics[width=1.0\textwidth]{Surface_mesh_parameterization/parameterizer_class_diagram}
\includegraphics{Surface_mesh_parameterization/parameterizer_class_diagram}
\end{ccTexOnly}
\begin{ccHtmlOnly}
<img width="100%" border=0 src="./parameterizer_class_diagram.png"><P>
<img border=0 src="./parameterizer_class_diagram.png"><P>
\end{ccHtmlOnly}
% Title
\begin{figure}[h]
@ -106,15 +106,15 @@ Therefore, the software design chosen is:
\end{center}
% Insert image parameterizers_class_hierarchy.png/eps with
% title "Surface parameterizer classes hierarchy"
% title "Surface parameterizer classes hierarchy" and scale = 1:1
\begin{center}
\label{Surface_mesh_parameterization-fig-parameterizers_class_hierarchy}
% Image
\begin{ccTexOnly}
\includegraphics[width=0.9\textwidth]{Surface_mesh_parameterization/parameterizers_class_hierarchy}
\includegraphics{Surface_mesh_parameterization/parameterizers_class_hierarchy}
\end{ccTexOnly}
\begin{ccHtmlOnly}
<img width="90%" border=0 src="./parameterizers_class_hierarchy.png"><P>
<img border=0 src="./parameterizers_class_hierarchy.png"><P>
\end{ccHtmlOnly}
% Title
\begin{figure}[h]

View File

@ -27,8 +27,6 @@ The class Barycentric\_mapping\_parameterizer\_3 implements Tutte Barycentric Ma
One-to-one mapping is guaranteed if the surface's border is mapped to a convex polygon.
As all parameterization algorithms of the package, this class is usually called via the global function parameterize().
This class is a Strategy \cite{cgal:ghjv-dpero-95} called by the main parameterization algorithm Fixed\_border\_parameterizer\_3::parameterize(). Barycentric\_mapping\_parameterizer\_3:\begin{itemize}
\item provides default BorderParameterizer\_3 and SparseLinearAlgebraTraits\_d template parameters that make sense.\item implements compute\_w\_ij() to compute w\_ij = (i,j) coefficient of matrix A for j neighbor vertex of i based on Tutte Barycentric Mapping method.\item implements an optimized version of is\_one\_to\_one\_mapping().\end{itemize}
@ -60,6 +58,12 @@ class BorderParameterizer\_3 = Circular\_border\_arc\_length\_parameterizer\_3$<
class SparseLinearAlgebraTraits\_d = OpenNL::DefaultLinearSolverTraits$<$typename ParameterizationMesh\_3::NT$>$$>$ \\
class Barycentric\_mapping\_parameterizer\_3;
\begin{description}
\item[Parameters:]
\begin{description}
\item[ParameterizationMesh\_3]3D surface mesh. \item[BorderParameterizer\_3]Strategy to parameterize the surface border. \item[SparseLinearAlgebraTraits\_d]Traits class to solve a sparse linear system. Note: the system is NOT symmetric because Fixed\_border\_parameterizer\_3 does not remove (yet) border vertices from the system. \end{description}
\end{description}
%END-AUTO(\ccParameters)

View File

@ -29,8 +29,6 @@ DAP is a weak area-preserving parameterization. It is a compromise between area-
One-to-one mapping is guaranteed if surface's border is mapped onto a convex polygon.
As all parameterization algorithms of the package, this class is usually called via the global function parameterize().
This class is a Strategy \cite{cgal:ghjv-dpero-95} called by the main parameterization algorithm Fixed\_border\_parameterizer\_3::parameterize(). Discrete\_authalic\_parameterizer\_3:\begin{itemize}
\item provides default BorderParameterizer\_3 and SparseLinearAlgebraTraits\_d template parameters that make sense.\item implements compute\_w\_ij() to compute w\_ij = (i, j) coefficient of matrix A for j neighbor vertex of i based on Discrete Authalic Parameterization algorithm.\end{itemize}

View File

@ -29,8 +29,6 @@ This is a conformal parameterization, i.e. it attempts to preserve angles.
One-to-one mapping is guaranteed if surface's border is mapped onto a convex polygon.
As all parameterization algorithms of the package, this class is usually called via the global function parameterize().
This class is a Strategy \cite{cgal:ghjv-dpero-95} called by the main parameterization algorithm Fixed\_border\_parameterizer\_3::parameterize(). Discrete\_conformal\_map\_parameterizer\_3:\begin{itemize}
\item provides default BorderParameterizer\_3 and SparseLinearAlgebraTraits\_d template parameters that make sense.\item implements compute\_w\_ij() to compute w\_ij = (i, j) coefficient of matrix A for j neighbor vertex of i based on Discrete Conformal Map method.\end{itemize}
@ -62,6 +60,12 @@ class BorderParameterizer\_3 = Circular\_border\_arc\_length\_parameterizer\_3$<
class SparseLinearAlgebraTraits\_d = OpenNL::DefaultLinearSolverTraits$<$typename ParameterizationMesh\_3::NT$>$$>$ \\
class Discrete\_conformal\_map\_parameterizer\_3;
\begin{description}
\item[Parameters:]
\begin{description}
\item[ParameterizationMesh\_3]3D surface mesh. \item[BorderParameterizer\_3]Strategy to parameterize the surface border. \item[SparseLinearAlgebraTraits\_d]Traits class to solve a sparse linear system. Note: the system is NOT symmetric because Fixed\_border\_parameterizer\_3 does not remove (yet) border vertices from the system. \end{description}
\end{description}
%END-AUTO(\ccParameters)
@ -103,7 +107,7 @@ Constructor.
\ccMethod{virtual NT compute_w_ij (const Adaptor & mesh, Vertex_const_handle main_vertex_v_i, Vertex_around_vertex_const_circulator neighbor_vertex_v_j);}
{
Compute w\_ij = (i, j) coefficient of matrix A for j neighbor vertex of i.
Compute w\_ij = (i,j) coefficient of matrix A for j neighbor vertex of i.
}
\ccGlue

View File

@ -29,11 +29,6 @@ This is a conformal parameterization, i.e. it attempts to preserve angles.
This is a free border parameterization. No need to map the surface's border onto a convex polygon (only two pinned vertices are needed to ensure a unique solution), but one-to-one mapping is NOT guaranteed.
As all parameterization algorithms of the package, this class is usually called via the global function parameterize().
\begin{description}
\item[Todo]Add to SparseLinearAlgebraTraits\_d the ability to solve linear systems in the least squares sense, then access to the solver via the traits class interface instead of calls specific to OpenNL.\end{description}
%END-AUTO(\ccDefinition)
\ccInclude{CGAL/LSCM_parameterizer_3.h}

View File

@ -29,8 +29,6 @@ This is a conformal parameterization, i.e. it attempts to preserve angles.
One-to-one mapping is guaranteed if the surface's border is mapped to a convex polygon.
As all parameterization algorithms of the package, this class is usually called via the global function parameterize().
This class is a Strategy \cite{cgal:ghjv-dpero-95} called by the main parameterization algorithm Fixed\_border\_parameterizer\_3::parameterize(). Mean\_value\_coordinates\_parameterizer\_3:\begin{itemize}
\item provides default BorderParameterizer\_3 and SparseLinearAlgebraTraits\_d template parameters that make sense.\item implements compute\_w\_ij() to compute w\_ij = (i, j) coefficient of matrix A for j neighbor vertex of i based on Floater Mean Value Coordinates parameterization.\item implements an optimized version of is\_one\_to\_one\_mapping().\end{itemize}

View File

@ -25,9 +25,6 @@
The concept SparseLinearAlgebraTraits\_d is used to solve sparse linear systems {\em A$\ast$X = B}.
\begin{description}
\item[Todo]Add to SparseLinearAlgebraTraits\_d the ability to solve linear systems in the least squares sense.\end{description}
%END-AUTO(\ccDefinition)

View File

@ -23,10 +23,7 @@
% The section below is automatically generated. Do not edit!
%START-AUTO(\ccDefinition)
The class Taucs\_symmetric\_solver\_traits is a traits class for solving SYMMETRIC DEFINIE POSITIVE sparse linear systems using TAUCS solvers family. The default solver is the Multifrontal Supernodal Cholesky Factorization.
\begin{description}
\item[Todo]Add to Taucs\_symmetric\_solver\_traits the ability to solve linear systems in the least squares sense.\end{description}
The class Taucs\_symmetric\_solver\_traits is a traits class for solving SYMMETRIC DEFINITE POSITIVE sparse linear systems using TAUCS solvers family. The default solver is the Multifrontal Supernodal Cholesky Factorization.
%END-AUTO(\ccDefinition)
@ -86,7 +83,7 @@ class 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 DEFINIE POSITIVE matrices. The default solver is the Multifrontal Supernodal Cholesky Factorization. See taucs\_linsolve() documentation for the meaning of the 'options' and 'arguments' parameters.
Create a TAUCS sparse linear solver for SYMMETRIC DEFINITE POSITIVE matrices. The default solver is the Multifrontal Supernodal Cholesky Factorization. See taucs\_linsolve() documentation for the meaning of the 'options' and 'arguments' parameters.
}
\ccGlue
\begin{description}

View File

@ -178,8 +178,11 @@ efficient representation of sparse matrices and efficient iterative or
direct linear solvers, we provide an interface to several
sparse linear solvers:
\begin{itemize}
\item OpenNL (Bruno L{\'e}vy) is shipped with \cgal. This is the default solver.
\item {\sc Taucs} is a state-of-the-art direct solver for sparse symmetric matrices.
\item
OpenNL (Bruno L{\'e}vy) is shipped with \cgal. This is the default solver.
\item
{\sc Taucs} is a state-of-the-art direct solver for sparse symmetric matrices.
It also includes an out-of-core general solver.
\end{itemize}
\ccc{OpenNL::DefaultLinearSolverTraits<COEFFTYPE, MATRIX, VECTOR, SOLVER>} in OpenNL package \\

View File

@ -13,7 +13,7 @@
//
// $URL$
// $Id$
//
//
//
// Author(s) : Laurent Saboret, Pierre Alliez, Bruno Levy
@ -32,9 +32,6 @@ CGAL_BEGIN_NAMESPACE
///
/// One-to-one mapping is guaranteed if the surface's border is mapped to a convex polygon.
///
/// As all parameterization algorithms of the package, this class
/// is usually called via the global function parameterize().
///
/// This class is a Strategy [GHJV95] called by the main
/// parameterization algorithm Fixed_border_parameterizer_3::parameterize().
/// Barycentric_mapping_parameterizer_3:
@ -50,16 +47,21 @@ CGAL_BEGIN_NAMESPACE
/// Barycentric_mapping_parameterizer_3<ParameterizationMesh_3, ...> class is a
/// Strategy [GHJV95]: it implements a strategy of surface parameterization
/// for models of ParameterizationMesh_3.
///
/// Template parameters:
/// @param ParameterizationMesh_3 3D surface mesh.
/// @param BorderParameterizer_3 Strategy to parameterize the surface border.
/// @param SparseLinearAlgebraTraits_d Traits class to solve a sparse linear system.
/// Note: the system is NOT symmetric because Fixed_border_parameterizer_3
/// does not remove (yet) border vertices from the system.
template
<
class ParameterizationMesh_3, ///< 3D surface mesh
class BorderParameterizer_3 ///< Strategy to parameterize the surface border
class ParameterizationMesh_3,
class BorderParameterizer_3
= Circular_border_arc_length_parameterizer_3<ParameterizationMesh_3>,
class SparseLinearAlgebraTraits_d ///< Traits class to solve a sparse linear system
class SparseLinearAlgebraTraits_d
= OpenNL::DefaultLinearSolverTraits<typename ParameterizationMesh_3::NT>
///< Note: the sparse linear system is symmetric iff
///< Fixed_border_parameterizer_3 removes fixed vertices.
>
class Barycentric_mapping_parameterizer_3
: public Fixed_border_parameterizer_3<ParameterizationMesh_3,
@ -68,7 +70,7 @@ class Barycentric_mapping_parameterizer_3
{
// Private types
private:
/// Superclass
// Superclass
typedef Fixed_border_parameterizer_3<ParameterizationMesh_3,
BorderParameterizer_3,
SparseLinearAlgebraTraits_d>

View File

@ -13,7 +13,7 @@
//
// $URL$
// $Id$
//
//
//
// Author(s) : Laurent Saboret, Pierre Alliez, Bruno Levy
@ -36,9 +36,6 @@ CGAL_BEGIN_NAMESPACE
///
/// One-to-one mapping is guaranteed if surface's border is mapped onto a convex polygon.
///
/// As all parameterization algorithms of the package, this class
/// is usually called via the global function parameterize().
///
/// This class is a Strategy [GHJV95] called by the main
/// parameterization algorithm Fixed_border_parameterizer_3::parameterize().
/// Discrete_authalic_parameterizer_3:

View File

@ -13,7 +13,7 @@
//
// $URL$
// $Id$
//
//
//
// Author(s) : Laurent Saboret, Pierre Alliez, Bruno Levy
@ -36,9 +36,6 @@ CGAL_BEGIN_NAMESPACE
///
/// One-to-one mapping is guaranteed if surface's border is mapped onto a convex polygon.
///
/// As all parameterization algorithms of the package, this class
/// is usually called via the global function parameterize().
///
/// This class is a Strategy [GHJV95] called by the main
/// parameterization algorithm Fixed_border_parameterizer_3::parameterize().
/// Discrete_conformal_map_parameterizer_3:
@ -53,17 +50,21 @@ CGAL_BEGIN_NAMESPACE
/// Discrete_conformal_map_parameterizer_3<ParameterizationMesh_3, ...> class is a
/// Strategy [GHJV95]: it implements a strategy of surface parameterization
/// for models of ParameterizationMesh_3.
///
/// Template parameters:
/// @param ParameterizationMesh_3 3D surface mesh.
/// @param BorderParameterizer_3 Strategy to parameterize the surface border.
/// @param SparseLinearAlgebraTraits_d Traits class to solve a sparse linear system.
/// Note: the system is NOT symmetric because Fixed_border_parameterizer_3
/// does not remove (yet) border vertices from the system.
template
<
class ParameterizationMesh_3, ///< 3D surface mesh
class BorderParameterizer_3 ///< Strategy to parameterize the surface border
class ParameterizationMesh_3,
class BorderParameterizer_3
= Circular_border_arc_length_parameterizer_3<ParameterizationMesh_3>,
class SparseLinearAlgebraTraits_d ///< Traits class to solve a sparse linear system
class SparseLinearAlgebraTraits_d
= OpenNL::DefaultLinearSolverTraits<typename ParameterizationMesh_3::NT>
///< Note: the sparse linear system is symmetric
///< (except around holes) iff
///< Fixed_border_parameterizer_3 removes fixed vertices.
>
class Discrete_conformal_map_parameterizer_3
: public Fixed_border_parameterizer_3<ParameterizationMesh_3,
@ -143,7 +144,7 @@ public:
// Protected operations
protected:
/// Compute w_ij = (i, j) coefficient of matrix A for j neighbor vertex of i.
/// Compute w_ij = (i,j) coefficient of matrix A for j neighbor vertex of i.
virtual NT compute_w_ij(const Adaptor& mesh,
Vertex_const_handle main_vertex_v_i,
Vertex_around_vertex_const_circulator neighbor_vertex_v_j)

View File

@ -300,8 +300,9 @@ parameterize(Adaptor& mesh)
// Fill the border vertices' lines in both linear systems:
// "u = constant" and "v = constant"
//
// Implementation note: the current implementation does not remove
// border vertices from the linear systems => A cannot be symmetric
// @todo Fixed_border_parameterizer_3 should remove border vertices
// from the linear systems in order to have a symmetric definite positive
// matrix for Tutte Barycentric Mapping and Discrete Conformal Map algorithms.
initialize_system_from_mesh_border (A, Bu, Bv, mesh);
// Fill the matrix for the inner vertices v_i: compute A's coefficient

View File

@ -47,13 +47,6 @@ CGAL_BEGIN_NAMESPACE
/// onto a convex polygon (only two pinned vertices are needed to ensure a
/// unique solution), but one-to-one mapping is NOT guaranteed.
///
/// As all parameterization algorithms of the package, this class
/// is usually called via the global function parameterize().
///
/// @todo Add to SparseLinearAlgebraTraits_d the ability to solve
/// linear systems in the least squares sense, then access to the solver
/// via the traits class interface instead of calls specific to OpenNL.
///
/// Concept: Model of the ParameterizerTraits_3 concept.
///
/// Design Pattern:
@ -63,14 +56,16 @@ CGAL_BEGIN_NAMESPACE
template
<
class ParameterizationMesh_3, ///< 3D surface mesh
class BorderParameterizer_3 ///< Strategy to parameterize the surface border
class ParameterizationMesh_3, ///< 3D surface mesh.
class BorderParameterizer_3
= Two_vertices_parameterizer_3<ParameterizationMesh_3>,
///< Class to parameterize two border vertices
class SparseLinearAlgebraTraits_d ///< Traits class to solve a sparse linear system
///< Strategy to parameterize the surface border.
///< The minimum is to parameterize two vertices.
class SparseLinearAlgebraTraits_d
= OpenNL::SymmetricLinearSolverTraits<typename ParameterizationMesh_3::NT>
///< Symmetric solver for solving a sparse linear
///< system in the least squares sense
///< Traits class to solve a sparse linear system.
///< We may use a symmetric solver because LSCM
///< solves the system in the least squares sense.
>
class LSCM_parameterizer_3
: public Parameterizer_traits_3<ParameterizationMesh_3>

View File

@ -13,7 +13,7 @@
//
// $URL$
// $Id$
//
//
//
// Author(s) : Laurent Saboret, Pierre Alliez, Bruno Levy
@ -35,9 +35,6 @@ CGAL_BEGIN_NAMESPACE
///
/// One-to-one mapping is guaranteed if the surface's border is mapped to a convex polygon.
///
/// As all parameterization algorithms of the package, this class
/// is usually called via the global function parameterize().
///
/// This class is a Strategy [GHJV95] called by the main
/// parameterization algorithm Fixed_border_parameterizer_3::parameterize().
/// Mean_value_coordinates_parameterizer_3:

View File

@ -36,13 +36,10 @@ CGAL_BEGIN_NAMESPACE
/// The class Taucs_symmetric_solver_traits
/// is a traits class for solving SYMMETRIC DEFINIE POSITIVE sparse linear systems
/// is a traits class for solving SYMMETRIC DEFINITE POSITIVE sparse linear systems
/// using TAUCS solvers family.
/// The default solver is the Multifrontal Supernodal Cholesky Factorization.
///
/// @todo Add to Taucs_symmetric_solver_traits the ability to solve
/// linear systems in the least squares sense.
///
/// Concept: Model of the SparseLinearAlgebraTraits_d concept.
template<class T> // Tested with T = taucs_single or taucs_double
@ -59,7 +56,7 @@ public:
// Public operations
public:
/// Create a TAUCS sparse linear solver for SYMMETRIC DEFINIE POSITIVE matrices.
/// Create a TAUCS sparse linear solver for SYMMETRIC DEFINITE POSITIVE matrices.
/// The default solver is the Multifrontal Supernodal Cholesky Factorization.
/// See taucs_linsolve() documentation for the meaning of the
/// 'options' and 'arguments' parameters.