From 5d563ad5ea0e2ca2074f5262b69f24f7fc91f211 Mon Sep 17 00:00:00 2001 From: "Maxime Chupin (escudo)" Date: Mon, 21 Nov 2016 23:21:08 +0100 Subject: [PATCH] =?utf8?q?Changement=20de=20la=20gestion=20des=20couleurs?= =?utf8?q?=20avec=20mplib,=20d=C3=A9claration=20avec=20\mplibcolor?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- luamesh.lua | 36 ++++++++++++++-------------- luamesh.sty | 4 ++++ test/delaunay.pdf | Bin 19818 -> 18553 bytes test/delaunay.tex | 58 +++++++++++++++++++++++----------------------- 4 files changed, 51 insertions(+), 47 deletions(-) diff --git a/luamesh.lua b/luamesh.lua index 945d9cc..0b3a385 100644 --- a/luamesh.lua +++ b/luamesh.lua @@ -464,15 +464,15 @@ function TeXaddOnePointMP(listPoints,P,step,color,colorBack, colorNew, colorCirc PointI = listPoints[triangulation[i][1]] PointJ = listPoints[triangulation[i][2]] PointK = listPoints[triangulation[i][3]] - output = output .. "draw (".. PointI.x ..",".. PointI.y ..")*u--("..PointJ.x..",".. PointJ.y ..")*u--("..PointK.x..",".. PointK.y ..")*u--cycle withcolor \\mpcolor{" .. color .."};" + output = output .. "draw (".. PointI.x ..",".. PointI.y ..")*u--("..PointJ.x..",".. PointJ.y ..")*u--("..PointK.x..",".. PointK.y ..")*u--cycle withcolor \\mpcolorcolor;" end -- draw and fill the bad triangle for i=1,#badTriangles do PointI = listPoints[triangulation[badTriangles[i]][1]] PointJ = listPoints[triangulation[badTriangles[i]][2]] PointK = listPoints[triangulation[badTriangles[i]][3]] - output = output .. "draw (".. PointI.x ..",".. PointI.y ..")*u--("..PointJ.x..",".. PointJ.y ..")*u--("..PointK.x..",".. PointK.y ..")*u--cycle withcolor \\mpcolor{" .. color .."};" - output = output .. "fill (".. PointI.x ..",".. PointI.y ..")*u--("..PointJ.x..",".. PointJ.y ..")*u--("..PointK.x..",".. PointK.y ..")*u--cycle withcolor \\mpcolor{" .. colorBack .."};" + output = output .. "draw (".. PointI.x ..",".. PointI.y ..")*u--("..PointJ.x..",".. PointJ.y ..")*u--("..PointK.x..",".. PointK.y ..")*u--cycle withcolor \\mpcolorcolor;" + output = output .. "fill (".. PointI.x ..",".. PointI.y ..")*u--("..PointJ.x..",".. PointJ.y ..")*u--("..PointK.x..",".. PointK.y ..")*u--cycle withcolor \\mpcolorcolorBack;" end -- draw the circoncircle for i=1,#badTriangles do @@ -480,14 +480,14 @@ function TeXaddOnePointMP(listPoints,P,step,color,colorBack, colorNew, colorCirc PointJ = listPoints[triangulation[badTriangles[i]][2]] PointK = listPoints[triangulation[badTriangles[i]][3]] center, radius = circoncircle(PointI, PointJ, PointK) - output = output .. "draw fullcircle scaled ("..radius .."*2u) shifted ("..center.x .. "*u," .. center.y .. "*u) dashed evenly withcolor \\mpcolor{" .. colorCircle .."};" + output = output .. "draw fullcircle scaled ("..radius .."*2u) shifted ("..center.x .. "*u," .. center.y .. "*u) dashed evenly withcolor \\mpcolorcolorCircle;" end -- mark the points for i=1,#listPoints do - output = output .. "dotlabel.llft (btex $\\MeshPoint_{" .. i .. "}$ etex, (" .. listPoints[i].x ..",".. listPoints[i].y .. ")*u ) withcolor \\mpcolor{" .. color .."};" + output = output .. "dotlabel.llft (btex $\\MeshPoint_{" .. i .. "}$ etex, (" .. listPoints[i].x ..",".. listPoints[i].y .. ")*u ) withcolor \\mpcolorcolor;" end -- mark the point to add - output = output .. "dotlabel.llft (btex $\\NewPoint$ etex,(" .. P.x ..",".. P.y .. ")*u) withcolor \\mpcolor{" .. colorNew .."};" + output = output .. "dotlabel.llft (btex $\\NewPoint$ etex,(" .. P.x ..",".. P.y .. ")*u) withcolor \\mpcolorcolorNew;" elseif(step == "cavity") then polygon = buildCavity(badTriangles, triangulation) polyNew = cleanPoly(polygon) @@ -500,7 +500,7 @@ function TeXaddOnePointMP(listPoints,P,step,color,colorBack, colorNew, colorCirc PointI = listPoints[triangulation[i][1]] PointJ = listPoints[triangulation[i][2]] PointK = listPoints[triangulation[i][3]] - output = output .. "draw (".. PointI.x ..",".. PointI.y ..")*u--("..PointJ.x..",".. PointJ.y ..")*u--("..PointK.x..",".. PointK.y ..")*u--cycle withcolor \\mpcolor{" .. color .."};" + output = output .. "draw (".. PointI.x ..",".. PointI.y ..")*u--("..PointJ.x..",".. PointJ.y ..")*u--("..PointK.x..",".. PointK.y ..")*u--cycle withcolor \\mpcolorcolor;" end -- fill and draw the cavity path = "" @@ -508,14 +508,14 @@ function TeXaddOnePointMP(listPoints,P,step,color,colorBack, colorNew, colorCirc PointI = listPoints[polyNew[i]] path = path .. "(".. PointI.x ..",".. PointI.y ..")*u--" end - output = output .. "fill " .. path .. "cycle withcolor \\mpcolor{" .. colorBack .."};" - output = output .. "draw " .. path .. "cycle withcolor \\mpcolor{" .. colorNew .."} withpen pencircle scaled 1pt;" + output = output .. "fill " .. path .. "cycle withcolor \\mpcolorcolorBack;" + output = output .. "draw " .. path .. "cycle withcolor \\mpcolorcolorNew withpen pencircle scaled 1pt;" -- mark the points of the mesh for i=1,#listPoints do - output = output .. "dotlabel.llft (btex $\\MeshPoint_{" .. i .. "}$ etex, (" .. listPoints[i].x ..",".. listPoints[i].y .. ")*u ) withcolor \\mpcolor{" .. color .."};" + output = output .. "dotlabel.llft (btex $\\MeshPoint_{" .. i .. "}$ etex, (" .. listPoints[i].x ..",".. listPoints[i].y .. ")*u ) withcolor \\mpcolorcolor ;" end -- mark the adding point - output = output .. "dotlabel.llft (btex $\\NewPoint$ etex,(" .. P.x ..",".. P.y .. ")*u) withcolor \\mpcolor{" .. colorNew .."};" + output = output .. "dotlabel.llft (btex $\\NewPoint$ etex,(" .. P.x ..",".. P.y .. ")*u) withcolor \\mpcolorcolorNew ;" elseif(step == "newT") then polygon = buildCavity(badTriangles, triangulation) polyNew = cleanPoly(polygon) @@ -528,7 +528,7 @@ function TeXaddOnePointMP(listPoints,P,step,color,colorBack, colorNew, colorCirc PointI = listPoints[triangulation[i][1]] PointJ = listPoints[triangulation[i][2]] PointK = listPoints[triangulation[i][3]] - output = output .. "draw (".. PointI.x ..",".. PointI.y ..")*u--("..PointJ.x..",".. PointJ.y ..")*u--("..PointK.x..",".. PointK.y ..")*u--cycle withcolor \\mpcolor{" .. color .."};" + output = output .. "draw (".. PointI.x ..",".. PointI.y ..")*u--("..PointJ.x..",".. PointJ.y ..")*u--("..PointK.x..",".. PointK.y ..")*u--cycle withcolor \\mpcolorcolor ;" end -- fill the cavity path = "" @@ -536,19 +536,19 @@ function TeXaddOnePointMP(listPoints,P,step,color,colorBack, colorNew, colorCirc PointI = listPoints[polyNew[i]] path = path .. "(".. PointI.x ..",".. PointI.y ..")*u--" end - output = output .. "fill " .. path .. "cycle withcolor \\mpcolor{" .. colorBack .."};" + output = output .. "fill " .. path .. "cycle withcolor \\mpcolorcolorBack;" -- draw the new triangles composed by the edges of the polygon and the added point for i=1,#polygon do - output = output .. "draw".."(".. listPoints[polygon[i][1]].x .. "," .. listPoints[polygon[i][1]].y .. ")*u -- (" .. listPoints[polygon[i][2]].x .. "," .. listPoints[polygon[i][2]].y ..")*u withcolor \\mpcolor{" .. colorNew .."} withpen pencircle scaled 1pt;" - output = output .. "draw".."(".. listPoints[polygon[i][1]].x .. "," .. listPoints[polygon[i][1]].y .. ")*u -- (" .. P.x .. "," .. P.y ..")*u withcolor \\mpcolor{" .. colorNew .."} withpen pencircle scaled 1pt;" - output = output .. "draw".."(".. listPoints[polygon[i][2]].x .. "," .. listPoints[polygon[i][2]].y .. ")*u -- (" .. P.x .. "," .. P.y ..")*u withcolor \\mpcolor{" .. colorNew .."} withpen pencircle scaled 1pt;" + output = output .. "draw".."(".. listPoints[polygon[i][1]].x .. "," .. listPoints[polygon[i][1]].y .. ")*u -- (" .. listPoints[polygon[i][2]].x .. "," .. listPoints[polygon[i][2]].y ..")*u withcolor \\mpcolorcolorNew withpen pencircle scaled 1pt;" + output = output .. "draw".."(".. listPoints[polygon[i][1]].x .. "," .. listPoints[polygon[i][1]].y .. ")*u -- (" .. P.x .. "," .. P.y ..")*u withcolor \\mpcolorcolorNew withpen pencircle scaled 1pt;" + output = output .. "draw".."(".. listPoints[polygon[i][2]].x .. "," .. listPoints[polygon[i][2]].y .. ")*u -- (" .. P.x .. "," .. P.y ..")*u withcolor \\mpcolorcolorNew withpen pencircle scaled 1pt;" end -- mark points for i=1,#listPoints do - output = output .. "dotlabel.llft (btex $\\MeshPoint_{" .. i .. "}$ etex, (" .. listPoints[i].x ..",".. listPoints[i].y .. ")*u ) withcolor \\mpcolor{" .. color .."};" + output = output .. "dotlabel.llft (btex $\\MeshPoint_{" .. i .. "}$ etex, (" .. listPoints[i].x ..",".. listPoints[i].y .. ")*u ) withcolor \\mpcolorcolor ;" end -- mark the added point - output = output .. "dotlabel.llft (btex $\\NewPoint$ etex,(" .. P.x ..",".. P.y .. ")*u) withcolor \\mpcolor{ " .. colorNew .."};" + output = output .. "dotlabel.llft (btex $\\NewPoint$ etex,(" .. P.x ..",".. P.y .. ")*u) withcolor \\mpcolorcolorNew ;" end return output end diff --git a/luamesh.sty b/luamesh.sty index af422c3..2860881 100644 --- a/luamesh.sty +++ b/luamesh.sty @@ -193,6 +193,10 @@ buildMeshTikZ("#2","\luameshval@mode","\luameshval@print","\luameshval@bbox","full","\luameshval@scale","\luameshval@color")% }% \else % we are using MP + \mplibcolor{\mpcolorcolor}{\luameshval@color} + \mplibcolor{\mpcolorcolorBack}{\luameshval@colorback} + \mplibcolor{\mpcolorcolorNew}{\luameshval@colornew} + \mplibcolor{\mpcolorcolorCircle}{\luameshval@colorcircle} \directlua{% TeXOnePointMP("#2","#3","\luameshval@step","\luameshval@color","\luameshval@colorback","\luameshval@colornew","\luameshval@colorcircle","\luameshval@scale","\luameshval@mode","\luameshval@picture","\luameshval@bbox")% }% diff --git a/test/delaunay.pdf b/test/delaunay.pdf index 24df700483e48cf18a28c1590d498b785384bc06..d4ff7ab39baa8904bc27cc726cf3734edcf6c40c 100644 GIT binary patch delta 9496 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