8.3 Macros de draw2d.mac

Ce modèle est désormais automatiquement chargé. Il gère notamment différentes sortes de marqueurs et propose une unification des commandes de dessin sous la forme :

draw("type", <données>, [options locales])

Les options sont une liste d’affectations <paramètre> := < valeur >, ces affectations sont locales. Les paramètres peuvent être des attributs prédéfinis comme FillStyle, LineStyle, ..., ou bien des paramètres définis par le modèle. La valeur par défaut des attributs prédéfinis est leur valeur courante au moment de l’appel à la commande draw. La valeur par défaut des paramètres définis par le modèle sera vue dans les sections suivantes.

Types de base :

Types secondaires reprenant des commandes prédéfinies :

Types supplémentaires :

8.3.1 Options pour des lignes en dégradé

Pour avoir un dégradé dans le tracé d’un contour, les options sont :

8.3.2 Options pour les marqueurs

Pour ajouter des marqueurs le long d’un chemin, il y a deux options et celles-ci seront appliquées à chaquecomposante connexe de la ligne :

PIC

figureListes des marqueurs

Figure 8.1 Listes des marqueurs

NB : par défaut un marqueur fermé se termine au même point que le segment, un marqueur ouvert est ajouté au bout du segment, pour inverser la situation il suffit de remplacer le marqueur par son opposé (-Orc, -Carc, ...).

Les types path et line (et donc tous les types qui utilisent ces deux là) testent l’attribut Arrows et ajoutent des marqueurs lorsque cet attribut vaut 1 ou 2. Par défaut la flèche ajoutée est Carrow, mais il est possible de changer la flèche par défaut avec le paramètre global :

CurrentArrow := < marker >

8.3.3 Le type dot

draw("dot", <[liste de points 2d]>, [options])

8.3.4 Le type label

draw("label", "texte1", [options1], "texte2", [options2], ...)

8.3.5 Le type path

draw("path", <commande path>, [options])

  1. \begin{texgraph}[name=typepath, file]
  2. Graph image = [
  3. view(-5,5,-5,5),Marges(0,0,0.25,0.25),size(7.5),
  4. draw("path",[carre(Xmin+i*Ymin,Xmax+i*Ymin,1),line,closepath],
  5.  [FillStyle:=gradient, GradAngle:=-90, FillColorB:=lightgray,
  6.  LineStyle:=noline]),
  7. draw("path",[-4.5+2*i,-2+2*i,circle],[doubleline:=1,
  8.  doublecolor:=red,Width:=12,FillStyle:=gradient,
  9.  GradStyle:=radial,GradColor:=white+i*darkblue,
  10.  legend:="$S$"]),
  11. draw("path",[-4-4*i,-1,3-3*i,4+i,bezier],
  12.  [LineStyle:=gradient,LineColorA:=yellow,Width:=12,
  13.  Arrows:=1,marker:=[0,Line,0.5,Carrow],scale:=1.5,
  14.  legend:="$L$",labelpos:=0.55, labeldir:=North]),
  15. draw("path",[carre(-1-0.6*i,1.7-0.6*i,-1),line,closepath],
  16.  [lineborder:=20,Color:=darkgreen,FillStyle:=full,
  17.   FillOpacity:=0.3,FillColor:=cyan])
  18. ];
  19. \end{texgraph}

 PIC

Exemple avec le type path.

8.3.6 Le type bezier

draw("bezier", <[P1,c1,c2,P2,c3,c4,P3,...]>, [options])

8.3.7 Le type ellipse

draw("ellipse", <[centre,rayonX,rayonY,inclinaison]>, [options])

8.3.8 Le type ellipticArc

draw("ellipticArc", <[B,A,C,rX,rY,sens(+/-1),inclinaison]>, [options])

8.3.9 Le type line

draw("line", <[liste de points 2d]>, [options])

8.3.10 Le type cartesian

draw("cartesian", <f(x)>, [options])

8.3.11 Le type polar

draw("polar", <r(t)>, [options])

8.3.12 Le type parametric

draw("parametric", <f(t)>, [options])

  1. \begin{texgraph}[name=courbes, file]
  2. Graph image = [
  3. view(-5,5,-5,5), Marges(0,0,0,0), size(7.5),
  4. draw("line",carre(Xmin+i*Ymin,Xmax+i*Ymin,1),
  5.  [close:=1,LineStyle:=noline,FillStyle:=gradient,
  6.  GradAngle:=-45,FillColorB:=darkgray]),
  7. draw("polar",2*(1+cos(t)),[t:=[-pi,pi],Width:=12,
  8.  FillStyle:=gradient,Width:=8,FillColorB:=darkblue,
  9.  GradStyle:=radial, GradCenter:=0.5+0.5*i,
  10.  legend:="$\rho(t)=2(1+\cos(t))$",labeldir:=South]),
  11. draw("parametric",2*(cos(2*t)+i*sin(3*t))-2.5+2.5*i,
  12.  [t:=[pi/2,pi+pi/2],Width:=24,LineStyle:=gradient,
  13.  LineColorA:=yellow,LineColorB:=red,
  14.  GradLineStep:=0.25,Width:=8,legend:="$\cal C$",
  15.  labelpos:=0.25, labeldir:=West] ),
  16. draw("axes",[0,1+i],Arrows:=1),
  17. draw("cartesian",Ent(x),[x:=[-4,4],discont:=1,
  18.  Color:=seagreen, marker:=[0,dot,1,Oarc],Width:=8])
  19. ];
  20. \end{texgraph}

 PIC

