mirror of https://github.com/CGAL/cgal
global update user manual (compression!)
This commit is contained in:
parent
bba16b6593
commit
c79f8dc7f1
|
|
@ -8,48 +8,24 @@ is the following function:
|
|||
|
||||
\ccFunction{Parameterizer_traits_3<ParameterizationMesh_3>::Error_code parameterize (ParameterizationMesh_3 & mesh);}
|
||||
{
|
||||
Compute a one-to-one mapping from a 3D triangle surface 'mesh' to a 2D circle, using Floater Mean Value Coordinates algorithm. A one-to-one mapping is guaranteed.
|
||||
The mapping is piecewise linear on the input mesh triangles. The result is a (u,v) pair of parameter coordinates for each vertex of the input mesh.
|
||||
Preconditions:\begin{itemize}
|
||||
\item 'mesh' must be a surface with one connected component.\item 'mesh' must be a triangular mesh.\end{itemize}
|
||||
}
|
||||
Compute a one-to-one mapping from a 3D triangle surface mesh to a 2D circle, using Floater Mean Value Coordinates algorithm. A one-to-one piecewise linear mapping is guaranteed. The result is a pair of (u,v) parameter coordinates for each vertex of the input mesh.\\
|
||||
Preconditions: mesh must be a triangle mesh surface with one connected component.}
|
||||
|
||||
The \ccc{CGAL::parameterize()} function applies a default surface parameterization
|
||||
The function \ccc{CGAL::parameterize()} applies a default surface parameterization
|
||||
method: Floater Mean Value Coordinates~\cite{cgal:f-mvc-03}, with an
|
||||
arc-length circular border parameterization, and using OpenNL sparse
|
||||
linear solver~\cite{cgal:l-nmdgp-05}.
|
||||
linear solver~\cite{cgal:l-nmdgp-05}. The \ccc{ParameterizationMesh_3} concept defines the input meshes handled by \ccc{CGAL::parameterize()}. See Section \ref{sec:Input-Mesh-for-parameterize}. The result is stored into the (u,v) fields of the mesh halfedges.
|
||||
|
||||
The \ccc{ParameterizationMesh_3} concept defines the input meshes handled
|
||||
by \ccc{CGAL::parameterize()}. See Section \ref{sec:Input-Mesh-for-parameterize}.
|
||||
|
||||
The result is stored into the (u,v) fields of the mesh halfedges.
|
||||
|
||||
Note: \ccc{CGAL::Parameterizer_traits_3<ParameterizationMesh_3>} is the (pure virtual)
|
||||
superclass of all surface parameterizations and defines the error codes.
|
||||
Note: \ccc{CGAL::Parameterizer_traits_3<ParameterizationMesh_3>} is the (pure virtual) superclass of all surface parameterizations and defines the error codes.
|
||||
|
||||
|
||||
\subsection{Input Mesh for parameterize()}
|
||||
\label{sec:Input-Mesh-for-parameterize}
|
||||
|
||||
The general definition of input meshes handled \emph{directly} by \ccc{CGAL::parameterize()} is:
|
||||
The input meshes handled \emph{directly} by \ccc{CGAL::parameterize()} must be models of \ccc{ParameterizationMesh_3}, triangulated, 2-manifold, oriented, and homeomorphic to discs (possibly with holes).
|
||||
|
||||
\begin{itemize}
|
||||
|
||||
\item Model of \ccc{ParameterizationMesh_3}.
|
||||
|
||||
\item Triangulated.
|
||||
|
||||
\item 2-manifold.
|
||||
|
||||
\item Oriented.
|
||||
|
||||
\item Homeomorphic to a disc (may have holes).
|
||||
|
||||
\end{itemize}
|
||||
|
||||
Note: \ccc{ParameterizationMesh_3} is a general concept to access to a
|
||||
polyhedral mesh.
|
||||
It is optimized for the \ccc{Surface_mesh_parameterization} package
|
||||
Note: \ccc{ParameterizationMesh_3} is a general concept to access a
|
||||
polyhedral mesh. It is optimized for the \ccc{Surface_mesh_parameterization} package
|
||||
only in the sense that it
|
||||
defines the accessors to fields specific to the parameterization domain
|
||||
(\ccc{index}, \ccc{u}, \ccc{v}, \ccc{is_parameterized}).
|
||||
|
|
@ -82,10 +58,8 @@ where the user can specify a parameterization method:
|
|||
\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 'mesh' to a simple 2D domain. The mapping is piecewise linear on the triangle mesh. The result is a pair (u,v) of parameter coordinates for each vertex of the input mesh.
|
||||
One-to-one mapping may be guaranteed or not, depending on the chosen \ccc{ParametizerTraits_3} algorithm.
|
||||
Preconditions:\begin{itemize}
|
||||
\item 'mesh' must be a surface with one connected component.\item 'mesh' must be a triangular mesh.\item the mesh border must be mapped onto a convex polygon (for fixed border parameterizations).\end{itemize}
|
||||
}
|
||||
One-to-one mapping may be guaranteed or not, depending on the chosen \ccc{ParametizerTraits_3} algorithm.\\
|
||||
Preconditions: 'mesh' must be a triangle surface mesh with one connected component, and the mesh border must be mapped onto a convex polygon (for fixed border parameterizations).}
|
||||
|
||||
|
||||
\subsection{Introduction to the Package Concepts}
|
||||
|
|
@ -97,8 +71,7 @@ surface parameterization methods, such as Least Squares Conformal Maps,
|
|||
Discrete Conformal Map, Discrete Authalic
|
||||
Parameterization, Floater Mean Value Coordinates or Tutte Barycentric
|
||||
Mapping. These methods are provided as models of the
|
||||
\ccc{ParameterizerTraits_3} concept.
|
||||
See Section \ref{sec:Surface-Parameterization-Methods}.
|
||||
\ccc{ParameterizerTraits_3} concept. See Section \ref{sec:Surface-Parameterization-Methods}.
|
||||
|
||||
Each of these surface parameterization methods is templated by
|
||||
the input mesh type, a border parameterization and a solver:
|
||||
|
|
@ -116,7 +89,7 @@ the input mesh type, a border parameterization and a solver:
|
|||
\end{ccHtmlOnly}
|
||||
% Title
|
||||
\begin{figure}[h]
|
||||
\caption{A parameterizer UML class diagram (simplified)}
|
||||
\caption{A parameterizer UML class diagram (simplified).}
|
||||
\end{figure}
|
||||
\end{center}
|
||||
|
||||
|
|
@ -134,40 +107,29 @@ and \ref{sec:Border-Parameterizations-for-Free-Methods}.
|
|||
\subsubsection{The SparseLinearAlgebraTraits\_d concept}
|
||||
|
||||
This package solves sparse linear systems using solvers which are models
|
||||
of \ccc{SparseLinearAlgebraTraits_d}.
|
||||
See Section \ref{sec:Sparse-Linear-Algebra}.
|
||||
of \ccc{SparseLinearAlgebraTraits_d}. See Section \ref{sec:Sparse-Linear-Algebra}.
|
||||
|
||||
|
||||
\subsubsection{The ParameterizationMesh\_3 and ParameterizationPatchableMesh\_3 Concepts}
|
||||
|
||||
We saw in Section \ref{sec:Input-Mesh-for-parameterize}
|
||||
that the input meshes handled by \ccc{CGAL::parameterize()}
|
||||
must be models of the \ccc{ParameterizationMesh_3} concept.
|
||||
|
||||
We also saw that the surface parameterization methods in this package only support
|
||||
surfaces that are homeomorphic to disks. How about non disk-like meshes?
|
||||
|
||||
Fortunately, the input mesh can be of any genus and
|
||||
have any number of connected components. If it is not a topological
|
||||
disc, it has to come with a description of a cutting path (an oriented list of
|
||||
vertices) which is the border of a topological disc. If no cutting path is
|
||||
given as input, we assume that the surface border is the longest border already
|
||||
in the input mesh (the other borders will be considered as holes).
|
||||
As described in Section \ref{sec:Input-Mesh-for-parameterize}
|
||||
the input meshes handled by \ccc{CGAL::parameterize()}
|
||||
must be models of the \ccc{ParameterizationMesh_3} concept. The surface parameterization methods provided by this package only support
|
||||
surfaces which are homeomorphic to disks, possibly with holes. Nevertheless meshed with arbitrary topology and number of connected components can be parameterized, provided that the user specifies a \emph{cut graph} (an oriented list of
|
||||
vertices) which is the border of a topological disc. If no cut graph is
|
||||
specified as input, the longest border of the input mesh is taken by default, the others being considered as holes.
|
||||
|
||||
For this purpose, the
|
||||
\ccc{CGAL::Parameterization_mesh_patch_3<ParameterizationPatchableMesh_3>}
|
||||
class is responsible for \emph{virtually} cutting
|
||||
a patch in a \ccc{ParameterizationPatchableMesh_3} mesh.
|
||||
a patch into a \ccc{ParameterizationPatchableMesh_3} mesh.
|
||||
The resulting patch is a topological
|
||||
disk (if the input cutting path is correct)
|
||||
and provides a \ccc{ParameterizationMesh_3} interface. It can be used as
|
||||
parameter of \ccc{CGAL::parameterize()}.
|
||||
parameter for the function \ccc{CGAL::parameterize()}.
|
||||
|
||||
\ccc{ParameterizationPatchableMesh_3} inherits from \ccc{ParameterizationMesh_3},
|
||||
thus is a concept for a 3D surface mesh.
|
||||
\ccc{ParameterizationPatchableMesh_3} adds the ability to support patches and
|
||||
virtual seams. \emph{Patches} are a subset of a 3D mesh.
|
||||
\emph{Virtual seams} are the ability
|
||||
to behave exactly as if the surface was cut along a certain path.
|
||||
|
||||
See more information in Section \ref{sec:Cutting-a-Mesh}.
|
||||
\emph{Virtual seams} behave as if the surface was cut along a cut graph. More information is provided in Section \ref{sec:Cutting-a-Mesh}.
|
||||
|
|
|
|||
|
|
@ -11,17 +11,16 @@
|
|||
|
||||
\item One-to-one mapping
|
||||
|
||||
Tutte's theorem guarantees a one-to-one mapping provided that the weights are positive
|
||||
Tutte's theorem guarantees a one-to-one mapping provided that the weights are all positive
|
||||
and the border convex.
|
||||
It is the case for Tutte Barycentric Mapping and Floater Mean Value Coordinates.
|
||||
It is not always the case for Discrete Conformal Map (cotangents) and
|
||||
Discrete Authalic Parameterization.
|
||||
It is the case for Tutte barycentric mapping and Floater mean value coordinates.
|
||||
It is not always the case for discrete conformal map (cotangents) and
|
||||
discrete authalic parameterization.
|
||||
|
||||
\item Non-singularity of the matrix
|
||||
|
||||
Geshorgin's theorem guarantees the convergence of the solver if the matrix is diagonal dominant.
|
||||
This is the case with positive weights (Tutte Barycentric Mapping and Floater Mean Value
|
||||
Coordinates).
|
||||
This is the case with positive weights (Tutte barycentric mapping and Floater mean value coordinates).
|
||||
|
||||
\end{itemize}
|
||||
|
||||
|
|
@ -31,12 +30,12 @@
|
|||
|
||||
\item One-to-one mapping
|
||||
|
||||
No guarantee can be given for LSCM (both global overlaps and triangle flips can
|
||||
No guarantee is provided by LSCM (both global overlaps and triangle flips can
|
||||
occur).
|
||||
|
||||
\item Non-singularity of the matrix
|
||||
|
||||
Proven for LSCM: the matrix of the system is the Gramm matrix of a matrix of maximal rank,
|
||||
For LSCM, the matrix of the system is the Gramm matrix of a matrix with maximal rank,
|
||||
and is therefore non-singular (Gramm theorem).
|
||||
|
||||
\end{itemize}
|
||||
|
|
@ -46,12 +45,12 @@
|
|||
|
||||
\subsection{Precision}
|
||||
|
||||
Only a few algorithms of this package construct the sparse linear system(s)
|
||||
using trigonometric functions, incompatible with an exact arithmetic:
|
||||
Two algorithms of this package construct the sparse linear system(s)
|
||||
using trigonometric functions, and are this incompatible with exact arithmetic:
|
||||
|
||||
\begin{itemize}
|
||||
|
||||
\item Floater Mean Value Coordinates
|
||||
\item Floater mean value coordinates
|
||||
|
||||
\item Circular border parameterization
|
||||
|
||||
|
|
@ -59,26 +58,22 @@ using trigonometric functions, incompatible with an exact arithmetic:
|
|||
|
||||
On the other hand, linear solvers commonly use double precision floating point
|
||||
numbers. \\
|
||||
OpenNL's BICGSTAB solver (accessible though the
|
||||
OpenNL's BICGSTAB solver (accessible through the
|
||||
\ccc{OpenNL::DefaultLinearSolverTraits<COEFFTYPE, MATRIX, VECTOR, SOLVER>} interface)
|
||||
is the only solver supported by this package that
|
||||
computes exact results (when used with an exact arithmetic).
|
||||
|
||||
Therefore, this package is intended to be used with a \cgal\
|
||||
cartesian kernel with doubles.
|
||||
is the only solver supported by this package which
|
||||
computes exact results, when used with an exact arithmetic. This package is
|
||||
intended to be used mainly with a \cgal\ Cartesian kernel with doubles.
|
||||
|
||||
|
||||
\subsubsection{OpenNL's BICGSTAB Solver with an Exact Arithmetic}
|
||||
|
||||
The BICGSTAB conjugate gradient is in fact a direct solver.
|
||||
The BICGSTAB conjugate gradient is in disguise a direct solver.
|
||||
In a nutshell, it computes a vector basis
|
||||
orthogonal with respect to the matrix, and the coordinates of the solution in this vector basis.
|
||||
Each iteration computes one component of the basis and one coordinate, therefore the algorithm
|
||||
converges to the solution in $n$ iterations, where $n$ is the dimension of the matrix.
|
||||
In fact, it can be even less than $n$, it converges in $k$ iteration, where $k$ is the number
|
||||
of distinct eigenvalues of the matrix. \\
|
||||
\emph{Note:} for a perfectly conditioned matrix, it converges in one iteration!
|
||||
converges to the solution in $n$ iterations, where $n$ is the dimension of the matrix. More precisely, it is shown to converge in $k$ iteration, where $k$ is the number of distinct eigenvalues of the matrix.
|
||||
|
||||
% For a perfectly conditioned matrix, it converges in a single iteration.
|
||||
|
||||
\subsubsection{Solvers with a Floating Point Arithmetic}
|
||||
|
||||
|
|
@ -101,9 +96,9 @@ The algorithmic complexity is dominated by the resolution of the sparse linear s
|
|||
|
||||
\emph{OpenNL's BICGSTAB example:}
|
||||
|
||||
At each iteration, the operation of highest complexity is the sparse-matrix x vector product.
|
||||
At each iteration, the operation of highest complexity is the product between the sparse-matrix and a vector.
|
||||
The sparse matrix has a fixed number of non-zero coefficients per row,
|
||||
therefore the sparse-matrix x vector product has $O(n)$ complexity.
|
||||
therefore the matrix / vector product has $O(n)$ complexity.
|
||||
Since convergence is reached after $k$ iterations, the complexity is $O(k.n)$
|
||||
(where $k$ is the number of distinct eigenvalues of the matrix).
|
||||
Therefore, best case complexity is $O(n)$ (equilateral triangles),
|
||||
|
|
|
|||
|
|
@ -29,13 +29,13 @@ data structure.
|
|||
|
||||
Since parameterizing meshes require efficient representation of sparse
|
||||
matrices and efficient iterative or direct linear solvers, we provide
|
||||
an interface common to state-of-the-art linear solver libraries ({\sc Taucs}),
|
||||
a unified interface to state-of-the-art linear solver libraries ({\sc Taucs}),
|
||||
and propose a separate package devoted to OpenNL sparse
|
||||
linear solver.
|
||||
|
||||
Note that linear solvers commonly use double precision floating point
|
||||
numbers. Therefore, this package is intended to be used with a \cgal\
|
||||
cartesian kernel with doubles.
|
||||
Cartesian kernel with doubles.
|
||||
|
||||
The intended audience of this package is researchers, developers or
|
||||
students developing algorithms around parameterization of triangle
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
\chapter{Planar Parameterization of Triangulated Surface Meshes}
|
||||
\label{chap:surface_mesh_parameterization}
|
||||
\ccChapterAuthor{Laurent Saboret, Pierre Alliez \and Bruno Levy}
|
||||
\ccChapterAuthor{Laurent Saboret, Pierre Alliez \and Bruno L\'evy}
|
||||
|
||||
\minitoc
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
Parameterization methods compute $(u,v)$ fields for each vertex
|
||||
of the input mesh, with the seam vertices being virtually duplicated (thanks
|
||||
to \ccc{CGAL::Parameterization_mesh_patch_3<ParameterizationPatchableMesh_3>}).
|
||||
|
||||
To support this duplication,
|
||||
\ccc{CGAL::Parameterization_polyhedron_adaptor_3<Polyhedron_3_>} stores
|
||||
the result in the $(u,v)$ fields of the input mesh halfedges.
|
||||
|
|
@ -11,16 +10,13 @@ A $(u,v)$ pair is computed for
|
|||
each inner vertex (i.e. its halfedges share the same $(u,v)$ pair),
|
||||
while a $(u,v)$ pair is computed for each border halfedge.
|
||||
The user has to iterate over the mesh halfedges to get the result.
|
||||
|
||||
Note: $(u,v)$ fields do not exist in \ccc{CGAL::Polyhedron_3<Traits>},
|
||||
Note that $(u,v)$ fields do not exist in \ccc{CGAL::Polyhedron_3<Traits>},
|
||||
thus the output traversal is specific to the way the (u,v) fields are implemented by the adaptor.
|
||||
|
||||
\subsection{EPS Output Example}
|
||||
|
||||
\ccc{Complete_parameterization_example.C} is a complete parameterization
|
||||
example that outputs the result as an EPS image.
|
||||
It gets the $(u,v)$ fields computed by a
|
||||
parameterization method over a \ccc{CGAL::Polyhedron_3<Traits>} mesh with a
|
||||
example which outputs the resulting parameterization to a EPS file. It gets the $(u,v)$ fields computed by a parameterization method over a \ccc{CGAL::Polyhedron_3<Traits>} mesh with a
|
||||
\ccc{CGAL::Parameterization_polyhedron_adaptor_3<Polyhedron_3_>} adaptor:
|
||||
|
||||
\ccIncludeExampleCode{Surface_mesh_parameterization/Complete_parameterization_example.C}
|
||||
|
|
|
|||
|
|
@ -23,58 +23,29 @@ Such border parameterizations are described in Section
|
|||
The Barycentric Mapping parameterization method has been introduced by
|
||||
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.
|
||||
|
||||
\emph{Complexity:}
|
||||
|
||||
This amounts to solve one
|
||||
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.
|
||||
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.
|
||||
entry. Although a bijective mapping is guaranteed when the border is convex, this method does not minimize angles nor areas distortion.
|
||||
|
||||
\emph{Guarantees:}
|
||||
|
||||
Always bijective when the border is convex.
|
||||
|
||||
\emph{Usage:}
|
||||
|
||||
Although Tutte Barycentric Mapping method is fast and
|
||||
guaranteed to be bijective, it does not minimize angles nor areas
|
||||
distortion.
|
||||
|
||||
% Insert image uniform.png/eps with
|
||||
% title "Tutte Barycentric Mapping (the red line emphasizes the cutting path)"
|
||||
% Tutte barycentric mapping
|
||||
\begin{center}
|
||||
\label{Surface_mesh_parameterization-fig-uniform}
|
||||
% Image
|
||||
\begin{ccTexOnly}
|
||||
\includegraphics[width=0.45\textwidth]{Surface_mesh_parameterization/uniform}
|
||||
\includegraphics[width=0.45\textwidth]{Surface_mesh_parameterization/uniform_2}
|
||||
\end{ccTexOnly}
|
||||
\begin{ccHtmlOnly}
|
||||
<img width="45%" border=0 src="./uniform.png"><P>
|
||||
\end{ccHtmlOnly}
|
||||
% Title
|
||||
\begin{figure}[h]
|
||||
\caption{Tutte Barycentric Mapping (the red line emphasizes the cutting path)}
|
||||
\end{figure}
|
||||
\end{center}
|
||||
|
||||
% Insert image uniform_2.png/eps with title "Teapot's image with Tutte Barycentric Mapping"
|
||||
\begin{center}
|
||||
\label{Surface_mesh_parameterization-fig-uniform_2}
|
||||
% Image
|
||||
\begin{ccTexOnly}
|
||||
\includegraphics[width=0.45\textwidth]{Surface_mesh_parameterization/uniform_2}
|
||||
\end{ccTexOnly}
|
||||
\begin{ccHtmlOnly}
|
||||
<img width="45%" border=0 src="./uniform_2.png"><P>
|
||||
\end{ccHtmlOnly}
|
||||
% Title
|
||||
\begin{figure}[h]
|
||||
\caption{Teapot's image with Tutte Barycentric Mapping}
|
||||
\caption{Left: Tutte barycentric mapping parameterization (the red
|
||||
line depicts the cut graph). Right: parameter space.}
|
||||
\end{figure}
|
||||
\end{center}
|
||||
|
||||
|
|
@ -83,99 +54,54 @@ distortion.
|
|||
|
||||
\ccc{CGAL::Discrete_conformal_map_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>} \\
|
||||
|
||||
Discrete Conformal Map parameterization has been introduced by Eck et
|
||||
al. to the graphics community~\cite{cgal:eddhls-maam-95}.
|
||||
|
||||
\emph{Usage:}
|
||||
|
||||
It attempts to
|
||||
Discrete conformal map parameterization has been introduced by Eck et
|
||||
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}.
|
||||
In practice, this gives visually nice results.
|
||||
|
||||
\emph{Guarantees:}
|
||||
|
||||
A one-to-one mapping is guaranteed only when two 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.
|
||||
|
||||
% pierre: add cot figure, and detail what it means to have all weights
|
||||
% positive, otherwise it is confusing.
|
||||
|
||||
\emph{Complexity:}
|
||||
|
||||
This method solves two \#vertices x \#vertices sparse linear
|
||||
systems. The matrix (the same for both systems) is symmetric definite
|
||||
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
|
||||
systems. The matrix (the same for both systems) is sparse and symmetric definite
|
||||
positive, thus can be efficiently solved using dedicated linear
|
||||
solvers.
|
||||
|
||||
% Insert image conformal.png/eps with title "Discrete Conformal Map"
|
||||
% 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.45\textwidth]{Surface_mesh_parameterization/conformal_2}
|
||||
\end{ccTexOnly}
|
||||
\begin{ccHtmlOnly}
|
||||
<img width="45%" border=0 src="./conformal.png"><P>
|
||||
\end{ccHtmlOnly}
|
||||
% Title
|
||||
\begin{figure}[h]
|
||||
\caption{Discrete Conformal Map}
|
||||
\caption{Left: discrete conformal map. Right: parameter space.}
|
||||
\end{figure}
|
||||
\end{center}
|
||||
|
||||
% Insert image conformal_2.png/eps with title "Teapot's image with Discrete Conformal Map"
|
||||
\begin{center}
|
||||
\label{Surface_mesh_parameterization-fig-conformal_2}
|
||||
% Image
|
||||
\begin{ccTexOnly}
|
||||
\includegraphics[width=0.45\textwidth]{Surface_mesh_parameterization/conformal_2}
|
||||
\end{ccTexOnly}
|
||||
\begin{ccHtmlOnly}
|
||||
<img width="45%" border=0 src="./conformal_2.png"><P>
|
||||
\end{ccHtmlOnly}
|
||||
% Title
|
||||
\begin{figure}[h]
|
||||
\caption{Teapot's image with Discrete Conformal Map}
|
||||
\end{figure}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsubsection{Floater Mean Value Coordinates}
|
||||
|
||||
\ccc{CGAL::Mean_value_coordinates_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>} \\
|
||||
|
||||
The Mean Value Coordinates parameterization method has been introduced
|
||||
The mean value coordinates parameterization method has been introduced
|
||||
by Floater~\cite{cgal:f-mvc-03}. Each vertex in parameter space is
|
||||
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.
|
||||
|
||||
\emph{Usage:}
|
||||
|
||||
It is in essence an approximation of the Discrete Conformal
|
||||
Maps, with a one-to-one mapping always guaranteed.
|
||||
|
||||
\emph{Guarantees:}
|
||||
|
||||
Always bijective when the border is convex.
|
||||
|
||||
\emph{Complexity:}
|
||||
|
||||
This method solves
|
||||
two \#vertices x \#vertices sparse linear systems. The matrix (the
|
||||
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
|
||||
same for both systems) is asymmetric.
|
||||
|
||||
% Insert image floater.png/eps with title "Floater Mean Value Coordinates"
|
||||
% Floater mean value coordinates
|
||||
\begin{center}
|
||||
\label{Surface_mesh_parameterization-fig-floater}
|
||||
% Image
|
||||
\begin{ccTexOnly}
|
||||
\includegraphics[width=0.45\textwidth]{Surface_mesh_parameterization/floater}
|
||||
\includegraphics[width=0.45\textwidth]{Surface_mesh_parameterization/floater_2}
|
||||
\end{ccTexOnly}
|
||||
\begin{ccHtmlOnly}
|
||||
<img width="45%" border=0 src="./floater.png"><P>
|
||||
|
|
@ -186,54 +112,26 @@ same for both systems) is asymmetric.
|
|||
\end{figure}
|
||||
\end{center}
|
||||
|
||||
% Insert image floater_2.png/eps with title "Teapot's image with Floater Mean Value Coordinates"
|
||||
\begin{center}
|
||||
\label{Surface_mesh_parameterization-fig-floater_2}
|
||||
% Image
|
||||
\begin{ccTexOnly}
|
||||
\includegraphics[width=0.45\textwidth]{Surface_mesh_parameterization/floater_2}
|
||||
\end{ccTexOnly}
|
||||
\begin{ccHtmlOnly}
|
||||
<img width="45%" border=0 src="./floater_2.png"><P>
|
||||
\end{ccHtmlOnly}
|
||||
% Title
|
||||
\begin{figure}[h]
|
||||
\caption{Teapot's image with Floater Mean Value Coordinates}
|
||||
\end{figure}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsubsection{Discrete Authalic parameterization}
|
||||
|
||||
\ccc{CGAL::Discrete_authalic_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>} \\
|
||||
|
||||
The Discrete Authalic parameterization method has been introduced by
|
||||
Desbrun, Meyer and Alliez~\cite{cgal:dma-ipsm-02}.
|
||||
|
||||
\emph{Usage:}
|
||||
|
||||
It corresponds to
|
||||
The discrete authalic parameterization method has been introduced by
|
||||
Desbrun et al.~\cite{cgal:dma-ipsm-02}. It corresponds to
|
||||
a weak formulation of an area-preserving method, and in essence
|
||||
locally minimizes the area distortion.
|
||||
|
||||
\emph{Guarantees:}
|
||||
|
||||
A one-to-one mapping is
|
||||
locally minimizes the area distortion. A one-to-one mapping is
|
||||
guaranteed only if the convex combination condition is fulfilled and
|
||||
the border is convex.
|
||||
|
||||
\emph{Complexity:}
|
||||
|
||||
This method solves two
|
||||
the border is convex. This method solves two
|
||||
\#vertices x \#vertices sparse linear systems. The matrix (the same
|
||||
for both systems) is asymmetric.
|
||||
|
||||
% Insert image authalic.png/eps with title "Discrete Authalic Parameterization"
|
||||
% Discrete authalic parameterization
|
||||
\begin{center}
|
||||
\label{Surface_mesh_parameterization-fig-authalic}
|
||||
% Image
|
||||
\begin{ccTexOnly}
|
||||
\includegraphics[width=0.45\textwidth]{Surface_mesh_parameterization/authalic}
|
||||
\includegraphics[width=0.45\textwidth]{Surface_mesh_parameterization/authalic_2}
|
||||
\end{ccTexOnly}
|
||||
\begin{ccHtmlOnly}
|
||||
<img width="45%" border=0 src="./authalic.png"><P>
|
||||
|
|
@ -244,32 +142,13 @@ for both systems) is asymmetric.
|
|||
\end{figure}
|
||||
\end{center}
|
||||
|
||||
% Insert image authalic_2.png/eps with title "Teapot's image with Discrete Authalic Parameterization"
|
||||
\begin{center}
|
||||
\label{Surface_mesh_parameterization-fig-authalic_2}
|
||||
% Image
|
||||
\begin{ccTexOnly}
|
||||
\includegraphics[width=0.45\textwidth]{Surface_mesh_parameterization/authalic_2}
|
||||
\end{ccTexOnly}
|
||||
\begin{ccHtmlOnly}
|
||||
<img width="45%" border=0 src="./authalic_2.png"><P>
|
||||
\end{ccHtmlOnly}
|
||||
% Title
|
||||
\begin{figure}[h]
|
||||
\caption{Teapot's image with Discrete Authalic Parameterization}
|
||||
\end{figure}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsubsection{Border Parameterizations for Fixed Methods}
|
||||
\label{sec:Border-Parameterizations-for-Fixed-Methods}
|
||||
|
||||
Parameterization methods for
|
||||
borders are used as traits classes modifying the behavior of
|
||||
\ccc{ParameterizerTraits_3} models.
|
||||
They are provided as models of the \ccc{BorderParameterizer_3} concept.
|
||||
|
||||
Border Parameterizations for Fixed Border Surface Parameterizations
|
||||
They are provided as models of the \ccc{BorderParameterizer_3} concept. Border parameterizations for fixed border surface parameterizations
|
||||
are a family of methods to define a set of constraints, namely two
|
||||
$u,v$ coordinates for each vertex along the border.
|
||||
|
||||
|
|
@ -302,39 +181,25 @@ $u,v$ coordinates for each vertex along the border.
|
|||
\ccc{CGAL::Square_border_arc_length_parameterizer_3<ParameterizationMesh_3>} \\
|
||||
\ccc{CGAL::Square_border_uniform_parameterizer_3<ParameterizationMesh_3>} \\
|
||||
|
||||
% Insert image circular_border.png/eps
|
||||
% with title "Julius Cesar mask's image with Authalic/circular border"
|
||||
% Julius Cesar mask circular vs square border
|
||||
\begin{center}
|
||||
\label{Surface_mesh_parameterization-fig-circular_border}
|
||||
% Image
|
||||
\begin{ccTexOnly}
|
||||
\includegraphics[width=0.35\textwidth]{Surface_mesh_parameterization/circular_border}
|
||||
\includegraphics[width=0.35\textwidth]{Surface_mesh_parameterization/square_border}
|
||||
\end{ccTexOnly}
|
||||
\begin{ccHtmlOnly}
|
||||
<img width="35%" border=0 src="./circular_border.png"><P>
|
||||
\end{ccHtmlOnly}
|
||||
% Title
|
||||
\begin{figure}[h]
|
||||
\caption{Julius Cesar mask's image with Authalic/circular border}
|
||||
\caption{Left: Julius Cesar mask parameterization with
|
||||
Authalic/circular border. Right: Julius Cesar mask's
|
||||
image with Floater/square border.}
|
||||
\end{figure}
|
||||
\end{center}
|
||||
|
||||
% Insert image square_border.png/eps
|
||||
% with title "Julius Cesar mask's image with Floater/square border"
|
||||
\begin{center}
|
||||
\label{Surface_mesh_parameterization-fig-square_border}
|
||||
% Image
|
||||
\begin{ccTexOnly}
|
||||
\includegraphics[width=0.35\textwidth]{Surface_mesh_parameterization/square_border}
|
||||
\end{ccTexOnly}
|
||||
\begin{ccHtmlOnly}
|
||||
<img width="35%" border=0 src="./square_border.png"><P>
|
||||
\end{ccHtmlOnly}
|
||||
% Title
|
||||
\begin{figure}[h]
|
||||
\caption{Julius Cesar mask's image with Floater/square border}
|
||||
\end{figure}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsection{Free Border Surface Parameterizations}
|
||||
|
|
@ -344,54 +209,27 @@ $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}.
|
||||
|
||||
\emph{Usage:}
|
||||
|
||||
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.
|
||||
|
||||
\emph{Guarantees:}
|
||||
|
||||
A one-to-one mapping
|
||||
is not guaranteed by this method.
|
||||
|
||||
\emph{Complexity:}
|
||||
|
||||
It solves a (2 $\times$
|
||||
allows further lowering of the angle distortion. A one-to-one mapping
|
||||
is not guaranteed by this method. It solves a (2 $\times$
|
||||
\#triangles) $\times$ \#vertices sparse linear system in the least squares sense,
|
||||
which implies to solve a symmetric matrix.
|
||||
which implies solving a symmetric matrix.
|
||||
|
||||
% Insert image LSCM.png/eps with title "Least Squares Conformal Maps"
|
||||
% LSCM
|
||||
\begin{center}
|
||||
\label{Surface_mesh_parameterization-fig-LSCM}
|
||||
% Image
|
||||
\begin{ccTexOnly}
|
||||
\includegraphics[width=0.45\textwidth]{Surface_mesh_parameterization/LSCM}
|
||||
\includegraphics[width=0.45\textwidth]{Surface_mesh_parameterization/LSCM_2}
|
||||
\end{ccTexOnly}
|
||||
\begin{ccHtmlOnly}
|
||||
<img width="45%" border=0 src="./LSCM.png"><P>
|
||||
\end{ccHtmlOnly}
|
||||
% Title
|
||||
\begin{figure}[h]
|
||||
\caption{Least Squares Conformal Maps}
|
||||
\end{figure}
|
||||
\end{center}
|
||||
|
||||
% Insert image LSCM_2.png/eps with title "Teapot's image with Least Squares Conformal Maps"
|
||||
\begin{center}
|
||||
\label{Surface_mesh_parameterization-fig-LSCM_2}
|
||||
% Image
|
||||
\begin{ccTexOnly}
|
||||
\includegraphics[width=0.75\textwidth]{Surface_mesh_parameterization/LSCM_2}
|
||||
\end{ccTexOnly}
|
||||
\begin{ccHtmlOnly}
|
||||
<img width="75%" border=0 src="./LSCM_2.png"><P>
|
||||
\end{ccHtmlOnly}
|
||||
% Title
|
||||
\begin{figure}[h]
|
||||
\caption{Teapot's image with Least Squares Conformal Maps}
|
||||
\caption{Least squares conformal maps.}
|
||||
\end{figure}
|
||||
\end{center}
|
||||
|
||||
|
|
@ -401,12 +239,9 @@ which implies to solve a symmetric matrix.
|
|||
|
||||
Parameterization methods for
|
||||
borders are used as traits classes modifying the behavior of
|
||||
\ccc{ParameterizerTraits_3} models.
|
||||
They are provided as models of the \ccc{BorderParameterizer_3} concept.
|
||||
|
||||
The border parameterizations associated to Free Border Surface
|
||||
Parameterization methods define only two constraints
|
||||
(the pinned vertices).
|
||||
\ccc{ParameterizerTraits_3} models. They are provided as models of the \ccc{BorderParameterizer_3} concept.
|
||||
The border parameterizations associated to free border surface
|
||||
parameterization methods define only two constraints: the pinned vertices.
|
||||
|
||||
\begin{itemize}
|
||||
|
||||
|
|
@ -416,8 +251,8 @@ Parameterization methods define only two constraints
|
|||
\emph{Usage:}
|
||||
|
||||
\ccc{CGAL::Two_vertices_parameterizer_3<ParameterizationMesh_3>} is the default
|
||||
free border parameterization (and in fact the only one available
|
||||
in the package today).
|
||||
free border parameterization, and is the only one available
|
||||
in the current version of this package.
|
||||
|
||||
\end{itemize}
|
||||
|
||||
|
|
@ -425,10 +260,7 @@ Parameterization methods define only two constraints
|
|||
\subsection{Discrete Authalic Parameterization Example}
|
||||
|
||||
\ccc{Authalic_parameterization.C} computes a Discrete Authalic parameterization
|
||||
over a \ccc{CGAL::Polyhedron_3<Traits>} mesh. Specifying a specific surface parameterization
|
||||
instead of the default one means using the second parameter of \ccc{CGAL::parameterize()}.
|
||||
|
||||
The differences with the first example \ccc{Simple_parameterization.C} are:
|
||||
over a \ccc{CGAL::Polyhedron_3<Traits>} mesh. Specifying a specific surface parameterization instead of the default one means using the second parameter of \ccc{CGAL::parameterize()}. The differences with the first example \ccc{Simple_parameterization.C} are:
|
||||
|
||||
\begin{ccExampleCode}
|
||||
|
||||
|
|
@ -452,13 +284,11 @@ Parameterizer::Error_code err = CGAL::parameterize(mesh_adaptor, Parameterizer()
|
|||
|
||||
\subsection{Square Border Arc Length Parameterization Example}
|
||||
|
||||
\ccc{Square_border_parameterization.C} computes a Floater Mean Value Coordinates
|
||||
parameterization with a Square Border Arc Length parameterization.
|
||||
\ccc{Square_border_parameterization.C} computes a Floater mean value coordinates
|
||||
parameterization with a square border arc length parameterization.
|
||||
Specifying a specific border parameterization
|
||||
instead of the default one means using the second parameter of
|
||||
\ccc{CGAL::Mean_value_coordinates_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>}.
|
||||
|
||||
The differences with the first example \ccc{Simple_parameterization.C} are:
|
||||
\ccc{CGAL::Mean_value_coordinates_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>}. The differences with the first example \ccc{Simple_parameterization.C} are:
|
||||
|
||||
\begin{ccExampleCode}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,19 +1,13 @@
|
|||
\section{Cutting a Mesh}
|
||||
\label{sec:Cutting-a-Mesh}
|
||||
|
||||
\subsection{Computing a Cutting Path}
|
||||
\subsection{Computing a Cut Graph}
|
||||
|
||||
All surface parameterization methods proposed in this package only
|
||||
deal with topological discs (from a mathematical point of view).
|
||||
|
||||
Fortunately, the meshes supported by the package can be of any genus and
|
||||
have any number of connected components. If it is not a topological
|
||||
disc, the input mesh has to come with a description of a cutting path (an oriented list of
|
||||
vertices) which is the border of a topological disc. If no cutting path is
|
||||
given as input, we assume that the surface border is the longest border already
|
||||
in the input mesh (the other borders will be considered as holes). \\
|
||||
Note: the package will only parameterize the inside part of the given border,
|
||||
thus only one connected component.
|
||||
deal with meshes which are homeomorphic (topologically equivalent) to discs.
|
||||
Nevertheless meshes with arbitrary topology and number of connected components car be parameterized, provided that the user specifies a cut graph (an oriented list of vertices), which is the border of a topological disc. If no cut graph is
|
||||
provided as input, the longest border already
|
||||
in the input mesh is taken as default border, all other borders being considered as holes. Note that only the inside part (i.e., one connected component) of the given border is parameterized.
|
||||
|
||||
% Insert image cut.png/eps with title "Cutting Path"
|
||||
\begin{center}
|
||||
|
|
@ -27,21 +21,21 @@ thus only one connected component.
|
|||
\end{ccHtmlOnly}
|
||||
% Title
|
||||
\begin{figure}[h]
|
||||
\caption{Cutting Path}
|
||||
\caption{Cut Graph}
|
||||
\end{figure}
|
||||
\end{center}
|
||||
|
||||
This package does not provide any algorithm to transform a closed mesh
|
||||
of arbitrary genus into a topological disk, the user being responsible
|
||||
for computing such a cutting path. Nevertheless, we provide in
|
||||
This package does not provide any algorithm to transform an arbitrary mesh
|
||||
into a topological disk, the user being responsible
|
||||
for generating such a cut graph. Nevertheless, we provide in
|
||||
\ccc{polyhedron_ex_parameterization.C} a simple cutting algorithm for
|
||||
the sake of completeness.
|
||||
|
||||
|
||||
\subsection{Applying a Cut}
|
||||
|
||||
The surface parameterization classes in this package only support
|
||||
\emph{directly} surfaces that are homeomorphic to a disk (models of
|
||||
The surface parameterization classes in this package only \emph{directly} support
|
||||
surfaces which are homeomorphic to disks (models of
|
||||
\ccc{ParameterizationMesh_3}). This software design simplifies the
|
||||
implementation of all new parameterization methods.
|
||||
|
||||
|
|
@ -49,7 +43,7 @@ The \ccc{CGAL::Parameterization_mesh_patch_3<ParameterizationPatchableMesh_3>}
|
|||
class is responsible for \emph{virtually} cutting
|
||||
a patch in a \ccc{ParameterizationPatchableMesh_3} mesh.
|
||||
The resulting patch is a topological
|
||||
disk (if the input cutting path is correct)
|
||||
disk (if the cut graph is correct)
|
||||
and provides a \ccc{ParameterizationMesh_3} interface. It can be used as
|
||||
parameter of \ccc{CGAL::parameterize()}.
|
||||
|
||||
|
|
@ -57,8 +51,7 @@ parameter of \ccc{CGAL::parameterize()}.
|
|||
thus is a concept for a 3D surface mesh.
|
||||
\ccc{ParameterizationPatchableMesh_3} adds the ability to support patches and
|
||||
virtual seams. \emph{Patches} are a subset of a 3D mesh.
|
||||
\emph{Virtual seams} are the ability
|
||||
to behave exactly as if the surface was cut along a certain path.
|
||||
\emph{Virtual seams} behave exactly as if the surface was cut along a certain graph.
|
||||
|
||||
The \ccc{ParameterizationMesh_3} interface with the Polyhedron is both a model of
|
||||
\ccc{ParameterizationMesh_3} and \ccc{ParameterizationPatchableMesh_3}: \\
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ On the other hand, \ccc{ParameterizerTraits_3} models do not modify the behavior
|
|||
of a common parameterization algorithm - as you might expect.
|
||||
|
||||
In this package, we focus on triangulated surfaces that are homeomorphic to a
|
||||
disk and on piecewise linear mappings into a planar domain.
|
||||
disk and on piecewise linear mappings onto planar domains.
|
||||
A consequence is that the skeleton of all parameterization methods of this
|
||||
package is the same:
|
||||
\begin{itemize}
|
||||
|
|
@ -66,15 +66,14 @@ package is the same:
|
|||
|
||||
It is tempting to make the parameterization method a traits class that
|
||||
modifies the behavior of a common parameterization algorithm.
|
||||
|
||||
On the other hand, there are several differences among methods:
|
||||
\begin{itemize}
|
||||
\item Fixed border methods need to parameterize all border vertices,
|
||||
when free border methods parameterize only two vertices.
|
||||
while free border methods parameterize only two vertices.
|
||||
\item Some methods create symmetric definite positive systems,
|
||||
which may be solved more efficiently than general systems.
|
||||
\item Most parameterization methods use two \#vertices x \#vertices systems,
|
||||
when Least Squares Conformal Maps uses one (2 * \#triangles) x \#vertices system.
|
||||
where Least Squares Conformal Maps uses one (2 * \#triangles) x \#vertices system.
|
||||
\item Most parameterization methods invert the $A$ matrix,
|
||||
when Least Squares Conformal Maps solves the system in the least squares sense.
|
||||
\end{itemize}
|
||||
|
|
@ -132,9 +131,7 @@ superclass of all surface parameterization classes.
|
|||
Linear fixed border parameterization algorithms are very close. They mainly
|
||||
differ by the energy that they try to minimize, i.e. by the value of the $w_{ij}$
|
||||
coefficient of the $A$ matrix, for $v_i$ and $v_j$ neighbor vertices of the mesh
|
||||
\cite{cgal:fh-survey-05}.
|
||||
|
||||
The consequence is that most of the code of the fixed border methods is factorized in the
|
||||
\cite{cgal:fh-survey-05}. One consequence is that most of the code of the fixed border methods is factorized in the
|
||||
\ccc{CGAL::Fixed_border_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>} class.
|
||||
|
||||
Subclasses:
|
||||
|
|
@ -153,10 +150,8 @@ class as an example.
|
|||
\subsection{Border Parameterizations}
|
||||
|
||||
Border Parameterizations are models of the \ccc{BorderParameterizer_3} concept.
|
||||
|
||||
To simplify the implementation, \ccc{BorderParameterizer_3} models know only the
|
||||
\ccc{ParameterizationMesh_3} mesh class. They do not know the parameterization algorithm
|
||||
or the sparse linear solver used.
|
||||
\ccc{ParameterizationMesh_3} mesh class. They do not know the parameterization algorithm or the sparse linear solver used.
|
||||
|
||||
|
||||
\subsection{ParameterizationMesh\_3 and ParameterizationPatchableMesh\_3 Concepts}
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@ of the \ccc{SparseLinearAlgebraTraits_d} concept:
|
|||
\emph{Usage:}
|
||||
|
||||
OpenNL (in the version shipped with \cgal) is a lightweight sparse linear solver.
|
||||
It does not support large systems.
|
||||
On the other hand, it is highly portable and supports exact number types.
|
||||
It does not support large systems, but it is highly portable and
|
||||
supports exact number types.
|
||||
|
||||
\item
|
||||
\ccAnchor{http://www.cs.tau.ac.il/~stoledo/taucs}{{\sc Taucs}}
|
||||
|
|
@ -36,8 +36,8 @@ of the \ccc{SparseLinearAlgebraTraits_d} concept:
|
|||
\emph{Usage:}
|
||||
|
||||
{\sc Taucs} is very robust and supports large systems.
|
||||
On the other hand, it is \emph{not} available on all platforms
|
||||
supported by \cgal\ and does \emph{not} support exact number types.
|
||||
On the other hand, it is not available on all platforms
|
||||
supported by \cgal\ and does not support exact number types.
|
||||
|
||||
\emph{Install:}
|
||||
|
||||
|
|
@ -51,13 +51,11 @@ of the \ccc{SparseLinearAlgebraTraits_d} concept:
|
|||
\subsection{{\sc Taucs} Solver Example}
|
||||
|
||||
\ccc{Taucs_parameterization.C} computes the default parameterization
|
||||
method (Floater Mean Value Coordinates with a circular border), but
|
||||
method (Floater mean value coordinates with a circular border), but
|
||||
specifically instantiates the {\sc Taucs} solver.
|
||||
Specifying a specific solver
|
||||
instead of the default one (OpenNL) means using the third parameter of
|
||||
\ccc{CGAL::Mean_value_coordinates_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>}.
|
||||
|
||||
The differences with the first example \ccc{Simple_parameterization.C} are:
|
||||
\ccc{CGAL::Mean_value_coordinates_parameterizer_3<ParameterizationMesh_3, BorderParameterizer_3, SparseLinearAlgebraTraits_d>}. The differences with the first example \ccc{Simple_parameterization.C} are:
|
||||
|
||||
\begin{ccExampleCode}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue