Quelques commandes en PsTicks
tortue LOGO et PsTricks ?
Je voulais refaire rapidement la figure du DNB Métropole septembre 2017, car celle de l'APMEP (merci à tous ceux qui retapent les sujets !!) contenait une erreur.
ma première idée fut de passer par les coordonnées polaires :
\psline[linecolor=blue](0,0)(1,0)(!1.5 60 sin)% (!0.5 3 60 sin mul)(!-1.5 3 60 sin mul)% (-3, 0)(!-1.5 -3 60 sin mul)(!2.5 -3 60 sin mul)(!4.5 60 sin)
mais pour cela j'ai du me dessiner une grille isométrique
et réfléchir un peu : j'espérais trouver une solution plus "Tortue".
PsTricks propose la commande
\rlineto
... mais je n'ai pas
réussi à compiler correctement !?!
La solution est dans le package
pstricks-add
avec les commandes
\psStartPoint et
\psVector et
\psStartPoint(0,0) \psVector[linecolor=blue, arrows=-](1,0)(1;60)(2;120)(-3,0)(3;-120)(3;-60)(4,0)(4;60)
ou bien
\psVector[linecolor=blue, arrows=-]<0,0>(1,0)(1;60)(2;120)(-3,0)(3;-120)(3;-60)(4,0)(4;60)
pour dessiner une grille isométrique avec PsTricks avec un chemin dessus.
\psset{unit=1cm} \begin{pspicture}(-.5,-1)(7,4) %\psgrid \def\trieq{\pspolygon[linewidth=.75pt, linecolor=blue](0,0)(1;-60)(1,0)} % pointe vers le bas \def\ligne{\multido{\i=0+1}{5}{\rput(\i,0){\trieq}}} \multido{\i=1+1}{3}{\rput(\i;60){\ligne}} \psline[linewidth=2pt, linecolor=black]{<->}(4;60)(0,0)(6,0) \psVector[linecolor=red, linewidh=1.5pt, arrows=->]<5,0>(3;120)(3;-120)% (2;120)(5;0)(1;120) \end{pspicture}
Octobre 2019, je découvre : pst-turtle sur CTAN !
Scratch
Je voulais
- écrire les macros en PsTricks, car je commence à bien comprendre le langage... et j'ai actuellement la flemme de me mettre à TikZ ;-(
- pouvoir compiler en pdfLaTeX
- avoir un algorithme dessiné en couleurs ou en noir et blanc
- avoir les numéros de ligne (ou non)
- avoir des blocs fonctions
- avoir la hauteur des blocs qui s'ajuste au contenu
- pouvoir cacher certains textes
Si certains veulent tester, envoyer des retours... le fichier .tex et le rendu .pdf
- Màj 12/02/19 : boucle tantque
- Màj 23/02/19 : test Sinon
Courbe passant par des points donnés avec la pente donnée
Le fichier .pdf à télécharger (le fichier .tex en pièce jointe dans le fichier .pdf).
Utilisation du package xkeyval chargé par pstricks-add .
%~ usage : \PstCubique(x1,y1,p1)(x2,y2,p2) etc. %~ (xi,yi) sont les coordonnées du i-ème point (abscisses croissantes) %~ pi le coefficient directeur de la tangente en ce point %~ \PstTraceTangente(-5,-4,.25)(-3,0,2.5) %~ \PstCubique[linecolor=blue, linewidth=1pt]% %~ (-5,-4,.25)(-3,0,2.5)(-2,3,1.5)(0,4.5,0)(2,1,-2)(3,0,0)(5,-3,-3) %~ \uput[90](-5,-4){$\mathscr C_f$} %~ \PstTraceTangente[linewidth=2pt, linecolor=green!50!blue](-3,-4,-1)(-1,-5,0) %~ \PstCubique[AffPts=true, linecolor=purple, linestyle=dashed]% %~ (-5,1,-2)(-3,-4,-1)(-1,-5,0)(0,-4,1)(2,0,3)(5,4,0) %~ \uput[90](-5,1){$\mathscr C_g$} %~ \makeatletter \pst@addfams{FLpst} % famille pour les nouveaux paramètres psset \define@key[psset]{FLpst}{TanDx}{\def\psk@TanDx{#1 }} %longueur en abscisse de la tangente \psset[FLpst]{TanDx=.5} \newif\ifPst@AffPts % affichage des points sur la courbe \define@key[psset]{FLpst}{AffPts}[true]{\@nameuse{Pst@AffPts#1}} \psset[FLpst]{AffPts=false} \def\PstTraceTangente{\def\pst@par{}\pst@object{PstTraceTangente}} \def\PstTraceTangente@i{% % (#1,#2,#3) coordos point + pente (TanDx = longueur en abscisse) \begingroup \psset{arrows=<->, linecolor=red, linewidth=1.5pt} % param par défaut \use@par % paramètres choisis par utilisateur = remplacent ceux par défaut \PstTraceTangente@ii }%traceTg \def\PstTraceTangente@ii(#1,#2,#3){ \rput(#1,#2){ \psline(!\psk@TanDx\space #3 \psk@TanDx\space mul)% (!\psk@TanDx\space neg #3 \psk@TanDx\space mul neg)% } \@ifnextchar({\PstTraceTangente@ii}{\endgroup} } \def\CubiqueInterpolation(#1,#2,#3)(#4,#5,#6){% calcul des coeffs : XCas \psplot{#1}{#4}{% % je n'ai pas réussi à mieux simplifier les expressions des coeffs /xa #1 def /ya #2 def /ta #3 def /xb #4 def /yb #5 def /tb #6 def /Dx xb xa sub def /Dy yb ya sub def /St tb ta add def /Sx xb xa add def /denom Dx 3 exp def /a Dx St mul 2 Dy mul sub denom div def /b St Dx Sx mul mul neg 3 Sx Dy mul mul Dx ta xb mul tb xa mul add mul sub add denom div def /c Sx xb xb ta mul mul xa xa tb mul mul sub mul 2 xa xb xb tb mul xa ta mul sub 3 Dy mul sub mul mul mul add denom div def /d xa xb Dx xb ta mul xa tb mul add mul mul mul neg xa xa yb xa 3 xb mul sub mul mul mul neg xb xb ya xb 3 xa mul sub mul mul mul add add denom div def a x mul b add x mul c add x mul d add} } \def\Cubique@next{\@ifnextchar({\Cubique@job}{\Cubique@end}} \def\Cubique@end{\endgroup} \def\Cubique(#1,#2,#3){% Initialise la récurrence \def\Cubique@xa{#1}% garde les paramètres de A_0 \def\Cubique@ya{#2}% \def\Cubique@pa{#3}% \ifPst@AffPts \psdot(#1,#2) \fi% \Cubique@next% interpolation entre A_0 et A_1 } \def\Cubique@job(#1,#2,#3){% \CubiqueInterpolation(\Cubique@xa,\Cubique@ya,\Cubique@pa)(#1,#2,#3)% \def\Cubique@xa{#1}% \def\Cubique@ya{#2}% \def\Cubique@pa{#3}% \ifPst@AffPts \psdot(#1,#2) \fi% \Cubique@next% interpolation entre A_n et A_{n+1} } \def\PstCubique{% \def\pst@par{}\pst@object{PstCubique} } \def\PstCubique@i{% \begingroup \psset{dotstyle=o, dotsize=3pt 2} % paramètres par défauts \use@par % paramètres utilisateur \Cubique } \makeatother