Exemple de tracés de courbes.

NB : on voit sur cet exemple que le départ en blanc du gradient de la cardioïde n’est pas au centre alors qu’il devrait l’être, ce problème se produit uniquement avec le code TeXgraph dans le source LaTeX, et manifestement c’est le \pgfdeclareradialshading de la figure précédente qui a été pris en compte. Il semblerait que la nouvelle déclaration n’ait pas effacé pas l’ancienne... Bizarrerie de pgf?

8.3.13 Le type implicit

draw("implicit", <f(x,y)>, [options])

8.3.14 Le type odeint

draw("odeint", <f>, <t0>, <Y0>, [options])

8.3.15 Le type periodic

draw("periodic", <f(x)>, [options])

  1. \begin{texgraph}[name=periodic, file]
  2. Graph image = [
  3. view(-5,5,-5,5), size(7.5),
  4. Axes(0,1+i), Width:=8,
  5. draw("periodic",if x>0 then 4 else 2 fi,[period:=[-1,1],
  6.  discont:=1, Color:=red]),
  7. draw("periodic",2*abs(x)-1,[period:=[-1,1], Color:=blue]),
  8. draw("periodic", sin(x)-3, [period:=[-pi/2,pi/2],
  9.  Color:=magenta])
  10. ];
  11. \end{texgraph}

 PIC

Fonctions périodiques

8.3.16 Le type spline

draw("spline", [V1,A1,...,An,Vn], [options])

8.3.17 Le type straightL

draw("straightL", <a*x+b*y=c ou [A,B]>, [options])

  1. \begin{texgraph}[name=straightL, file]
  2. Graph image = [
  3. view(-4,4,-4,4), Marges(0.25,0.25,0.25,0.25), size(7.5),
  4. draw("axes",[0,1+i],[Arrows:=1, nbsubdiv:=[2,2],grid:=1]),
  5. Width:=8,
  6. draw("straightL",x+2*y=2,[Color:=blue,legend:="$x+2y=2$",
  7.  rotation:=1]),
  8. draw("straightL",x=-3,[Color:=crimson,labelpos:=0.1,
  9.  legend:="$x=-3$",LabelStyle:=left]),
  10. draw("straightL",[-2-2*i,1],[Color:=darkgreen,
  11.  labelpos:=0.85,legend:="$\cal D$"]),
  12. draw("label","$A$", [anchor:=-2-2*i,labeldir:=NW,showdot:=1],
  13.        "$B$", [anchor:=1])
  14. ];
  15. \end{texgraph}

 PIC

Exemple avec le type straightL.

8.3.18 Le type seg

draw("seg", <[A,B]>, [options])

  1. \begin{texgraph}[name=seg, file]
  2. Graph image = [
  3. view(-4,4,-4,4), Marges(0,0,0,0), size(7.5),
  4. v:=-1.5*i, seg:=shift([-3+4*i,3+5*i], v),
  5. draw("seg", seg, [legend:="segment", Arrows:=1] ),
  6. seg:=shift(seg,v),
  7. draw("seg", seg, [legend:="segment", labelsep:=0,
  8.    marker:=[0,Oarc,1,Oarc] ] ),
  9. seg:=shift(seg,v),
  10. setframestyle([FillStyle:=full, LineStyle:=noline,
  11.    FillColor:=white]),
  12. draw("seg", seg, [legend:="segment", labelsep:=0,
  13.  Arrows:=2 ] ),
  14. seg:=shift(seg,v),
  15. draw("seg", seg, [legend:="segment", labelpos:=0.25,
  16.  labelsep:=-0.25, LineStyle:=dashed, LabelStyle:=left,
  17.  rotation:=0, marker:=[0,dot,0.75,Cscissors,1,dot]]),
  18. seg:=shift(seg,v),
  19. draw("seg", seg, [legend:="segment", LabelStyle:=left,
  20.  labelsep:=-0.25, showdot:=1, rotation:=0,
  21.  LabelAngle:=-90, marker:=[0,Line,1,CParrow]])
  22. ];
  23. \end{texgraph}

 PIC

Exemple avec le type seg.

8.3.19 Le type interval

