X-Git-Url: https://melusine.eu.org/syracuse/G/git/?p=delaunay.git;a=blobdiff_plain;f=doc%2Fluamesh-doc.tex;fp=doc%2Fluamesh-doc.tex;h=75a12510d1a7cdab12fb8c5de13a4d7ae1d67d1d;hp=80469eb7bedb79cce110f2f480f440c8868771d4;hb=1b7b34394c35546e9ae75eb3d61e71626922a82c;hpb=b8c8621a9a46ea7e87e0684988471eee782c9368 diff --git a/doc/luamesh-doc.tex b/doc/luamesh-doc.tex index 80469eb..75a1251 100644 --- a/doc/luamesh-doc.tex +++ b/doc/luamesh-doc.tex @@ -12,7 +12,7 @@ \usepackage{enumitem} \usepackage[tikz]{bclogo} \usepackage{wrapfig} - +\usepackage{animate} \title{\Verb+luamesh+: compute and draw meshes with \lualatex} \author{Maxime Chupin \email{mc@melusine.eu.org}} @@ -609,7 +609,7 @@ and \Verb+endfig;+ commands to produce a picture. Indeed, this allows to use the \Verb+\everymplib+ command from the \Verb+\luamplib+ package. \end{warning} -\subsubsection{The \LaTeX{} Colors Inside the MetaPost Code} +\subsubsection{The \LaTeX{} Colors Inside the MetaPost Code}\label{sec:mpcolor} The configurable colors of the \LaTeX{} macro are accessible inside the MetaPost code. For @@ -757,6 +757,323 @@ Once again these coordinates are not yet defined for the \meta{code } \end{Exemple} +\section{Voronio Diagrams} + +Another interesting concept of Delaunay triangulation is that it is +\emph{dual} to it so-called Voronio diagram. For a finite set of +points $\{p_{1},\ldots, p_{n}\}$ in the Euclidean plane, for all +$p_{k}$, it corresponds a Voronoi cell $R_{k}$ consisting of +every point in the Euclidean plane whose distance to $p_{k}$ is less +than +or equal to its distance to any other $p_{k'}$.\bigskip + + +\commande|\buildVoronoiBW[«options»]{«list of points» or «file name»}|\medskip + +This macro produce the Voronio diagram dual to the Delaunay +triangulation (computed by the Bowyer and Watson +algorithm) of the given \meta{list of points}. Once again, the +list of +points must be given in the following way : +\begin{center} + \verb+(x1,y1);(x2,y2);(x3,y3);...;(xn,yn)+ +\end{center} + +\begin{Exemple} + \buildVoronoiBW{(0.3,0.3);(1.5,1);(4,0);(4.5,2.5);(1.81,2.14);(2.5,0.5);(2.8,1.5);(0.1,2);(1.5,-0.3)} +\end{Exemple} + +\subsection{The Options}\label{sec:voronoiOptions} + + +There are several options to customize the drawing. +\begin{optionsenum} +\item[mode = int (default) \textme{or} ext:] this option allows to + use either the previously described set of points in the argument, or + a file, containing, line by line (2 columns), the points. Such a + file looks like : +\begin{verbatim} +x1 y1 +x2 y2 +x3 y3 +... +xn yn +\end{verbatim} +\item[bbox = none (default) \textme{or} show:] this option allows to draw the + added points to form a \emph{bounding box}\footnote{The bounding + box is defined by four points place at 15\% around the box + defined by $(x_{\min},y_{\min})$, $(x_{\min},y_{\max})$, + $(x_{\max},y_{\max})$, and $(x_{\min},y_{\max})$. It is used by + the algorithm and will be computed in any case.} and the corresponding + triangulation. By default, these points are removed at the end of + the algorithm. +\item[color = \meta{value} (default: black):] The color of the + drawing. +\item[colorBbox = \meta{value} (default: black):] The color of the + drawing for the elements (points and triangles) belonging to the + bounding box. +\item[colorVoronoi = \meta{value} (default: black):] The color of the + drawing for the elements (points and polygons) belonging to the + Voronoi diagram. +\item[print = none (default) \textme{or} points:] To label the vertices of the + triangulation. Contrary to the previous macros, where + \Verb+print=none+, a \emph{dot} is produced at each vertex (of the + set of points and on the circumcircle center which are the nodes of + the Voronoi diagram). +\item[meshpoint = \meta{value} (default: P):] The letter(s) used to + label the vertices of the triangulation. It is included in the math + mode delimiters \Verb+$...$+. The bounding box points are labeled + with numbers 1 to 4 and with a star exponent. +\item[circumpoint = \meta{value} (default: P):] The letter(s) used to + label the vertices of the Voronoi diagram. It is included in the math + mode delimiters \Verb+$...$+. +\item[tikz (boolean, default:false):] By default, this boolean is set + to \Verb+false+, and MetaPost (with \Verb+luamplib+) is used to draw + the picture. With this option, \Verb+tikz+ becomes the \textit{drawing + engine}. +\item[scale = \meta{value} (default: 1cm):] The scale option defines + the scale at which the picture is drawn (the same for both + axes). It must contain the unit of length (cm, + pt, etc.). +\end{optionsenum} + + +\subsection{The \emph{inc} variant} + +Once again, a variant of the macros is available allowing the user to +add code before and after the code produced by \luamesh. We refer to +the section~\ref{sec:inc} because it works the same way. + +Let us note that: +\begin{itemize} +\item with MetaPost, the circumcenters are defined using + \Verb+pair CircumPoints[];+, and so, are accessible. +\item With \Verb+tikz+, there are new coordinates defined as follows + \begin{latexcode} + \coordinate (CircumPoints1) at (...,...); + \coordinate (CircumPoints2) at (...,...); + \coordinate (CircumPoints3) at (...,...); + % etc. + \end{latexcode} +\end{itemize} + +Finally, when the MetaPost drawing engine is used, another color is +available (see~\ref{sec:mpcolor}): \Verb+\luameshmpcolorVoronoi+. + + +\section{With Gmsh} + +Gmsh is a open source efficient software that produces meshes. The +exporting format is the \emph{MSH ASCII file format} and can be easily +read by a Lua program. \luamesh provides the user with dedicated +macros to read and draw meshes coming from a Gmsh exportation.\bigskip + +\commande|\drawGmsh[«options»]{«file name»}|\medskip + +This macro draw the triangulation produced by Gmsh and exported in the +\Verb+msh+ format. The argument is the name of the file to read +(e.g.: \Verb+maillage.msh+). + +\begin{Exemple} +\drawGmsh{maillage.msh} +\end{Exemple} + +There are several options to customize the drawing. +\begin{optionsenum} +\item[color = \meta{value} (default: black):] The color of the + drawing. +\item[print = none (default) \textme{or} points:] To label the vertices of the + triangulation. Contrary to the previous macros, where + \Verb+print=none+, a \emph{dot} is produced at each vertex (of the + set of points and on the circumcircle center which are the nodes of + the Voronoi diagram). +\item[meshpoint = \meta{value} (default: P):] The letter(s) used to + label the vertices of the triangulation. It is included in the math + mode delimiters \Verb+$...$+. The bounding box points are labeled + with numbers 1 to 4 and with a star exponent. +\item[tikz (boolean, default:false):] By default, this boolean is set + to \Verb+false+, and MetaPost (with \Verb+luamplib+) is used to draw + the picture. With this option, \Verb+tikz+ becomes the \textit{drawing + engine}. +\item[scale = \meta{value} (default: 1cm):] The scale option defines + the scale at which the picture is drawn (the same for both + axes). It must contain the unit of length (cm, + pt, etc.). +\end{optionsenum} +Here is an example: +\begin{Exemple} + \drawGmsh[scale=2cm,print=points, color=blue!30]{maillage.msh} +\end{Exemple} + +\subsection{Gmsh and Voronoi Diagrams} + +Because Gmsh generates Delaunay triangulations, we can plot the +Voronoi diagram associated. This is done by the following macro:\bigskip + +\commande|\gmshVoronoi[«options»]{«file name»}|\medskip + +\begin{Exemple} + \gmshVoronoi{maillage.msh} +\end{Exemple} + +We refer to the section~\ref{sec:voronoiOptions} for the list of the options. + +\subsection{The \emph{inc} variants} + +Once again, there exists \emph{inc} variant macros:\bigskip + +\commande|\drawGmshinc[«options»]{«file name»}{«code before»}{«code after»}|\medskip + +\commande|\gmshVoronoiinc[«options»]{«file name»}{«code before»}{«code after»}|\medskip + +We refer to the previous sections for explanations. + +\section{Gallery} +\subsection{With Animate} + +If you use \emph{adobe acrobat reader}, you can easily produce an +animation of the Bowyer and Watson algorithm with the package +\Verb+animate+. + +For example, the following code (in a file name \Verb+animation.tex+): +\begin{latexcode} + \documentclass{article} + %% lualatex compilation + \usepackage[margin=2.5cm]{geometry} + \usepackage{luamesh} + \usepackage{fontspec} + \usepackage{multido} + \pagestyle{empty} + + \def\drawPath{draw (-2,-2)*u--(8,-2)*u--(8,6)*u--(-2,6)*u--cycle withcolor 0.99white;} + \def\clipPath{clip currentpicture to (-2,-2)*u--(8,-2)*u--(8,6)*u--(-2,6)*u--cycle;} + + \begin{document} + + \drawPointsMeshinc[ + mode=ext, + bbox = show, + colorBbox = blue!20, + print=points + ] + {mesh.txt}% + {% + beginfig(0); + \drawPath + }% + {% + \clipPath + endfig; + } + \newpage + \buildMeshBWinc[ + mode=ext, + bbox = show, + colorBbox = blue!20, + print=points + ] + {meshInit.txt}% + {% + beginfig(0); + \drawPath + }% + {% + \clipPath + endfig; + } + \multido{\ii=5+1}{4}{% + \newpage + \meshAddPointBWinc[ + mode=ext,step=badtriangles, + colorNew =green!20!red, + colorBack=red!10, + colorCircle = blue, + bbox = show, + colorBbox = blue!20 + ] + {mesh.txt}{\ii}% + {% + beginfig(0); + \drawPath + }% + {% + \clipPath + endfig; + } \newpage + \meshAddPointBWinc[ + mode=ext,step=cavity, + colorNew =green!20!red, + colorBack=red!10, + colorCircle = blue, + bbox = show, + colorBbox = blue!20 + ] + {mesh.txt}{\ii}% + {% + beginfig(0); + \drawPath + }% + {% + \clipPath + endfig; + } \newpage + \meshAddPointBWinc[ + mode=ext,step=newtriangles, + colorNew =green!20!red, + colorBack=red!10, + colorCircle = blue, + bbox = show, + colorBbox = blue!20] + {mesh.txt}{\ii}% + {% + beginfig(0); + \drawPath + }% + {% + \clipPath + endfig; + } + } + \newpage + \buildMeshBWinc[ + mode=ext, + bbox = show, + colorBbox = blue!20, + print=points + ] + {mesh.txt}% + {% + beginfig(0); + \drawPath + }% + {% + \clipPath + endfig; + } + \newpage + \buildMeshBWinc[ + mode=ext, + print=points + ] + {mesh.txt}% + {% + beginfig(0); + \drawPath + }% + {% + \clipPath + endfig; + } +\end{document} +\end{latexcode} +produces a PDF with multiple pages. Using the \Verb+pdfcrop+ program, +we crop the pages to the material, and then we can animate the PDF +using the \Verb+animate+ package. + +%\begin{Exemple} +%\animategraphics[controls]{1}{animation-crop}{}{} +%\end{Exemple} + \input{dum.bbl} \end{document}