From d865bd5b172801559649eabbef29fd8f3898ce70 Mon Sep 17 00:00:00 2001 From: "Maxime Chupin (escudo)" Date: Tue, 22 Nov 2016 18:50:07 +0100 Subject: [PATCH] Fonction \buildMeshBWinc --- luamesh.lua | 10 +++++++ luamesh.sty | 68 ++++++++++++++++++++++++++++++++++++++++++++-- test/delaunay.pdf | Bin 21469 -> 20587 bytes test/delaunay.tex | 10 +++++++ 4 files changed, 86 insertions(+), 2 deletions(-) diff --git a/luamesh.lua b/luamesh.lua index de0c274..b977e4e 100644 --- a/luamesh.lua +++ b/luamesh.lua @@ -323,6 +323,16 @@ function buildMeshMPBW(chaine,mode,points,bbox,scale) tex.sprint(output) end + +-- buildMesh with MP include code +function buildMeshMPBWinc(chaine,beginning, ending,mode,points,bbox,scale) + listPoints = buildList(chaine, mode) + triangulation = BowyerWatson(listPoints,bbox) + output = traceMeshMP(listPoints, triangulation,points) + output = "\\begin{mplibcode}u:="..scale..";"..beginning .. output .. ending .. "\\end{mplibcode}" + tex.sprint(output) +end + -- buildMesh function buildRect(largeur,a,b,nbrA, nbrB) listPoints = rectangleList(a,b,nbrA,nbrB) diff --git a/luamesh.sty b/luamesh.sty index 82e3214..081cf5a 100644 --- a/luamesh.sty +++ b/luamesh.sty @@ -38,6 +38,68 @@ %%%%%%%%%%%%%%%% the buildMesh command %% engine of drawing \newif\ifluameshengineMP% +\define@boolkey{buildMeshInc}{tikz}[true]{}% +%% show the bounding box for delaunay +\define@choicekey*{buildMeshInc}{bbox}[\val\nr]{none, show}{% + \ifcase\nr\relax% + \def\luameshval@bm@bbox{none}% + \or% + \def\luameshval@bm@bbox{bbox}% + \fi% +}% +%% the scale +\define@key{buildMeshInc}{scale}[1cm]{\def\luameshval@bm@scale{#1}}% +%% print ponits ? +\define@choicekey*{buildMeshInc}{print}[\val\nr]{none, points}{% + \ifcase\nr\relax% + \def\luameshval@bm@print{none}% + \or% + \def\luameshval@bm@print{points}% + \fi% +}% +%% the name of the point +\define@key{buildMeshInc}{meshpoint}[P]{\def\luameshval@bm@meshpoint{#1}}% +%% the mode for reading the points +\define@choicekey*{buildMeshInc}{mode}[\val\nr]{int, ext}{% + \ifcase\nr\relax% + \def\luameshval@bm@mode{int}% + \or% + \def\luameshval@bm@mode{ext}% + \fi% +}% +% +%color +%% the name of the color of drawing +\define@key{buildMeshInc}{color}[black]{\def\luameshval@bm@color{#1}}% +%% the name of the color of drawing the bbox +\define@key{buildMeshInc}{colorBbox}[black]{\def\luameshval@bm@colorbbox{#1}}% +% +\presetkeys{buildMeshInc}{tikz=false,bbox=none,scale, meshpoint,mode=int,print=none,color,colorBbox}{}% +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% the difinition BW Bowyer and Watson algo +\newcommand*{\buildMeshBWinc}[4][]{% + % #1 : the string containing the list of points + % (x1,y1);(x2,y2);... or the name file containing the points + \setkeys{buildMesh}{#1} % + \def\MeshPoint{\luameshval@bm@meshpoint}% + \ifKV@buildMesh@tikz% if we are using tikz + \directlua{% + buildMeshTikZ("#2","\luameshval@bm@mode","\luameshval@bm@print","\luameshval@bm@bbox","full","\luameshval@bm@scale","\luameshval@bm@color")% + }% + \else % we are using MP + \mplibcolor{\luameshmpcolor}{\luameshval@bm@color} + \mplibcolor{\luameshmpcolorBbox}{\luameshval@bm@colorbbox} + \directlua{% + buildMeshMPBWinc("#2","#3","#4","\luameshval@bm@mode","\luameshval@bm@print","\luameshval@bm@bbox","\luameshval@bm@scale")% + }% + % + \fi% +}% +% +%%%%%%%%%%%%%%%% the buildMeshBW command +%% engine of drawing +\newif\ifluameshengineMP% \define@boolkey{buildMesh}{tikz}[true]{}% %% show the bounding box for delaunay \define@choicekey*{buildMesh}{bbox}[\val\nr]{none, show}{% @@ -49,7 +111,7 @@ }% %% the scale \define@key{buildMesh}{scale}[1cm]{\def\luameshval@bm@scale{#1}}% -%% print ponits ? +%% print points \define@choicekey*{buildMesh}{print}[\val\nr]{none, points}{% \ifcase\nr\relax% \def\luameshval@bm@print{none}% @@ -68,7 +130,7 @@ \fi% }% % -%color +% color %% the name of the color of drawing \define@key{buildMesh}{color}[black]{\def\luameshval@bm@color{#1}}% %% the name of the color of drawing the bbox @@ -97,6 +159,8 @@ \fi% }% % +% +% %% % %%the meshAddOnePointBW commande diff --git a/test/delaunay.pdf b/test/delaunay.pdf index 05c518f874c01dd43b284c773f92dafa2bc56183..199be36817d5bc7c31f64dc8a083d40401b4704e 100644 GIT binary patch delta 3112 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 delta 3978 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