\newcommand*\optstar{% % optional star
\meta{\ensuremath{*}}\xspace}
\DefineShortVerb{\|}
-
+\newcommand\R{\mathbf{R}}
\setlength{\fboxsep}{2pt}
\fvset{%
codes={\catcode`\«\active \catcode`\×\active },
Of course, you can just put the two files \Verb+luamesh.lua+ and
-\Verb+luamesh.sty+ in the working directory, but this is not
+\Verb+luamesh.sty+ in the working directory but this is not
recommended.
mkdir ~/texmf
\end{commandshell}
-Then place the files in the correct directories. First, the
-\Verb+luamesh.sty+ file must be in the directory:
+Then place the files in the correct directories. The
+\Verb+luamesh.sty+ file must be in directory:
\begin{center}
\Verb+~/texmf/tex/latex/luamesh/+
\end{center}
-and secondly, the \Verb+luamesh.lua+ must be in the directory:
+and the \Verb+luamesh.lua+ file must be in directory:
\begin{center}
\Verb+~/texmf/scripts/luamesh/+
\end{center}
\subsection{With Mik\TeX{} and Windows}
-We do not know these two systems, so we refer to the
+As these two systems are unknown to the contributor, we refer to the
documentation for integrating local additions to Mik\TeX:
\begin{center}
\url{http://docs.miktex.org/manual/localadditions.html}
\subsection{Dependencies}
-This package is built upon two main existing packages to draw the
+This package is built upon two main existing packages that one used to
+draw the
triangulations :
\begin{enumerate}
\item \Verb+luamplib+ to use MetaPost via the \luatex library
\Verb+mplib+;
-\item and \Verb+tikz+.
+\item \Verb+tikz+.
\end{enumerate}
We will see how to choose between these two \emph{drawing engines}.
-
Moreover, the following packages are necessary:
\begin{enumerate}
\item \Verb+xkeyval+ to manage the optional arguments;
-\item \Verb+xcolor+ to use colors (needed by \Verb+luamplib+);
-\item \Verb+ifthen+ to help the programming with \TeX.
+\item \Verb+xcolor+ to use colors (required by \Verb+luamplib+);
+\item \Verb+ifthen+ to help programming with \TeX.
\end{enumerate}
\section{The Basic Macros}
-Let us recall that this package provides macros to draw two
+This package provides macros to draw two
dimensional triangulations (or meshes).
\subsection{Draw a Complete Mesh}\label{sec:buildMesh}
\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
+ a file containing the points line by line (in 2 columns). Such a
file looks like :
\begin{verbatim}
x1 y1
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
+ points added to form the \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 triangles are removed at the end of
+ the algorithm and will be computed in any case.} and the
+ triangles attached. By default, these triangles are removed at the end of
the algorithm.
\item[color = \meta{value} (default: black):] The color of the
drawing.
\end{Exemple}
\begin{warning}
-The drawing engine is not very relevant here, but it is useful to
-understand how the drawing is made. However, the engine will be
+The drawing engine is not very relevant here, although it is useful to
+understand how the drawing is produced. However, the engine will be
relevant to
-the so called \emph{inc} macros (section~\ref{sec:inc}), for adding
+the so called \emph{inc} macros (section~\ref{sec:inc}) for adding
code before and after the one generated by
\luamesh.
\end{warning}
\begin{optionsenum}
\item[mode = int (default) \textme{or} ext:] this option allows to
use either the previously described set of points as the argument, or
- a file, containing, line by line (2 columns), the points. Such a
+ a file containing the points line by line (in 2 columns). Such a
file looks like :
\begin{verbatim}
x1 y1
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} and the corresponding
- triangulation. By default, these triangles are removed at the end of
+ points added to form the \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
+ triangles attached. By default, these triangles are removed at the end of
the algorithm. \emph{Here, because we plot only the vertices of the
mesh, there are no triangles, only dots.}
\item[color = \meta{value} (default: black):] The color of the
drawing for the elements (points and triangles) belonging to the
bounding box.
\item[print = none (default) \textme{or} points:] To label the vertices of the
- triangulation. This also adds a \emph{dot} at each vertex. Without
- label, there is still the dot.
+ triangulation. This also adds a \emph{dot} at each vertex. With no
+ label, the dot remains.
\item[meshpoint = \meta{value} (default: P):] The letter(s) used to
- label the vertices of the triangulation. It is included in the math
+ label the vertices of the triangulation. This 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
\commande|\meshAddPointBW[«options»]{«list of points» or «file name»}{«point» or «number of line»}|\medskip
This command allows to plot the steps within the addition of a
-point in a Delaunay triangulation, by the Bowyer and Watson
+point in a Delaunay triangulation by the Bowyer and Watson
algorithm.
This macro produces the Delaunay triangulation (using the Bowyer and
and \meta{number of line} will be explained in the option
description.
-One can use the macro as fallows:
+One can use the macro as follows:
\begin{Exemple}
\meshAddPointBW[step=badtriangles]{(1.5,1);(4,0);(4.5,2.5);(1.81,2.14);(2.5,0.5);(2.8,1.5)}{(2.2,1.8)}
\meshAddPointBW[step=cavity]{(1.5,1);(4,0);(4.5,2.5);(1.81,2.14);(2.5,0.5);(2.8,1.5)}{(2.2,1.8)}
\Verb+\buildMeshBW+) to customize the drawing.
\begin{optionsenum}
\item[mode = int (default) \textme{or} ext:] this option allows to
- use either the previously described set of point in the first
- argument, or
- a file containing, line by line (2 columns), the points. Such a
+ use either the previously described set of points as the argument, or
+ a file containing the points line by line (in 2 columns). Such a
file looks like :
\begin{verbatim}
x1 y1
...
xn yn
\end{verbatim}
-For the second argument of the macro, if we are in the
+For the second argument of the macro, if we are in
\Verb+mode = ext+, the argument must be the \emph{line number} of the file
-corresponding to the point we want to add. The algorithm will stop the
-line before to build the initial triangulation for which it will add
-the point corresponding to the line. The subsequent lines in the file are
+corresponding to the point we want to add. The algorithm will stop at the
+previous line to build the initial triangulation and proceed to add
+the point corresponding to the line requested. The subsequent lines in
+the file are
ignored.
\item[bbox = none (default) \textme{or} show:] this option allows to draw the
- added points to form a \emph{bounding box} and the corresponding
- triangulation. By default, these triangles are removed at the end of
+ added points that form the \emph{bounding box} and the triangles
+ attached. Although they are always computed, by default, these
+ triangles are removed at the end of
the algorithm.
\item[color = \meta{value} (default: black):] The color of the
drawing.
bounding box.
\item[colorNew = \meta{value} (default: red):] The color of the
drawing of the ``new'' elements which are the point to add, the
- polygon of the cavity, and the new triangles.
+ polygon delimiting the cavity, and the new triangles.
\item[colorBack = \meta{value} (default: black!20):] The color for the
filling of the region concerned by the addition of the new point.
\item[colorCircle = \meta{value} (default: green):] The color for
the picture. With this option, \Verb+tikz+ is the \textit{drawing
engine}.
\item[scale = \meta{value} (default: 1cm):] The scale option defines
- the scale at which the picture is draw (the same for the two
+ the scale at which the picture is drawn (the same for both
axis). It must contain the unit of length (cm,
pt, etc.).
\end{optionsenum}
We consider the case where the drawing engine is MetaPost (through the
\Verb+luamplib+ package).
-We describe the feature taking one macro in example but the mechanism
-and the possibilities are exactly the same for all the macros.
+The feature is described for the \Verb+\buildMeshBWinc+ but the mechanism
+and possibilities are exactly the same for all three macros.
When we use the MetaPost drawing engine, the macros previously
-described produced a code of the form
+described produce a code of the form
\begin{latexcode}
\begin{luamplib}
u:=<scale>;
The configurable colors
of the \LaTeX{} macro are accessible inside the MetaPost code. For
-\Verb+\buildMeshBWinc+ and \Verb+\drawPointsMeshinc+, we have
+\Verb+\buildMeshBWinc+ and \Verb+\drawPointsMeshinc+,
\Verb+\luameshmpcolor+,
-and \Verb+\luameshmpcolorBbox+.
-For the macro \Verb+\meshAddPointBWinc+ we have three additional
-colors : \Verb+\luameshmpcolorBack+, \Verb+\luameshmpcolorNew+, and
-\Verb+\luameshmpcolorCircle+. Of course, we can define MetoPost
-colors as well. Finally, the \Verb+luamplib+ mechanism of
+and \Verb+\luameshmpcolorBbox+ have been defined.
+For the macro \Verb+\meshAddPointBWinc+ three additional
+colors are present: \Verb+\luameshmpcolorBack+,
+\Verb+\luameshmpcolorNew+, and
+\Verb+\luameshmpcolorCircle+. Of course, MetaPost
+colors can be defined as well. Finally, the \Verb+luamplib+ mechanism
\Verb+\mpcolor+ is also available.
\subsubsection{The Mesh Points}
At the beginning of the automatically generated code, a list of
-MetaPost \Verb+pair+s are defined corresponding to all the vertices of
+MetaPost \Verb+pair+s are defined corresponding to all the vertices in
the mesh (when the option \Verb+bbox=show+, the last 4 points are the
\emph{bounding box points}). The points are available with the
-\Verb+MeshPoints[]+ table of variables. The \Verb+MeshPoints[i]+ are
+\Verb+MeshPoints[]+ table of variables. The \Verb+pair+s ($\R^{2}$ points)
+\Verb+MeshPoints[i]+ are
defined using the unit length \Verb+u+.
\subsubsection{Examples}
\end{Exemple}
\begin{warning}
The variables \Verb+MeshPoints[]+ are not defined for the argument
- corresponding to the code to place before the code generated by
+ corresponding to the code placed \textbf{before} the code generated by
\luamesh. Hence, to use such variables, we have to define a
\Verb+picture+ as shown in the third example above.
\end{warning}
\subsection{With TikZ}
-If we have chosen \Verb+tikz+ as the engine drawing, the added code
+If we have chosen \Verb+tikz+ as the drawing engine, the added code
will be written in \Verb+tikz+. In that case, the two arguments
\meta{code before} and \meta{code after} will be inserted as follows:
\begin{latexcode}
\end{latexcode}
Because the engine is \Verb+tikz+ their is no issue with colors, the
-\LaTeX{} colors (e.g.: \Verb+xcolor+) can be directly used.
+\LaTeX{} colors (e.g.: \Verb+xcolor+) can be used directly.
\subsubsection{The Mesh Points}
-The points of the mesh are defined here as \Verb+tikz+
-\Verb+\coordinate+ named as follows
+The mesh points are defined here as \Verb+tikz+
+\Verb+\coordinate+ and named as follows
\begin{latexcode}
\coordinate (MeshPoints1) at (...,...);
\coordinate (MeshPoints2) at (...,...);
%etc.
\end{latexcode}
-Once again these coordinates are not yet defined for the \meta{code
+Once again these coordinates are not yet defined to be used in the
+code given by \meta{code
before} argument.
\subsubsection{Examples}
}
\end{Exemple}
-\section{Voronio Diagrams}
+\section{Voronoï 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
+Another interesting feature of b Delaunay triangulation is that its
+\emph{dual} is the so-called Voronoï diagram. More precisely, for a
+finite set of
+points $\{p_{1},\ldots, p_{n}\}$ in the Euclidean plane, the Voronoï
+cell $R_{k}$ corresponding to $p_{k}$ is the set of
+all points in the Euclidean plane $\R^{2}$ 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
+This macro produce the Voronoï diagram of the given \meta{list of
+ points}. Once again, the
list of
points must be given in the following way :
\begin{center}
\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
+ a file containing the points line by line (in 2 columns). Such a
file looks like :
\begin{verbatim}
x1 y1
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
+ Voronoï diagram.
+\item[print = none (default) \textme{or} points:] To label the
+ vertices in 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).
+ \Verb+print=none+, a \emph{dot} is produced at each vertex of the
+ set of points and at the circumcircle centers which are the nodes of
+ the Voronoï 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
+ label the vertices of the triangulation. This is included in the math
+ mode delimiters \Verb+$...$+. The bounding box points are labelled
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
+ label the vertices of the Voronoï diagram. This 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 scale at which the picture is drawn (the same for both
axes). It must contain the unit of length (cm,
pt, etc.).
-\item[delaunay = none (default) \textme{or} show] This option
- allows to draw the Delaunay triangulation under the Voronoi diagram.
-\item[styleDelaunay = none (default) \textme{or} dashed] This option
- allows to draw dashed lines for the Delaunay triangulation.
-\item[styleVoronoi = none (default) \textme{or} dashed] This option
- allows to draw dashed lines for the Voronoi edges.
+\item[delaunay = none (default) \textme{or} show:] This option
+ allows to draw the Delaunay triangulation under the Voronoï diagram.
+\item[styleDelaunay = none (default) \textme{or} dashed:] This option
+ allows to draw the Delaunay triangulation in dashed lines.
+\item[styleVoronoi = none (default) \textme{or} dashed:] This option
+ allows to draw the Voronoï edges in dashed lines.
\end{optionsenum}
\begin{Exemple}
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.
+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.
+ \Verb+pair CircumPoints[];+ and so they are accessible.
\item With \Verb+tikz+, there are new coordinates defined as follows
\begin{latexcode}
\coordinate (CircumPoints1) at (...,...);
\end{latexcode}
\end{itemize}
-Finally, when the MetaPost drawing engine is used, another color is
+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
+Gmsh is an 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
+This macro draws the triangulation produced by Gmsh and exported in the
+\Verb+msh+ format. The argument is the name of the file to be read
(e.g.: \Verb+maillage.msh+).
\begin{Exemple}
\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).
+ triangulation. Contrary to some previous macros, when
+ \Verb+print=none+ a \emph{dot} is produced at each vertex of the
+ set of points and at the circumcircle centers (these are the nodes of
+ the Voronoï diagram).
\item[meshpoint = \meta{value} (default: P):] The letter(s) used to
- label the vertices of the triangulation. It is included in the math
+ label the vertices of the triangulation. This 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
\drawGmsh[scale=2cm,print=points, color=blue!30]{maillage.msh}
\end{Exemple}
-\subsection{Gmsh and Voronoi Diagrams}
+\subsection{Gmsh and Voronoï Diagrams}
-Because Gmsh generates Delaunay triangulations, we can plot the
-Voronoi diagram associated. This is done by the following macro:\bigskip
+Because Gmsh generates Delaunay triangulations, we can plot the associated
+Voronoï diagram. This is done by the following macro:\bigskip
\commande|\gmshVoronoi[«options»]{«file name»}|\medskip
drawing.
\item[colorVoronoi = \meta{value} (default: black):] The color of the
drawing for the elements (points and polygons) belonging to the
- Voronoi diagram.
+ Voronoï 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).
+ triangulation. Contrary to some previous macros, when
+ \Verb+print=none+, a \emph{dot} is produced at each vertex of the
+ set of points and at the circumcircle centers (these are the nodes of
+ the Voronoï 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
+ label the vertices of the Voronoï diagram. This 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
axes). It must contain the unit of length (cm,
pt, etc.).
\item[delaunay = none (default) \textme{or} show] This option
- allows to draw the Delaunay triangulation under the Voronoi diagram.
+ allows to draw the Delaunay triangulation overlapped with the
+ Voronoï diagram.
\item[styleDelaunay = none (default) \textme{or} dashed] This option
- allows to draw dashed lines for the Delaunay triangulation.
+ allows to draw the Delaunay triangulation in dashed lines.
\item[styleVoronoi = none (default) \textme{or} dashed] This option
- allows to draw dashed lines for the Voronoi edges.
+ allows to draw the Voronoï edges in dashed lines.
\end{optionsenum}
\begin{Exemple}
\subsection{The \emph{inc} variants}
-Once again, there exists \emph{inc} variant macros:\bigskip
+Once again, there exist \emph{inc} variant macros:\bigskip
\commande|\drawGmshinc[«options»]{«file name»}{«code before»}{«code after»}|\medskip
\section{Gallery}
\subsection{With Animate}
-If you use \emph{adobe acrobat reader}, you can easily produce an
+If you use \emph{Adobe Acrobat reader}, you can easily produce an
animation of the Bowyer and Watson algorithm with the package
\Verb+animate+.