mirror of https://github.com/CGAL/cgal
Clarify documentation about symmetric/asymmetric matrices
This commit is contained in:
parent
c37d17aa82
commit
86adba238c
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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 \\
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Reference in New Issue