From 080788c24a562a3c9c9b0f370d83b676699f67ad Mon Sep 17 00:00:00 2001 From: Marc Pouget Date: Mon, 29 May 2006 15:20:33 +0000 Subject: [PATCH] bug fixed in doc --- .gitattributes | 2 +- .../Jet_fitting_3/Jet_fitting_3_user.tex | 80 ++++++++---------- .../Jet_fitting_3/jet_fitting_basis.gif | Bin 0 -> 4863 bytes .../Jet_fitting_3/jet_fitting_basis.jpg | Bin 23449 -> 0 bytes .../doc_tex/Jet_fitting_3/macro_perso.sty | 2 +- Jet_fitting_3/doc_tex/Jet_fitting_3/main.tex | 2 +- .../Jet_fitting_3_ref/LinAlgTraits.tex | 6 +- .../doc_tex/Jet_fitting_3_ref/Monge_info.tex | 2 +- .../doc_tex/Jet_fitting_3_ref/Monge_rep.tex | 2 +- .../Monge_via_jet_fitting.tex | 2 +- .../doc_tex/Jet_fitting_3_ref/intro.tex | 4 +- 11 files changed, 46 insertions(+), 56 deletions(-) create mode 100644 Jet_fitting_3/doc_tex/Jet_fitting_3/jet_fitting_basis.gif delete mode 100644 Jet_fitting_3/doc_tex/Jet_fitting_3/jet_fitting_basis.jpg diff --git a/.gitattributes b/.gitattributes index 34e67a2b662..5548b1375e2 100644 --- a/.gitattributes +++ b/.gitattributes @@ -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/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.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_ref/template_dependence.eps -text Jet_fitting_3/doc_tex/Jet_fitting_3_ref/template_dependence.jpg -text diff --git a/Jet_fitting_3/doc_tex/Jet_fitting_3/Jet_fitting_3_user.tex b/Jet_fitting_3/doc_tex/Jet_fitting_3/Jet_fitting_3_user.tex index 82811470326..985cff6bce9 100644 --- a/Jet_fitting_3/doc_tex/Jet_fitting_3/Jet_fitting_3_user.tex +++ b/Jet_fitting_3/doc_tex/Jet_fitting_3/Jet_fitting_3_user.tex @@ -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 asymptotic error estimates ---which are the best known to date: %% + \begin{theorem} A polynomial fitting of degree $d$ estimates any $k^{th}$-order 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}
- +
\end{ccHtmlOnly} \end{figure} @@ -325,19 +326,13 @@ significantly smaller. \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} -void eigen_symm_algo(const LAMatrix& M, LAVector& eigen_vals, LAMatrix& eigen_vecs) -\end{verbatim} -%% -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. +This function computes the eigenvalues and eigenvectors of a real +symmetric matrix. Eigen values are sorted in ascending order, eigen +vectors are sorted in accordance. The eigenvectors are guaranteed to +be mutually orthogonal and normalised to unit magnitude. \subsection{Solving the interpolation / approximation problem} \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 -approximation, with a function {\tt solve\_ls\_svd}. There is a -preconditioning of the matrix $M$ so as to improve the condition -number. Assuming the $\{x_i\}$, $\{y_i\}$ are of order $h$, the -pre-conditioning consists of performing a column scaling by dividing -each monomial $x_i^ky_i^l$ by $h^{k+l}$ ---refer to -Eq. (\ref{eq:fit-linalg}). Practically, the parameter $h$ is chosen as -the mean value of the $\{x_i\}$ and $\{y_i\}$. In other words, the new -system is $M'Y=(MD^{-1}(DA)=Z$ with $D$ the diagonal matrix +approximation. There is a preconditioning of the matrix $M$ so as to +improve the condition number. Assuming the $\{x_i\}$, $\{y_i\}$ are of +order $h$, the pre-conditioning consists of performing a column +scaling by dividing each monomial $x_i^ky_i^l$ by $h^{k+l}$ ---refer +to Eq. (\ref{eq:fit-linalg}). Practically, the parameter $h$ is chosen +as the mean value of the $\{x_i\}$ and $\{y_i\}$. In other words, the +new 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 original system is $A=D^{-1}Y$. @@ -397,22 +391,15 @@ that is the smallest singular value is zero. Then, an exception is raised. \paragraph{Implementation details.} -We assume function: -\begin{verbatim} -void solve_ls_svd_algo(const LAMatrix& M, const LAVector& B, Vector& X, double& cond_nb) -\end{verbatim} - %% -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}$. +We assume a \ccc{solve_ls_svd_algo} function is provided by the traits +\ccc{LinAlgTraits}. This function solves the system MX=B (in the least square sense +if M is not square) using a Singular Value Decomposition and gives the +condition number of M. \medskip Remark: as an alternative, other methods may be used to solve the 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 definite positive when $M$ has full rank. %LU suitable for any square M @@ -551,7 +538,7 @@ four, that is, we assume $d' \leq 4$. \medskip 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 $N > N_d$ and approximation is used. @@ -610,31 +597,31 @@ The following picture illustrates the template dependencies. \begin{ccHtmlOnly}
- +
\end{ccHtmlOnly} \end{figure} 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 with $3d$ vectors and a number type. It is used as template for the -Monge\_rep. Typically, one can use {\tt CGAL::Cartesian}. +\ccc{Monge_rep}. Typically, one can use \ccc{CGAL::Cartesian}. -\subsubsection{Template class {\tt Local\_Kernel}} +\subsubsection{Template class \ccc{Local_Kernel}} %%%%%%%%%%% This class defines the vector and number types used (i)\ for local computations (ii)\ to store the Monge\_info class members. Input -points of type Data\_Kernel::Point\_3 are converted to -Local\_Kernel::Point\_3. For output of the Monge\_rep class, these -types are converted back to Data\_Kernel ones. Typically, one can use -{\tt CGAL::Cartesian}. +points of type \ccc{Data_Kernel::Point_3} are converted to +\ccc{Local_Kernel::Point_3}. For output of the \ccc{Monge_rep} class, these +types are converted back to \ccc{Data_Kernel} ones. Typically, one can use +\ccc{CGAL::Cartesian}. -\subsubsection{Template class {\tt Linalg\_traits.}} +\subsubsection{Template class \ccc{Linalg_traits.}} %%%%%%%%%%% 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} \paragraph{On a mesh.} -The second example illustrates the computation of local differential -quantities for all vertices of a given mesh. Results are twofold: +The second example (cf blind.C in the exemple directory) illustrates +the computation of local differential quantities for all vertices of a +given mesh. Results are twofold: \begin{itemize} \item 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. \end{itemize} -\ccIncludeExampleCode{Jet_fitting_3/blind.C} %too long to be included? +%\ccIncludeExampleCode{Jet_fitting_3/blind.C} %too long to be included? diff --git a/Jet_fitting_3/doc_tex/Jet_fitting_3/jet_fitting_basis.gif b/Jet_fitting_3/doc_tex/Jet_fitting_3/jet_fitting_basis.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb565fae5b18334b6d5eac604c5ad100417edd4d GIT binary patch literal 4863 zcmV_CX>@2HRA^-& zM@dak04x9i002$`*8u4~F7Mmgb43Y8I^S3&-+I*Y=I) z`p)(tOe&Ymrt=AnN~hGS^@`1Ex7@Dx3l577f!6qpPOH}wGy4sX%dzgc z{f^K3>XEYlUxwnRM_6cR#U~MnusBGPco-=;2?PnT$aqi(Y1v2l2^y+|smZ{}BATkY zs)N}{w($BO%UWxD+u@qf2-wo==EyiG`=<%)>Kj-*upEs0486vyuo=4xY%JV>T$-89 zO_tmpOVOiOEW!f8a?^}XTg{42+AWx^e0fB8{tW%h%~EKMQs3mM8=2VGM`?7W*nBRDAuxD z+q!)VH?G{dbnDu^i#M;{y?p!n{p(jL;K77(2ri5`v5Uis8#^As__5^47$Q@?jM;(Z z%$z%W{tP;_=+UH0n?8-Y1c2252CP=`ngZ+8v?;YdFdO!T+jBP8#>^Xc@Dsx&6o2FU zH|657QyhozT$=Lfu7@{A5#2%dG|8zu&aHs8_15AIfHzP6JoD?-UvF=JyE%CG^kbJt z|Nf?T<>LOW<4!;xe&_+nn|ufuSlxly$rm4h3MM#Ugb40Op$+{-Xx@Pi{-@!Cu6dZ? zb?gx+T!tN*NFs_1R>-1-_MP}4jQ)98AcO3USmFXRqPSs<^X1oKkR;eBVvjL$m}8Co zod=b-j!{PWWPli2iKc2gj%g;8T)rrvg29Q| z-kMr6U}l|Z?kU2JJi5mtnR9yi=bTL*`elI_7KtaANaoNTpLeCF-fWg$x+IZAPN^xA z1XfBPd`~7yXAO}`Y8sHNoQf)Gs;YY_XLX zi~ejLwkFFg6w5XX?I_VImT9%tURchv)3S2ywIOty>nGZ7ds(&Qo*Ra_=&s8Jw(P!p z1(op5ONG1i-s?oTS&WM>b@o!hZ@(1k`$WJ3v*;-k1|N)Y!bdF3aF7H?OmPnmSB&uu z7iY||3>$Y0@(Le^O!Aeb&H!=AX^#9t$||pX@(M1$yl2dU&>S(#CCrR7pEg6*bHzFb zP4omm7mf4-LnqDjmrXxi!O>7ZEj0x^PmSu*Tw$GY)w6KjvDZ3*-8HRDkY|jl+!J@yci10a9r&&Cj$OFW_LWL_;yw==UE_}L{tEZx z3|DTsz-DJouBw=GZY-_MNe;Tdo8Lxy>Az{sVd|=*_ICuUx&C@-|5`wM?X%u)!RETR znrR1cp8313!FzBY>%~hP`)-FXνUDi3{&z8gn<^#ea5>h;?D`$%rtf4}<9B6?3g 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 literal 0 HcmV?d00001 diff --git a/Jet_fitting_3/doc_tex/Jet_fitting_3/jet_fitting_basis.jpg b/Jet_fitting_3/doc_tex/Jet_fitting_3/jet_fitting_basis.jpg deleted file mode 100644 index 461a53945ee28b79a053679d4be84acabe937d99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23449 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 R0IKswzR*99jow%C-vGt2Hxd8< diff --git a/Jet_fitting_3/doc_tex/Jet_fitting_3/macro_perso.sty b/Jet_fitting_3/doc_tex/Jet_fitting_3/macro_perso.sty index e38bc7858bf..36551caf9ad 100644 --- a/Jet_fitting_3/doc_tex/Jet_fitting_3/macro_perso.sty +++ b/Jet_fitting_3/doc_tex/Jet_fitting_3/macro_perso.sty @@ -1,2 +1,2 @@ \newtheorem{theorem}{Theorem.} -\newcommand{\hot}[0]{h.o.t} \ No newline at end of file +\newcommand{\hot}{h.o.t}%[0] diff --git a/Jet_fitting_3/doc_tex/Jet_fitting_3/main.tex b/Jet_fitting_3/doc_tex/Jet_fitting_3/main.tex index 5fd56d6f0c6..36dbd1f361c 100644 --- a/Jet_fitting_3/doc_tex/Jet_fitting_3/main.tex +++ b/Jet_fitting_3/doc_tex/Jet_fitting_3/main.tex @@ -6,4 +6,4 @@ surfaces via polynomial fitting} \minitoc \input{Jet_fitting_3/Jet_fitting_3_user.tex} - \ No newline at end of file + diff --git a/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/LinAlgTraits.tex b/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/LinAlgTraits.tex index 203caca6e83..7e61a083836 100644 --- a/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/LinAlgTraits.tex +++ b/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/LinAlgTraits.tex @@ -41,16 +41,18 @@ the \ccc{LocalKernel} concept~: \ccc{LocalKernel::FT}. %\ccCreationVariable{a} %% choose variable name %\ccConstructor{LinAlgTraits();}{default constructor.} +\ccCreationVariable{matrix} %choose variable name \ccOperations 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 -\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 decomposition algorithm. +\ccCreationVariable{traits} %choose variable name \ccMethod{void eigen_symm_algo(Matrix& S, FT* eval, Matrix& evec);} {Performs an eigenanalysis of a real symmetric matrix. Eigen diff --git a/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/Monge_info.tex b/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/Monge_info.tex index 52979536a65..ab9780c107c 100644 --- a/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/Monge_info.tex +++ b/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/Monge_info.tex @@ -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 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 % +-------------------------------------------------------------- diff --git a/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/Monge_rep.tex b/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/Monge_rep.tex index 6779c63a004..0de6c448ae8 100644 --- a/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/Monge_rep.tex +++ b/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/Monge_rep.tex @@ -23,7 +23,7 @@ The class \ccRefName\ stores the Monge representation. The same for the classes \ccc{Monge_rep} and \ccc{Monge_via_jet_fitting}. -\ccInclude{Monge_via_jet_fitting.h} +\ccInclude{../include/CGAL/Monge_via_jet_fitting.h} \ccTypes % +-------------------------------------------------------------- diff --git a/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/Monge_via_jet_fitting.tex b/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/Monge_via_jet_fitting.tex index b42c66233e8..48ddfb07c45 100644 --- a/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/Monge_via_jet_fitting.tex +++ b/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/Monge_via_jet_fitting.tex @@ -38,7 +38,7 @@ representation. %\ccc{Monge_rep} and \ccc{Monge_info}. -\ccInclude{Monge_via_jet_fitting.h} +\ccInclude{../include/CGAL/Monge_via_jet_fitting.h} \ccParameters The class \ccRefName\ has three template parameters. Parameter diff --git a/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/intro.tex b/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/intro.tex index 53d0273ffcd..b53867ddaea 100644 --- a/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/intro.tex +++ b/Jet_fitting_3/doc_tex/Jet_fitting_3_ref/intro.tex @@ -14,7 +14,7 @@ surfaces via polynomial fitting} \label{ref_chap:Jet_fitting_3} -\ccChapterAuthor{Marc Pouget and Frédéric Cazals} +\ccChapterAuthor{Marc Pouget and Frederic Cazals} \subsection*{Introduction} @@ -30,7 +30,7 @@ The following picture illustrates the template dependencies. \begin{ccHtmlOnly}
- +
\end{ccHtmlOnly} \end{figure}