draw("interval", <[A,B]>, [options])

  1. \begin{texgraph}[name=interval, file]
  2. Graph image = [
  3. view(-4,4,-1.5,2), Marges(0,0,0,0), size(7.5),
  4. dollar:=1, LabelSize:=footnotesize,
  5. v:=i, axeX([v,1],1),
  6. draw("interval", [-1+v,3+v], [legend:="$(x+1)(x-3)<0$",
  7.  labelsep:=0.5, marker:="][", Width:=8, Color:=crimson]),
  8. v:=-i, dollar:=1, axeX([v,1],1),
  9. draw("interval", [-4.5+v,-1+v],
  10.  [legend:="$(x+1)(x-3)\geqslant0$", labeldir:=North,
  11.   anchor:=1+v, marker:="]]", Width:=8, Color:=darkblue]),
  12. draw("interval", [3+v,4.5+v],
  13.  [marker:="[[", Width:=8, Color:=darkblue])
  14. ];
  15. \end{texgraph}

 PIC

Exemple avec le type interval.

8.3.20 Le type halfPlane

draw("halfPlane", <a*x+b*y<=c>, [options])

  1. \begin{texgraph}[name=halfPlane, file]
  2. Graph image = [
  3. view(-5,5,-5,5), Marges(0.5,0,0,0.5), size(7.5),
  4. draw("grid",[-5-5*i,5+5*i,0.5+0.5*i],[unit:=[0.5,0.5],
  5.  gridwidth:=2]),
  6. Width:=8, FillOpacity:=0.6,
  7. draw("halfPlane" ,x+2*y>=5, [FillColor:=navy,
  8.  labelpos:=0.425, legend:="$x+2y \geqslant 5$"]),
  9. draw("halfPlane" ,-5*x+2*y<2, [FillColor:=crimson,
  10.  labelpos:=0.425, legend:="$-5x+2y< 2$" ]),
  11. draw("halfPlane" ,x<-2, [FillColor:=darkgreen,
  12.  labelpos:=0.6, legend:="$x<-2$" ]),
  13. draw("halfPlane" ,y<=-1, [FillColor:=gold,
  14.  legend:="$y\leqslant -1$" ]),
  15. draw("axes",[-5-5*i,1+i],[Arrows:=1, Width:=4,
  16.  originpos:=[0,0]])
  17. ];
  18. \end{texgraph}

 PIC

Exemple avec le type halfPlane.

8.3.21 Le type angleD

draw("angleD", <[B,A,C,r]>, [options])

8.3.22 Le type arc

draw("arc", <[B,A,C,r,sens(+/-1)]>, [options])

  1. \begin{texgraph}[name=Arc, file]
  2. Graph image = [
  3. view(-2.25,3.75,-1.75,4.5),Marges(0,0,0,0),size(7.5),
  4. A:=0, B:=3+i, C:=2+4*i, Color:=blue, Width:=8,
  5. draw("arc", [B,A,C,1,-1], [Arrows:=1, FillStyle:=full,
  6.  FillColor:=pink,legend:="$\alpha$"]),
  7. draw("angleD", [B,A,C,0.75], [FillStyle:=gradient,
  8.  FillColorB:=darkgreen]),
  9. draw("line",[B,A,C],[showdot:=1,dotcolor:=red,DotScale:=2]),
  10. draw("label","$A$",[Color:=red, anchor:=A, labeldir:=South],
  11.        "$B$",[anchor:=B, labeldir:=North],
  12.        "$C$",[anchor:=C, labeldir:=SE])
  13. ];
  14. \end{texgraph}

 PIC

Les types angleD et Arc

8.3.23 Le type circle

draw("circle", <[centre,rayon] ou [A,B,C]>, [options])

  1. \begin{texgraph}[name=cycloide, file]
  2. Graph image = [
  3. view(-5,5,-1,3), Marges(0,0,0,0), size(7.5),
  4. CurrentArrowScale:=0.5, draw("seg",[-5,5],Width:=8),
  5. points:=[], centres:=[],
  6. for t in [-3.75,-1.9,0,1.85,3.7] do
  7.  M:=t-sin(t)+i*(1-cos(t)), I:=t+i,
  8.  Append(centres,I), Append(points,M),
  9.  draw("circle", [I,1], [Width:=12, FillStyle:=full,
  10.   FillColor:=darkblue,FillOpacity:=0.3]),
  11.  draw("seg", [M,I]),
  12.  if t<>0 then
  13.   draw("arc", [M,I,t,0.5,t], Arrows:=1) fi,
  14.   draw("seg",[I,t], LineStyle:=dashed)
  15. od,
  16. draw("dot",centres, DotStyle:=cross),
  17. draw("parametric",t-sin(t)+i*(1-cos(t)),[Width:=8,Color:=red,]),
  18. draw("dot",points,[DotStyle:=bigdot,DotScale:=1.5])
  19. ];
  20. \end{texgraph}

 PIC

Le type circle