mirror of https://github.com/CGAL/cgal
bug fixed in doc
This commit is contained in:
parent
4e4b09af65
commit
080788c24a
|
|
@ -440,7 +440,7 @@ Jet_fitting_3/demo/Jet_fitting_3/data/venus.off -text
|
||||||
Jet_fitting_3/doc_tex/AIDE -text
|
Jet_fitting_3/doc_tex/AIDE -text
|
||||||
Jet_fitting_3/doc_tex/Jet_fitting_3/Maple_formula.mw -text
|
Jet_fitting_3/doc_tex/Jet_fitting_3/Maple_formula.mw -text
|
||||||
Jet_fitting_3/doc_tex/Jet_fitting_3/jet_fitting_basis.eps -text
|
Jet_fitting_3/doc_tex/Jet_fitting_3/jet_fitting_basis.eps -text
|
||||||
Jet_fitting_3/doc_tex/Jet_fitting_3/jet_fitting_basis.jpg -text svneol=unset#unset
|
Jet_fitting_3/doc_tex/Jet_fitting_3/jet_fitting_basis.gif -text
|
||||||
Jet_fitting_3/doc_tex/Jet_fitting_3/jet_fitting_basis.pdf -text svneol=unset#unset
|
Jet_fitting_3/doc_tex/Jet_fitting_3/jet_fitting_basis.pdf -text svneol=unset#unset
|
||||||
Jet_fitting_3/doc_tex/Jet_fitting_3_ref/template_dependence.eps -text
|
Jet_fitting_3/doc_tex/Jet_fitting_3_ref/template_dependence.eps -text
|
||||||
Jet_fitting_3/doc_tex/Jet_fitting_3_ref/template_dependence.jpg -text
|
Jet_fitting_3/doc_tex/Jet_fitting_3_ref/template_dependence.jpg -text
|
||||||
|
|
|
||||||
|
|
@ -172,6 +172,7 @@ $O(h)$ of the point where the calculation is carried out.
|
||||||
The following theorem, proved in \cite{cgal:cp-edqpf-05}, provides the
|
The following theorem, proved in \cite{cgal:cp-edqpf-05}, provides the
|
||||||
asymptotic error estimates ---which are the best known to date:
|
asymptotic error estimates ---which are the best known to date:
|
||||||
%%
|
%%
|
||||||
|
|
||||||
\begin{theorem}
|
\begin{theorem}
|
||||||
A polynomial fitting of degree $d$ estimates any $k^{th}$-order
|
A polynomial fitting of degree $d$ estimates any $k^{th}$-order
|
||||||
differential quantity to accuracy $O(h^{d-k+1})$~:
|
differential quantity to accuracy $O(h^{d-k+1})$~:
|
||||||
|
|
@ -284,7 +285,7 @@ $(f_x,f_y,f_z)$, the monge-basis $(d_1,d_2,n)$.
|
||||||
|
|
||||||
\begin{ccHtmlOnly}
|
\begin{ccHtmlOnly}
|
||||||
<CENTER>
|
<CENTER>
|
||||||
<img border=0 src="./jet_fitting_basis.jpg" width=400>
|
<img border=0 src="./jet_fitting_basis.gif" width=600>
|
||||||
</CENTER>
|
</CENTER>
|
||||||
\end{ccHtmlOnly}
|
\end{ccHtmlOnly}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
@ -325,19 +326,13 @@ significantly smaller.
|
||||||
|
|
||||||
|
|
||||||
\paragraph{Implementation details.}
|
\paragraph{Implementation details.}
|
||||||
Given a symmetric matrix $M$, we assume the following function:
|
We assume a \ccc{eigen_symm_algo} function is provided by the traits
|
||||||
|
\ccc{LinAlgTraits}.
|
||||||
%%
|
%%
|
||||||
\begin{verbatim}
|
This function computes the eigenvalues and eigenvectors of a real
|
||||||
void eigen_symm_algo(const LAMatrix& M, LAVector& eigen_vals, LAMatrix& eigen_vecs)
|
symmetric matrix. Eigen values are sorted in ascending order, eigen
|
||||||
\end{verbatim}
|
vectors are sorted in accordance. The eigenvectors are guaranteed to
|
||||||
%%
|
be mutually orthogonal and normalised to unit magnitude.
|
||||||
This function computes the eigenvalues and eigenvectors of matrix $M$.
|
|
||||||
The eigenvalues are stored in the vector eigen\_vals and are in
|
|
||||||
decreasing order. The corresponding eigenvectors are stored in the
|
|
||||||
columns of the matrix eigen\_vecs. For example, the eigenvector in the
|
|
||||||
first column corresponds to the first (and largest) eigenvalue. The
|
|
||||||
eigenvectors are guaranteed to be mutually orthogonal and normalised
|
|
||||||
to unit magnitude.
|
|
||||||
|
|
||||||
\subsection{Solving the interpolation / approximation problem}
|
\subsection{Solving the interpolation / approximation problem}
|
||||||
\label{sec:solving}
|
\label{sec:solving}
|
||||||
|
|
@ -352,14 +347,13 @@ translation ($-p$) and multiplication by $ P_{W\rightarrow F}$.
|
||||||
|
|
||||||
|
|
||||||
We solve the system $MA=Z$, in the least square sense for
|
We solve the system $MA=Z$, in the least square sense for
|
||||||
approximation, with a function {\tt solve\_ls\_svd}. There is a
|
approximation. There is a preconditioning of the matrix $M$ so as to
|
||||||
preconditioning of the matrix $M$ so as to improve the condition
|
improve the condition number. Assuming the $\{x_i\}$, $\{y_i\}$ are of
|
||||||
number. Assuming the $\{x_i\}$, $\{y_i\}$ are of order $h$, the
|
order $h$, the pre-conditioning consists of performing a column
|
||||||
pre-conditioning consists of performing a column scaling by dividing
|
scaling by dividing each monomial $x_i^ky_i^l$ by $h^{k+l}$ ---refer
|
||||||
each monomial $x_i^ky_i^l$ by $h^{k+l}$ ---refer to
|
to Eq. (\ref{eq:fit-linalg}). Practically, the parameter $h$ is chosen
|
||||||
Eq. (\ref{eq:fit-linalg}). Practically, the parameter $h$ is chosen as
|
as the mean value of the $\{x_i\}$ and $\{y_i\}$. In other words, the
|
||||||
the mean value of the $\{x_i\}$ and $\{y_i\}$. In other words, the new
|
new system is $M'Y=(MD^{-1}(DA)=Z$ with $D$ the diagonal matrix
|
||||||
system is $M'Y=(MD^{-1}(DA)=Z$ with $D$ the diagonal matrix
|
|
||||||
$D=(1,h,h,h^2,\ldots,h^d,h^d)$, so that the solution $A$ of the
|
$D=(1,h,h,h^2,\ldots,h^d,h^d)$, so that the solution $A$ of the
|
||||||
original system is $A=D^{-1}Y$.
|
original system is $A=D^{-1}Y$.
|
||||||
|
|
||||||
|
|
@ -397,22 +391,15 @@ that is the smallest singular value is zero. Then, an exception is
|
||||||
raised.
|
raised.
|
||||||
|
|
||||||
\paragraph{Implementation details.}
|
\paragraph{Implementation details.}
|
||||||
We assume function:
|
We assume a \ccc{solve_ls_svd_algo} function is provided by the traits
|
||||||
\begin{verbatim}
|
\ccc{LinAlgTraits}. This function solves the system MX=B (in the least square sense
|
||||||
void solve_ls_svd_algo(const LAMatrix& M, const LAVector& B, Vector& X, double& cond_nb)
|
if M is not square) using a Singular Value Decomposition and gives the
|
||||||
\end{verbatim}
|
condition number of M.
|
||||||
%%
|
|
||||||
This function first factorizes the m-by-n matrix M into the singular
|
|
||||||
value decomposition $M = U S V^T$ for $m \geq n$. Then it solves the
|
|
||||||
system $MX = B$ in the least square sense using the singular value
|
|
||||||
decomposition (U, S, V) of M. The condition number of the matrix M
|
|
||||||
which is the ratio of the largest and the smallest singular values is
|
|
||||||
stored in $cond_{nb}$.
|
|
||||||
|
|
||||||
\medskip
|
\medskip
|
||||||
Remark: as an alternative, other methods may be used to solve the
|
Remark: as an alternative, other methods may be used to solve the
|
||||||
system. A $QR$ decomposition can be substituted to the $SVD$. One can
|
system. A $QR$ decomposition can be substituted to the $SVD$. One can
|
||||||
also use the normal equation $M^TMA=MTZ$ and apply methods for square
|
also use the normal equation $M^TMX=MTB$ and apply methods for square
|
||||||
systems such as $LU$, $QR$ or Cholesky since $M^TM$ is symmetric
|
systems such as $LU$, $QR$ or Cholesky since $M^TM$ is symmetric
|
||||||
definite positive when $M$ has full rank.
|
definite positive when $M$ has full rank.
|
||||||
%LU suitable for any square M
|
%LU suitable for any square M
|
||||||
|
|
@ -551,7 +538,7 @@ four, that is, we assume $d' \leq 4$.
|
||||||
\medskip
|
\medskip
|
||||||
|
|
||||||
Regarding interpolation versus approximation, we provide a single
|
Regarding interpolation versus approximation, we provide a single
|
||||||
function {\tt Monge\_via\_jet\_fitting} with parameters $d,d'$ and a
|
function \ccc{Monge_via_jet_fitting} with parameters $d,d'$ and a
|
||||||
range iterator. If $N=N_d$ then interpolation is performed, else
|
range iterator. If $N=N_d$ then interpolation is performed, else
|
||||||
$N > N_d$ and approximation is used.
|
$N > N_d$ and approximation is used.
|
||||||
|
|
||||||
|
|
@ -610,31 +597,31 @@ The following picture illustrates the template dependencies.
|
||||||
|
|
||||||
\begin{ccHtmlOnly}
|
\begin{ccHtmlOnly}
|
||||||
<CENTER>
|
<CENTER>
|
||||||
<img border=0 src="Jet_fitting_3_ref/template_dependence.jpg" width=400>
|
<img border=0 src="template_dependence.jpg" width=600>
|
||||||
</CENTER>
|
</CENTER>
|
||||||
\end{ccHtmlOnly}
|
\end{ccHtmlOnly}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
More details are given in the reference manual.
|
More details are given in the reference manual.
|
||||||
|
|
||||||
\subsubsection{Template class {\tt Data\_Kernel}}
|
\subsubsection{Template class \ccc{Data_Kernel}}
|
||||||
%%%%%%%%%%%
|
%%%%%%%%%%%
|
||||||
|
|
||||||
This class provides the types for the input sample points, together
|
This class provides the types for the input sample points, together
|
||||||
with $3d$ vectors and a number type. It is used as template for the
|
with $3d$ vectors and a number type. It is used as template for the
|
||||||
Monge\_rep. Typically, one can use {\tt CGAL::Cartesian<double>}.
|
\ccc{Monge_rep}. Typically, one can use \ccc{CGAL::Cartesian<double>}.
|
||||||
|
|
||||||
\subsubsection{Template class {\tt Local\_Kernel}}
|
\subsubsection{Template class \ccc{Local_Kernel}}
|
||||||
%%%%%%%%%%%
|
%%%%%%%%%%%
|
||||||
|
|
||||||
This class defines the vector and number types used (i)\ for local
|
This class defines the vector and number types used (i)\ for local
|
||||||
computations (ii)\ to store the Monge\_info class members. Input
|
computations (ii)\ to store the Monge\_info class members. Input
|
||||||
points of type Data\_Kernel::Point\_3 are converted to
|
points of type \ccc{Data_Kernel::Point_3} are converted to
|
||||||
Local\_Kernel::Point\_3. For output of the Monge\_rep class, these
|
\ccc{Local_Kernel::Point_3}. For output of the \ccc{Monge_rep} class, these
|
||||||
types are converted back to Data\_Kernel ones. Typically, one can use
|
types are converted back to \ccc{Data_Kernel} ones. Typically, one can use
|
||||||
{\tt CGAL::Cartesian<double>}.
|
\ccc{CGAL::Cartesian<double>}.
|
||||||
|
|
||||||
\subsubsection{Template class {\tt Linalg\_traits.}}
|
\subsubsection{Template class \ccc{Linalg_traits.}}
|
||||||
%%%%%%%%%%%
|
%%%%%%%%%%%
|
||||||
|
|
||||||
This class provides the matrix algebra operations required by the
|
This class provides the matrix algebra operations required by the
|
||||||
|
|
@ -673,8 +660,9 @@ file to output the results, the degrees $d$ and $d'$.
|
||||||
\ccIncludeExampleCode{Jet_fitting_3/blind_1pt.C}
|
\ccIncludeExampleCode{Jet_fitting_3/blind_1pt.C}
|
||||||
|
|
||||||
\paragraph{On a mesh.}
|
\paragraph{On a mesh.}
|
||||||
The second example illustrates the computation of local differential
|
The second example (cf blind.C in the exemple directory) illustrates
|
||||||
quantities for all vertices of a given mesh. Results are twofold:
|
the computation of local differential quantities for all vertices of a
|
||||||
|
given mesh. Results are twofold:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item
|
\item
|
||||||
a human readable text file featuring the Monge\_rep and the Monge\_info data;
|
a human readable text file featuring the Monge\_rep and the Monge\_info data;
|
||||||
|
|
@ -683,4 +671,4 @@ another text file which may be visualised with the demo program
|
||||||
visu.exe displaying the Monge basis at each vertex of the mesh.
|
visu.exe displaying the Monge basis at each vertex of the mesh.
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\ccIncludeExampleCode{Jet_fitting_3/blind.C} %too long to be included?
|
%\ccIncludeExampleCode{Jet_fitting_3/blind.C} %too long to be included?
|
||||||
|
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 4.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 23 KiB |
|
|
@ -1,2 +1,2 @@
|
||||||
\newtheorem{theorem}{Theorem.}
|
\newtheorem{theorem}{Theorem.}
|
||||||
\newcommand{\hot}[0]{h.o.t}
|
\newcommand{\hot}{h.o.t}%[0]
|
||||||
|
|
|
||||||
|
|
@ -6,4 +6,4 @@ surfaces via polynomial fitting}
|
||||||
\minitoc
|
\minitoc
|
||||||
|
|
||||||
\input{Jet_fitting_3/Jet_fitting_3_user.tex}
|
\input{Jet_fitting_3/Jet_fitting_3_user.tex}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,16 +41,18 @@ the \ccc{LocalKernel} concept~: \ccc{LocalKernel::FT}.
|
||||||
%\ccCreationVariable{a} %% choose variable name
|
%\ccCreationVariable{a} %% choose variable name
|
||||||
|
|
||||||
%\ccConstructor{LinAlgTraits();}{default constructor.}
|
%\ccConstructor{LinAlgTraits();}{default constructor.}
|
||||||
|
\ccCreationVariable{matrix} %choose variable name
|
||||||
|
|
||||||
\ccOperations
|
\ccOperations
|
||||||
The Matrix has classical access to its elements.
|
The Matrix has classical access to its elements.
|
||||||
|
|
||||||
\ccMethod{void set_elt(size_t i, size_t j, const FT value)}{}
|
\ccMethod{void set_elt(size_t i, size_t j, const FT value);}{}
|
||||||
\ccGlue
|
\ccGlue
|
||||||
\ccMethod{FT get_elt(size_t i, size_t j)}{}
|
\ccMethod{FT get_elt(size_t i, size_t j);}{}
|
||||||
|
|
||||||
The LinAlgTraits has an eigenanalysis and a singular value
|
The LinAlgTraits has an eigenanalysis and a singular value
|
||||||
decomposition algorithm.
|
decomposition algorithm.
|
||||||
|
\ccCreationVariable{traits} %choose variable name
|
||||||
|
|
||||||
\ccMethod{void eigen_symm_algo(Matrix& S, FT* eval, Matrix&
|
\ccMethod{void eigen_symm_algo(Matrix& S, FT* eval, Matrix&
|
||||||
evec);} {Performs an eigenanalysis of a real symmetric matrix. Eigen
|
evec);} {Performs an eigenanalysis of a real symmetric matrix. Eigen
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ the computations performed by the class \ccc{Monge_via_jet_fitting}.
|
||||||
The \ccc{LocalKernel} template parameter must be the same for the
|
The \ccc{LocalKernel} template parameter must be the same for the
|
||||||
classes \ccc{Monge_info} and \ccc{Monge_via_jet_fitting}.
|
classes \ccc{Monge_info} and \ccc{Monge_via_jet_fitting}.
|
||||||
|
|
||||||
\ccInclude{Monge_via_jet_fitting.h}
|
\ccInclude{../include/CGAL/Monge_via_jet_fitting.h}
|
||||||
|
|
||||||
\ccTypes
|
\ccTypes
|
||||||
% +--------------------------------------------------------------
|
% +--------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ The class \ccRefName\ stores the Monge representation. The
|
||||||
same for the classes \ccc{Monge_rep} and
|
same for the classes \ccc{Monge_rep} and
|
||||||
\ccc{Monge_via_jet_fitting}.
|
\ccc{Monge_via_jet_fitting}.
|
||||||
|
|
||||||
\ccInclude{Monge_via_jet_fitting.h}
|
\ccInclude{../include/CGAL/Monge_via_jet_fitting.h}
|
||||||
|
|
||||||
\ccTypes
|
\ccTypes
|
||||||
% +--------------------------------------------------------------
|
% +--------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ representation.
|
||||||
%\ccc{Monge_rep} and \ccc{Monge_info}.
|
%\ccc{Monge_rep} and \ccc{Monge_info}.
|
||||||
|
|
||||||
|
|
||||||
\ccInclude{Monge_via_jet_fitting.h}
|
\ccInclude{../include/CGAL/Monge_via_jet_fitting.h}
|
||||||
|
|
||||||
\ccParameters
|
\ccParameters
|
||||||
The class \ccRefName\ has three template parameters. Parameter
|
The class \ccRefName\ has three template parameters. Parameter
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
surfaces via polynomial fitting}
|
surfaces via polynomial fitting}
|
||||||
\label{ref_chap:Jet_fitting_3}
|
\label{ref_chap:Jet_fitting_3}
|
||||||
|
|
||||||
\ccChapterAuthor{Marc Pouget and Frédéric Cazals}
|
\ccChapterAuthor{Marc Pouget and Frederic Cazals}
|
||||||
|
|
||||||
\subsection*{Introduction}
|
\subsection*{Introduction}
|
||||||
|
|
||||||
|
|
@ -30,7 +30,7 @@ The following picture illustrates the template dependencies.
|
||||||
|
|
||||||
\begin{ccHtmlOnly}
|
\begin{ccHtmlOnly}
|
||||||
<CENTER>
|
<CENTER>
|
||||||
<img border=0 src="Jet_fitting_3_ref/template_dependence.jpg" width=400>
|
<img border=0 src="template_dependence.jpg" width=600>
|
||||||
</CENTER>
|
</CENTER>
|
||||||
\end{ccHtmlOnly}
|
\end{ccHtmlOnly}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue