From 194bd35605c2da5ae9f60db1eae3c76992a4d92b Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 17 Oct 2016 21:24:04 +0000 Subject: repere (17oct16) git-svn-id: svn://tug.org/texlive/trunk@42293 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/doc/metapost/repere/repere-doc.pdf | Bin 653215 -> 653733 bytes .../texmf-dist/doc/metapost/repere/repere-doc.tex | 8 +++- Master/texmf-dist/metapost/repere/repere.mp | 46 +++++++++++++++++++-- 3 files changed, 49 insertions(+), 5 deletions(-) diff --git a/Master/texmf-dist/doc/metapost/repere/repere-doc.pdf b/Master/texmf-dist/doc/metapost/repere/repere-doc.pdf index ae6f4c21c21..605edd4b4ff 100644 Binary files a/Master/texmf-dist/doc/metapost/repere/repere-doc.pdf and b/Master/texmf-dist/doc/metapost/repere/repere-doc.pdf differ diff --git a/Master/texmf-dist/doc/metapost/repere/repere-doc.tex b/Master/texmf-dist/doc/metapost/repere/repere-doc.tex index 840b870c565..b1a5ece4293 100644 --- a/Master/texmf-dist/doc/metapost/repere/repere-doc.tex +++ b/Master/texmf-dist/doc/metapost/repere/repere-doc.tex @@ -1141,6 +1141,8 @@ Certaines des macros suivantes sont largement inspirées des macros de \verb|geo \item[equilateral(A,B)] Cas particulier du précédent. Triangle équilatéral de sens direct de côté $[AB]$. \item[carre(A,B)] Autre cas particulier. Carré de sens direct de côté $[AB]$. + +\item[sommetpolygoneregulier(A,B,n,i)] Sommet numéro $i$ du polygone régulier à $n$ côtés dont un des côtés est $[AB]$. $A$ est le sommet numéro 1 et $B$ est le sommet numéro 2. \end{description} \begin{exemple}[0.51] @@ -1160,11 +1162,13 @@ fin; \begin{exemple}[0.53] repere(-1,5,1cm,-1,4,1cm); draw axes(1,1); -pair A,B; +pair A,B,M; A=(1,1);B=(3,0.5); fill polygoneregulier(A,B,5) withcolor bleu; fill equilateral(A,B) withcolor cyan; draw polygoneregulier(A,B,5); +M=sommetpolygoneregulier(A,B,5,3); +nomme.rt(M); draw equilateral(A,B); fin; \end{exemple} @@ -1175,7 +1179,7 @@ fin; \item[cercle(A,B,C)] Cercle circonscrit au triangle $ABC$. \item[cercle(O,A)] Cercle de centre $O$ passant par $A$. \item[cercle(O,r)] Cercle de centre $O$ et de rayon $r$. L'unité de longueur est l'unité de l'axe des abscisses. -\item[arccercle(A,O,B)] Arc de cercle de sens direct de centre $O$, passant par $A$ et s'appuyant sur la demi-droite $[OA)]$. +\item[arccercle(A,O,B)] Arc de cercle de sens direct de centre $O$, passant par $A$ et s'appuyant sur la demi-droite $[OB)$. \end{description} diff --git a/Master/texmf-dist/metapost/repere/repere.mp b/Master/texmf-dist/metapost/repere/repere.mp index 2b6d86e5b8b..3027bdac026 100644 --- a/Master/texmf-dist/metapost/repere/repere.mp +++ b/Master/texmf-dist/metapost/repere/repere.mp @@ -2,7 +2,7 @@ %% repere.mp %% %% Macros pour la construction de figures dans un repère %% %% o.peault@openmailbox.org %% -%% Version 16.06 (Juin 2016) %% +%% Version 16.10 (Octobre 2016) %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % This work may be distributed and/or modified under the conditions of @@ -169,6 +169,37 @@ def init_traces = enddef; enddef; +def traces_orig = + def fill expr c = addto currentpicture contour c _op_ enddef; + def draw expr p = + addto currentpicture + if picture p: + also p + else: + doublepath p withpen currentpen + fi + _op_ + enddef; + vardef thelabel@#(expr s,z) = % Position s near z + save p; picture p; + if picture s: p=s + else: p = s infont defaultfont scaled defaultscale + fi; + p shifted (z + labeloffset*laboff@# - + (labxf@#*lrcorner p + labyf@#*ulcorner p + + (1-labxf@#-labyf@#)*llcorner p + ) + ) + enddef; + vardef bbox primary p = + llcorner p-(bboxmargin,bboxmargin) -- lrcorner p+(bboxmargin,-bboxmargin) + -- urcorner p+(bboxmargin,bboxmargin) -- ulcorner p+(-bboxmargin,bboxmargin)-- cycle + enddef; + def drawarrow expr p = _apth:=p; _finarr enddef; + def drawdblarrow expr p = _apth:=p; _findarr enddef; + +enddef; + def _finarr text t = olddraw _apth t; filldraw arrowhead _apth t @@ -211,6 +242,7 @@ def fin = if _nbaxes=1: olddraw _axorlab fi; if coupe: clip currentpicture to (cadre transformed _T) fi; if bf: oldendfig; bf:=false;_nfig:=_nfig+1 fi; + traces_orig; enddef; def _defcadre= @@ -806,7 +838,7 @@ vardef axexpart@#(text t)= if numeric _i: if var: if str @#="": draw _etiqx_.bot(tmp,taillegrad,tmp) else: draw _etiqx_@#(tmp,taillegrad,tmp) fi fi; if boolgradxpart: - draw graduationx(_i) withpen pencircle scaled 0.8bp + olddraw graduationx(_i) withpen pencircle scaled 0.8bp fi; tmp:=_i; var:=true @@ -829,7 +861,7 @@ vardef axeypart@#(text t)= for _i=t: if numeric _i: if var: if str @#="": draw _etiqy_.lft(tmp,taillegrad,tmp) else: draw _etiqy_@#(tmp,taillegrad,tmp) fi fi; - draw ((taillegrad,0)--(-taillegrad,0)) shifted _cart(xO,_i) withpen pencircle scaled 0.8bp; + olddraw ((taillegrad,0)--(-taillegrad,0)) shifted _cart(xO,_i) withpen pencircle scaled 0.8bp; tmp:=_i; var:=true else: @@ -1820,6 +1852,14 @@ vardef polygoneregulier(expr A,B,n)= poly transformed inverse _T enddef; +vardef sommetpolygoneregulier(expr A,B,n,i)= + save $,centre; + pair $,centre; + _cart(B)-centre = (_cart(A)-centre) rotated (360/n); + $= _cart(A) rotatedaround(centre,((i-1)*360)/n); + $ transformed inverse _T +enddef; + vardef equilateral(expr A,B)= polygoneregulier(A,B,3) enddef; -- cgit v1.2.3