mercredi 29 juillet 2015

Obtenir le chemin d’un caractère, d’un mot ou d'une phrase

(mise à jour 30/07/2015 : version 2)
La commande \psCharPath[options] permet d’obtenir les contours externes et internes d’un caractère, d’un mot ou d’une phrase. Elle comporte plusieurs options, dont j’indique les valeurs par défaut :
  1. [text=A] : le caractère ou le texte ;
  2. [setflat=1] : sa valeur fixe la précision, c’est-à-dire le nombre de points [0.2 à 100] ;
  3. [PSfont=Times-Roman] : type de fonte postscript(ces options ont été reprises de pst-solides3d) ;
  4. [fontsize=100] : taille de la fonte en points ;
  5. [file=text] : préfixe des noms des fichiers, par défaut c’est le texte dont on calcule le chemin(ce nom ne prend pas les caractères accentués).
  6. [isolatin=true] : pour des caractères accentués ou non.
 Un rappel pour l’écriture des fichiers, que je reprends de pst-solides3d :
 Par défaut, sous Windows et Linux, la protection des fichiers du disque dur est activée et ne permet donc pas l’écriture sur le disque. Pour désactiver cette protection, tout au moins temporairement, voici les deux procédures correspondantes :
Linux : le plus simple est donc d’utiliser ghostscript directement, en console. Comme il n’y a rien à
attendre comme image :

$> gs -dNOSAFER monfichier.ps quit.ps
Windows : dans le menu Options, l’option Protection des fichiers ne doit pas être cochée.


 Les options ayant été choisies, il faut compiler par LATEX, puis DVIPS et enfin GSview qui lance l’interpréteur Postscript. Plusieurs fichiers sont générés, numérotés à partir de 0, suivi de nombre de points du chemin.
Exemple par la commande :

\begin{pspicture}(-1,-0.1)(1,0.1)
\psCharPath[text=Enzo]
\end{pspicture}


 On a comme premier fichier : Enzo-0-77.dat. Ce fichier est le chemin extérieur de E, il comporte 77 points, dont les coordonnées sont en cm. Le nombre de points se règle avec l’option setflat [0.2 à 100]. Le premier point fixe le moveto, les suivants sont les extrémités des segments tracés avec lineto. Pour fermer le chemin il faudrait rajouter à la fin closepath. Les fichiers suivants (1,2 etc.) sont ceux, soit des contours intérieurs ou extérieurs de la première lettre ou des lettres suivantes. Le deuxième nombre qui indique le nombre de points servira pour le nombre de boucles (multido) pour un tracé pas à pas avec un crayon(voir les exemples Agnès et Enzo).

Avec pst-solides3d la macro : \psProjection[object=line,args=tabE] permet le tracé de ce contour, si on a défini au départ tabE par :
\pstVerb{/tabE {(Enzo-0-77.dat) run} def}

 On pourrait utiliser \psProjection[object=polygone,args=tabE] mais cette option souffre d’un bug, il faut donc modifier cette macro comme dans l’exemple de l’avion :
http://pstricks.blogspot.fr/2015/07/pst-crayon-dessiner-un-avion.html

\begin{pspicture}(-1,-0.2)(1,0.2)
\psCharPath[text=Agnès,file=agnes]
\end{pspicture}



Pour un tracé pas à pas, il faut définir un tableau : voir les différents exemples liés au package pst-crayon, celui d’Agnès est ici :
http://manuel.luque.perso.neuf.fr/pst-crayon/psCharPath/agnes-draw.tex
et celui pour l’obtention des données :
http://manuel.luque.perso.neuf.fr/pst-crayon/psCharPath/agnes-dat.tex 

L'animation Gif obtenue :

La documentation au format pdf, ainsi que le fichier source :
http://manuel.luque.perso.neuf.fr/pst-crayon/psCharPath/psCharPath-v2.pdf
http://manuel.luque.perso.neuf.fr/pst-crayon/psCharPath/psCharPath-v2.tex
Ancienne version :
http://manuel.luque.perso.neuf.fr/pst-crayon/psCharPath/psCharPath.pdf
http://manuel.luque.perso.neuf.fr/pst-crayon/psCharPath/psCharPath.tex

Le tracé pas à pas d'Enzo :
http://manuel.luque.perso.neuf.fr/pst-crayon/psCharPath/enzo-dat.tex
http://manuel.luque.perso.neuf.fr/pst-crayon/psCharPath/enzo-draw.tex


mercredi 15 juillet 2015

pst-crayon : le B Chancery






\documentclass{article}
\usepackage{pst-crayon}
% B majuscule en ZapfChancery
\def\Bzap{0.449792 0.0048739
0.493309 0.00478687
0.528731 0.00478687
0.559019 0.0046128
0.587218 0.00426467
0.616288 0.00365543
0.649361 0.00278509
0.68957 0.00156661
0.739789 0.0
0.909679 0.0
1.08444 -0.0048739
1.19515 -0.00661458
1.27949 -0.00792009
1.34259 -0.00887747
1.38932 -0.0094867
1.42483 -0.00983484
1.45416 -0.0100959
1.48236 -0.0100959
1.51439 -0.0100959
1.756 0.00261102
1.98176 0.0430818
2.20744 0.11445
2.44914 0.220022
2.60702 0.308797
2.74349 0.403054
2.85872 0.503056
2.95272 0.609064
3.02556 0.721425
3.07752 0.840487
3.10859 0.966512
3.11895 1.09976
3.10607 1.2096
3.06891 1.31256
3.0092 1.40525
2.92887 1.48445
2.84714 1.53946
2.75088 1.5801
2.62738 1.6103
2.46411 1.6345
2.63809 1.71944
2.78909 1.80944
2.91712 1.90439
3.02191 2.00422
3.10354 2.10866
3.16194 2.21771
3.19702 2.33121
3.20877 2.44914
3.19589 2.56428
3.1569 2.66254
3.09066 2.74436
2.99641 2.81033
2.87299 2.86072
2.71964 2.89614
2.53539 2.91712
2.31928 2.92399
2.24408 2.92399
2.28412 3.07891
1.87924 2.9038
1.60212 2.85628
1.37566 2.80075
1.18471 2.73304
1.01447 2.64897
0.866423 2.5534
0.737352 2.44687
0.627602 2.32973
0.537261 2.20222
0.466589 2.06462
0.415761 1.91727
0.385125 1.76044
0.374942 1.59446
0.376857 1.5204
0.38295 1.44877
0.393742 1.3687
0.409756 1.26965
0.809764 1.45451
0.782958 1.59446
0.767814 1.6862
0.761112 1.75452
0.759633 1.82423
0.764332 1.94225
0.778954 2.04956
0.803846 2.14722
0.839617 2.23608
0.886528 2.31719
0.945276 2.39152
1.01612 2.4601
1.09976 2.52399
1.25094 2.61537
1.41822 2.68143
1.60987 2.72503
1.83433 2.74888
1.46461 1.26965
1.42657 1.11612
1.39072 0.979306
1.35616 0.858155
1.32239 0.751713
1.28836 0.65876
1.25346 0.578515
1.21682 0.509845
1.17783 0.451706
1.13553 0.403054
1.08923 0.363019
1.03823 0.330468
0.981656 0.304358
0.918818 0.283818
0.848843 0.26763
0.771121 0.25501
0.684783 0.24474
0.449792 0.0048739
1.87924 1.45939
1.93851 1.46522
1.98559 1.46818
2.02702 1.46931
2.06932 1.46948
2.20901 1.4613
2.3319 1.43728
2.4373 1.39768
2.52477 1.3432
2.59361 1.27409
2.64357 1.19097
2.67386 1.09428
2.68413 0.984528
2.66959 0.838224
2.62843 0.690963
2.56376 0.553014
2.47908 0.434822
2.36584 0.332731
2.22972 0.259187
2.07202 0.214713
1.89421 0.19983
1.84538 0.200352
1.79342 0.202267
1.73354 0.205922
1.66122 0.211754
1.57175 0.220109
1.46052 0.23151
1.323 0.246306
1.15442 0.264931
1.3197 0.414456
1.45173 0.542048
1.55547 0.655279
1.63615 0.761634
1.69882 0.868686
1.74843 0.984006
1.79029 1.11517
1.82945 1.26965
1.87924 1.45939
2.20927 2.78404
2.35679 2.77987
2.45297 2.77282
2.5172 2.76011
2.56924 2.73913
2.65375 2.68195
2.71833 2.59718
2.75941 2.49083
2.77395 2.36907
2.75497 2.19813
2.70093 2.03607
2.61589 1.89186
2.50414 1.77445
2.38525 1.69708
2.25418 1.64381
2.10057 1.61196
1.9144 1.59934
2.20927 2.78404
}
 %  nbre points = 166
\pagestyle{empty}
\begin{document}
\begin{center}
\multido{\i=0+2}{109}{%
\begin{pspicture}(-4,-3)(6,8)
\psframe(-4,-3)(6,8)
\psset{lightsrc=viewpoint,viewpoint=100 20 50 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-5 3 -3 7,ngrid=8 10](0,0,0)
\psSolid[object=plan,definition=equation,args={[0 0 1 0] 90},name=P0,base=-4 4 -4 6,action=none]
\pstVerb{/tabC [\Bzap] def /II \i\space 2 add def }%
\psProjection[object=line,plan=P0,linecolor=blue,args=tabC 0 II getinterval aload pop]
\psCrayonH[RotX=20,pencolor=blue,grid,unit=0.5](tabC II 1 sub get neg 2 mul,tabC II 2 sub get 2 mul,0)
\end{pspicture}\newpage}
\multido{\i=0+2}{38}{%
\begin{pspicture}(-4,-3)(6,8)
\psframe(-4,-3)(6,8)
\psset{lightsrc=viewpoint,viewpoint=100 20 50 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-5 3 -3 7,ngrid=8 10](0,0,0)
\psSolid[object=plan,definition=equation,args={[0 0 1 0] 90},name=P0,base=-4 4 -4 4,action=none]
\psProjection[object=line,plan=P0,linecolor=blue,args=tabC 0 218 getinterval aload pop]
\pstVerb{/tabC [\Bzap] def /II \i\space 2 add def }%
\psProjection[object=line,plan=P0,linecolor=blue,args=tabC 218 II getinterval aload pop]
\psCrayonH[RotX=20,pencolor=blue,grid,unit=0.5](tabC 218 II 1 sub add get neg 2 mul,tabC 218 II 2 sub add get 2 mul,0)
\end{pspicture}\newpage}
\multido{\i=0+2}{18}{%
\begin{pspicture}(-4,-3)(6,8)
\psframe(-4,-3)(6,8)
\psset{lightsrc=viewpoint,viewpoint=100 20 50 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-5 3 -3 7,ngrid=8 10](0,0,0)
\psSolid[object=plan,definition=equation,args={[0 0 1 0] 90},name=P0,base=-4 4 -4 4,action=none]
\pstVerb{/tabC [\Bzap] def /II \i\space 2 add def }%
\psProjection[object=line,plan=P0,linecolor=blue,args=tabC 0 218 getinterval aload pop]
\psProjection[object=line,plan=P0,linecolor=blue,args=tabC 218 76 getinterval aload pop]
\psProjection[object=line,plan=P0,linecolor=blue,args=tabC 294 II getinterval aload pop]
\psCrayonH[RotX=20,pencolor=blue,grid,unit=0.5](tabC 294 II 1 sub add get neg 2 mul,tabC 294 II 2 sub add get 2 mul,0)
\end{pspicture}\newpage}
\multido{\i=0+1}{5}{%
\begin{pspicture}(-4,-3)(6,8)
\psframe(-4,-3)(6,8)
\psset{lightsrc=viewpoint,viewpoint=100 20 50 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-5 3 -3 7,ngrid=8 10](0,0,0)
\pstVerb{/tabC [\Bzap] def}%
\psSolid[object=plan,definition=equation,args={[0 0 1 0] 90},name=P0,base=-4 4 -4 4,action=none]
\psProjection[object=line,plan=P0,linecolor=blue,args=tabC 0 218 getinterval aload pop]
\psProjection[object=line,plan=P0,linecolor=blue,args=tabC 218 76 getinterval aload pop]
\psProjection[object=line,plan=P0,linecolor=blue,args=tabC 294 36 getinterval aload pop]
\psCrayonH[RotY=90,pencolor=blue,grid,unit=0.5](tabC 294 36 1 sub add get neg 2 mul 10 sub,tabC 294 36 2 sub add get 2 mul 8 sub,0)
\end{pspicture}\newpage}
\multido{\i=0+1}{5}{%
\begin{pspicture}(-4,-3)(6,8)
\psframe(-4,-3)(6,8)
\psset{lightsrc=viewpoint,viewpoint=100 20 50 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-5 3 -3 7,ngrid=8 10](0,0,0)
\pstVerb{/tabC [\Bzap] def}%
\psSolid[object=plan,definition=equation,args={[0 0 1 0] 90},name=P0,base=-4 4 -4 4,action=none]
\psProjection[object=texte,PSfont=ZapfChancery, % Palatino-Italic,
              fontsize=141.7322834646,linecolor=red,
              text=B,
              pos=ur,
              plan=P0](0.3,-0.1)%
\psProjection[object=line,plan=P0,linecolor=blue,args=tabC 0 218 getinterval aload pop]
\psProjection[object=line,plan=P0,linecolor=blue,args=tabC 218 76 getinterval aload pop]
\psProjection[object=line,plan=P0,linecolor=blue,args=tabC 294 36 getinterval aload pop]
\psCrayonH[RotY=90,pencolor=blue,grid,unit=0.5](tabC 294 36 1 sub add get neg 2 mul 10 sub,tabC 294 36 2 sub add get 2 mul 8 sub,0)
\psCrayonH[RotY=90,pencolor=red,grid,unit=0.5](tabC 294 36 1 sub add get neg 2 mul 10 sub,tabC 294 36 2 sub add get 2 mul 5 sub,0)
\end{pspicture}\newpage}
\end{center}
\end{document}

jeudi 9 juillet 2015

pst-crayon : dessiner le B

Pour calculer les images :

\documentclass{article}
\usepackage{pst-crayon}
% B en Times-Bold
\def\BTimesBold{0.0800713   0.0   1.6895   0.0   1.9923   0.0171457   2.26523   0.0673643   2.50493   0.148393   2.70841   0.258056   2.87221   0.39409   2.99319   0.554581   3.06812   0.737091   3.09388   0.939619   3.0763   1.10629   3.02452   1.26025   2.93992   1.40003   2.82408   1.52449   2.69083   1.62614   2.54218   1.70439   2.36071   1.76757   2.1292   1.82423   2.32981   1.88986   2.49805   1.96035   2.63548   2.03755   2.74409   2.12285   2.82538   2.21806   2.88135   2.32468   2.91355   2.44444   2.92399   2.57899   2.90258   2.76115   2.83896   2.92112   2.73417   3.0582   2.58909   3.17187   2.40458   3.26134   2.18168   3.32609   1.92128   3.36534   1.6244   3.37866   0.0800713   3.37866   0.0800713   3.25368   0.294175   3.22565   0.429165   3.16438   0.499488   3.05907   0.519767   2.89893   0.519767   0.479731   0.515763   0.392958   0.50236   0.322374   0.476772   0.265976   0.436737   0.221763   0.379468   0.187558   0.302617   0.161448   0.20366   0.141256   0.0800713   0.124981   0.0800713   0.0   1.31944   1.71422   1.46948   1.71422   1.65016   1.70169   1.80613   1.66418   1.93772   1.60116   2.04495   1.51256   2.12807   1.39785   2.18716   1.25686   2.22259   1.08923   2.23434   0.894709   2.19595   0.575208   2.08116   0.345351   1.89047   0.206358   1.6244   0.159794   1.54807   0.163798   1.48393   0.176505   1.43119   0.198263   1.38941   0.22977   1.3579   0.271546   1.33615   0.324289   1.32344   0.388433   1.31944   0.464761   1.31944   1.71422   1.31944   2.98387   1.32283   3.04602   1.33345   3.09806   1.35207   3.14045   1.3794   3.17387   1.41613   3.19885   1.46287   3.21591   1.52048   3.22574   1.58959   3.22896   1.81675   3.18797   1.97558   3.06264   2.0688   2.84923   2.09926   2.54418   2.09117   2.3648   2.06453   2.2185   2.01597   2.10222   1.94182   2.01292   1.83859   1.94747   1.70282   1.90291   1.53093   1.87619   1.31944   1.86427   1.31944   2.98387}
% on prend un point sur 2
\pagestyle{empty}
\begin{document}
\begin{center}
\psset{RotSequence=yxz}
\multido{\i=0+2}{50}{%
\begin{pspicture}(-3,-3)(6,6)
\psframe(-3,-3)(6,6)
\psset{lightsrc=viewpoint,viewpoint=100 20 20 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-9 3 -2 8,ngrid=12 10,linewidth=0.01,linecolor=blue,RotY=90](0,0,0)
\psSolid[object=plan,definition=equation,args={[1 0 0 0] 90},name=P0,base=-4 4 -4 4,action=none]
\pstVerb{/tabC [\BTimesBold] {2 mulv} papply def /II \i\space 2 add def }%
\psProjection[object=line,plan=P0,linewidth=0.05,linecolor=blue,args=tabC 0 II getinterval aload pop]
\psCrayonC[RotY=90,RotX=10,pencolor=blue,grid,h=10,r=0.5](0,tabC II 2 sub get,tabC II 1 sub get)
\end{pspicture}\newpage}
\multido{\i=0+2}{23}{%
\begin{pspicture}(-3,-3)(6,6)
\psframe(-3,-3)(6,6)
\psset{lightsrc=viewpoint,viewpoint=100 20 20 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-9 3 -2 8,ngrid=12 10,linewidth=0.01,linecolor=blue,RotY=90](0,0,0)
\psSolid[object=plan,definition=equation,args={[1 0 0 0] 90},name=P0,base=-4 4 -4 4,action=none]
\psProjection[object=line,plan=P0,linewidth=0.05,linecolor=blue,args=tabC 0 100 getinterval aload pop]
\pstVerb{/tabC [\BTimesBold] {2 mulv} papply def /II \i\space 2 add def }%
\psProjection[object=line,plan=P0,linewidth=0.05,linecolor=blue,args=tabC 100 II getinterval aload pop]
\psCrayonC[RotY=90,RotX=10,pencolor=blue,grid,h=10,r=0.5](0,tabC 100 II 2 sub add get,tabC 100 II 1 sub add get)
\end{pspicture}\newpage}
\multido{\i=0+2}{22}{%
\begin{pspicture}(-3,-3)(6,6)
\psframe(-3,-3)(6,6)
\psset{lightsrc=viewpoint,viewpoint=100 20 20 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-9 3 -2 8,ngrid=12 10,linewidth=0.01,linecolor=blue,RotY=90](0,0,0)
\psSolid[object=plan,definition=equation,args={[1 0 0 0] 90},name=P0,base=-4 4 -4 4,action=none]
\psProjection[object=line,plan=P0,linewidth=0.05,linecolor=blue,args=tabC 0 100 getinterval aload pop]
\psProjection[object=line,plan=P0,linewidth=0.05,linecolor=blue,args=tabC 100 46 getinterval aload pop]
\pstVerb{/tabC [\BTimesBold] {2 mulv} papply def /II \i\space 2 add def }%
\psProjection[object=line,plan=P0,linewidth=0.05,linecolor=blue,args=tabC 146 II getinterval aload pop]
\psCrayonC[RotY=90,RotX=10,pencolor=blue,grid,h=10,r=0.5](0,tabC 146 II 2 sub add get,tabC 146 II 1 sub add get)
\end{pspicture}\newpage}
\multido{\i=0+1}{3}{
\begin{pspicture}(-3,-3)(6,6)
\psframe(-3,-3)(6,6)
\psset{lightsrc=viewpoint,viewpoint=100 20 20 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-9 3 -2 8,ngrid=12 10,linewidth=0.01,linecolor=blue,RotY=90](0,0,0)
\pstVerb{/tabC [\BTimesBold] {2 mulv} papply def}%
\psSolid[object=plan,definition=equation,args={[1 0 0 0] 90},name=P0,base=-4 4 -4 4,action=none]
\psProjection[object=line,plan=P0,linewidth=0.05,linecolor=blue,args=tabC 0 100 getinterval aload pop]
\psProjection[object=line,plan=P0,linewidth=0.05,linecolor=blue,args=tabC 100 46 getinterval aload pop]
\psProjection[object=line,plan=P0,linewidth=0.05,linecolor=blue,args=tabC 146 44 getinterval aload pop]
\end{pspicture}\newpage}
\multido{\i=0+1}{3}{
\begin{pspicture}(-3,-3)(6,6)
\psframe(-3,-3)(6,6)
\psset{lightsrc=viewpoint,viewpoint=100 20 20 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-9 3 -2 8,ngrid=12 10,linewidth=0.01,linecolor=blue,RotY=90](0,0,0)
\pstVerb{/tabC [\BTimesBold] {2 mulv} papply def}%
\psSolid[object=plan,definition=equation,args={[1 0 0 0] 90},name=P0,base=-4 4 -4 4,action=none]
\psProjection[object=texte,PSfont=Times-Bold,% ZapfChancery, % Palatino-Italic, % ZapfDingbats, %
              fontsize=142.2637 2 mul,linecolor={[rgb]{1 1 0.5}},
              text=B,
              pos=ur,
              plan=P0](0.05,-0.1)%
\psProjection[object=line,plan=P0,linewidth=0.05,linecolor=blue,args=tabC 0 100 getinterval aload pop]
\psProjection[object=line,plan=P0,linewidth=0.05,linecolor=blue,args=tabC 100 46 getinterval aload pop]
\psProjection[object=line,plan=P0,linewidth=0.05,linecolor=blue,args=tabC 146 44 getinterval aload pop]
\end{pspicture}\newpage}
\end{center}
\end{document}

mardi 7 juillet 2015

pst-crayon : dessiner un avion

\documentclass{article}
\usepackage{pst-crayon}
\def\avion{0.174764   1.73441   0.349877   1.66444   0.18486   1.0747   0.439696   1.10951   0.809764   1.60456   1.01073   1.58454   1.22204   1.56505   1.39585   1.55016   1.48445   1.54433   1.57845   1.54268   1.64964   1.5412   1.70178   1.53954   1.73859   1.53754   1.76392   1.53484   1.78159   1.5311   1.79542   1.52614   1.80926   1.51961   1.86105   1.47566   1.87924   1.4096   1.87602   1.366   1.86122   1.29393   1.82658   1.15712   1.76435   0.919775   1.32953   -0.0651014   1.51439   -0.0651014   1.57244   -0.0602275   1.61883   -0.0406449   1.66418   0.000348136   1.71944   0.0699753   1.9144   0.345003   2.21937   0.345003   2.2413   0.351791   2.26053   0.369807   2.27402   0.395308   2.27925   0.424726   2.27402   0.457015   2.26053   0.48417   2.2413   0.502708   2.21937   0.509671   2.05435   0.509671   2.29909   0.859548   2.59918   0.859548   2.62112   0.866423   2.64035   0.885136   2.65384   0.912203   2.65906   0.944493   2.65375   0.974694   2.63965   1.00211   2.61894   1.02204   2.59396   1.02979   2.43904   1.02979   2.80911   1.52449   2.85402   1.52936   3.1367   1.54216   3.31373   1.5526   3.43454   1.56391   3.5489   1.57949   3.65403   1.60438   3.73437   1.64007   3.78563   1.68419   3.80373   1.73441   3.76335   1.79969   3.6462   1.85182   3.45777   1.8889   3.2039   1.90918   2.85402   1.92415   2.80911   1.92937   2.43904   2.42407   2.59396   2.42407   2.61894   2.43173   2.63965   2.45218   2.65375   2.48099   2.65906   2.51424   2.65384   2.54339   2.64035   2.56898   2.62112   2.58709   2.59918   2.59396   2.29909   2.59396   2.05435   2.94384   2.21937   2.94384   2.2413   2.95071   2.26053   2.96943   2.27402   2.99649   2.27925   3.02878   2.27402   3.05811   2.26053   3.08379   2.2413   3.10189   2.21937   3.10885   1.9144   3.10885   1.71944   3.38388   1.66418   3.45621   1.61883   3.49877   1.57244   3.51878   1.51439   3.52383   1.32953   3.52383   1.76435   2.53408   1.82658   2.30074   1.86122   2.16358   1.87602   2.08916   1.87924   2.04425   1.86792   1.98881   1.83363   1.9493   1.77593   1.92476   1.69438   1.9144   1.52936   1.90918   1.47209   1.90883   1.41952   1.90665   1.34807   1.90074   1.23449   1.88933   0.98975   1.86949   0.809764   1.8493   0.439696   2.344   0.18486   2.37916   0.349877   1.78942   0.174764   1.73441}
\def\projPolygon{%
% il y a un bug dans la définition de /proj-pst-polygone dans pst-solides3d.pro,
% d'où cette nouvelle définition
/proj-pst-polygone {
   proj-action (none) eqstring not {
      l@pl@n plangetrange aload pop
      setyrange setxrange
%      newpath
%         xmin ymin l@pl@n pointplan smoveto
%         xmin ymax l@pl@n pointplan slineto
%         xmax ymax l@pl@n pointplan slineto
%         xmax ymin l@pl@n pointplan slineto
%         xmin ymin l@pl@n pointplan slineto
%     planprojpst projpath
%      clip
      solidlinewidth setlinewidth
      linestyle
      linecolor
      proj-definition length 0 eq {
         [proj-args]
      } {
         proj-args
      } ifelse
      proj-definition cvx exec polygone_
      planprojpst projectionsifacevisible projpath
   } if
   /projname where {
      pop
      proj-definition length 0 eq {
         [proj-args]
      } {
         proj-args
      } ifelse
      proj-definition cvx exec projname cvlit exch def
      /projname where pop /projname undef
   } if
} def
}
\pagestyle{empty}
\begin{document}
\begin{center}
\psset{RotSequence=zyx}
\multido{\i=0+4}{58}{% 115 points => 230 éléments 4 x 57 =228
\begin{pspicture}(-1,-4)(12,7)
\psframe[fillstyle=solid,fillcolor=cyan!20](-1,-4)(12,7)
\psset{lightsrc=viewpoint,viewpoint=100 20 30 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-8 1 0 10,ngrid=16 17,linewidth=0.01,linecolor=blue](0,0,0)
\psSolid[object=plan,definition=equation,args={[0 0 1 0] 90},name=P0,base=-4 4 -4 6,action=none]
\pstVerb{/tabC [\avion] {2 mulv} papply def /II \i\space 2 add def }%
\psProjection[object=line,plan=P0,linewidth=0.06,args=tabC 0 II getinterval aload pop]
\psCrayonH[RotY=40,RotX=-10,RotZ=20,pencolor=black,grid,h=15,r=0.4,colorpencilbody=gray,colorbody](tabC II 1 sub get neg,tabC II 2 sub get,0)
\end{pspicture}\newpage}
\multido{\i=0+1}{11}{%
\begin{pspicture}(-1,-4)(12,7)
\psframe[fillstyle=solid,fillcolor=cyan!20](-1,-4)(12,7)
\psset{lightsrc=viewpoint,viewpoint=100 20 30 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-8 1 0 10,ngrid=16 17,linewidth=0.01,linecolor=blue](0,0,0)
\codejps{\projPolygon}
\psSolid[object=plan,definition=equation,args={[0 0 1 -\i\space 2 div] 90},name=P0,base=-4 4 -4 6,action=none]
\pstVerb{/tabC [\avion] {2 mulv} papply def}%
\psProjection[object=polygone,plan=P0,linewidth=0.06,args=tabC 0 228 getinterval {\i\space 0 addv} papply aload pop,fillstyle=solid,fillcolor=blue](\i,0)
\end{pspicture}\newpage}
\end{center}
\end{document}

pst-crayon : dessin du a minuscule en Times-Bold


 Avec le package animate d'Alexander Grahn :
http://manuel.luque.perso.neuf.fr/pst-crayon/pst-crayon-v2/animate-a-pst-crayon.tex
http://manuel.luque.perso.neuf.fr/pst-crayon/pst-crayon-v2/animate-a-pst-crayon.pdf
Rappel : le package est ici :
http://manuel.luque.perso.neuf.fr/pst-crayon/pst-crayon-v2/

Le listing pour créer les images en vue du Gif animé.

\documentclass{article}
\usepackage{pst-crayon}
% a minuscule en Times-Bold
\def\aminusculeTimesBold{2.36542   0.320129   2.31547   0.270185   2.29163   0.254404   2.26033   0.250068   2.21454   0.257612   2.18177   0.28059   2.16209   0.319522   2.15558   0.374929   2.15558   1.68042   2.13798   1.83181   2.08665   1.96664   2.00306   2.08379   1.88921   2.1822   1.74675   2.26067   1.57741   2.31808   1.38301   2.35337   1.16537   2.36542   0.962382   2.35389   0.779079   2.32033   0.617714   2.26622   0.480627   2.19287   0.3699   2.10165   0.288047   1.99404   0.237322   1.87135   0.219894   1.73522   0.225443   1.66074   0.241831   1.5951   0.268624   1.53856   0.305562   1.49157   0.352038   1.45437   0.407705   1.4274   0.472217   1.41093   0.545225   1.40538   0.617107   1.41084   0.682572   1.42671   0.740494   1.45229   0.790091   1.48662   0.830238   1.52885   0.860065   1.57828   0.878708   1.63403   0.885124   1.69533   0.864488   1.79904   0.795294   1.91037   0.748384   1.97289   0.735291   2.02032   0.759136   2.09359   0.825208   2.15229   0.92501   2.19131   1.05022   2.20553   1.24028   2.18029   1.37087   2.10174   1.44604   1.96491   1.47024   1.76539   1.47024   1.40017   1.09219   1.28008   0.816971   1.1821   0.615806   1.09435   0.460251   1.00513   0.312846   0.887639   0.208101   0.758963   0.145584   0.61702   0.124861   0.460251   0.165874   0.248594   0.28059   0.0806393   0.456262   -0.0301747   0.680144   -0.0700608   0.885124   -0.0505513   1.07892   0.0112722   1.27081   0.119832   1.47024   0.279896   1.52313   0.117664   1.60411   0.00927785   1.72074   -0.0512449   1.88054   -0.0700608   2.03202   -0.0543665   2.16989   -0.00442215   2.30299   0.0839342   2.44033   0.215038   2.36542   0.320129   1.46538   0.500137   1.36965   0.401115   1.28208   0.334436   1.19728   0.296891   1.11022   0.285099   1.05611   0.291255   1.00695   0.309291   0.963509   0.338338   0.926398   0.37753   0.89631   0.426174   0.873939   0.483315   0.860065   0.54826   0.855296   0.620142   0.894315   0.822174   1.01025   0.992036   1.20118   1.12722   1.46538   1.22537   1.46538   0.500137}
% 97 points
% on prend un point sur 2
\pagestyle{empty}
\begin{document}
\begin{center}
\psset{RotSequence=yxz}
\multido{\i=0+4}{40}{%
\begin{pspicture}(-6,-3)(7,6)
\psframe(-6,-3)(7,6)
\psset{lightsrc=viewpoint,viewpoint=100 20 50 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-5 3 -3 7,ngrid=8 10,linewidth=0.01,linecolor=blue](0,0,0)
\psSolid[object=plan,definition=equation,args={[0 0 1 0] 90},name=P0,base=-4 4 -4 6,action=none]
\pstVerb{/tabC [\aminusculeTimesBold] {2 mulv} papply def /II \i\space 2 add def }%
\psProjection[object=line,plan=P0,linewidth=0.05,linecolor=red,args=tabC 0 II getinterval aload pop]
\psCrayonH[RotY=30,RotX=10,pencolor=red,grid,h=20,r=0.5](tabC II 1 sub get neg,tabC II 2 sub get,0)
\end{pspicture}\newpage}
\multido{\i=0+2}{18}{%
\begin{pspicture}(-6,-3)(7,6)
\psframe(-6,-3)(7,6)
\psset{lightsrc=viewpoint,viewpoint=100 20 50 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-5 3 -3 7,ngrid=8 10,linewidth=0.01,linecolor=blue](0,0,0)
\psSolid[object=plan,definition=equation,args={[0 0 1 0] 90},name=P0,base=-4 4 -4 4,action=none]
\psProjection[object=line,plan=P0,linewidth=0.05,linecolor=red,args=tabC 0 158 getinterval aload pop]
\pstVerb{/tabC [\aminusculeTimesBold] {2 mulv} papply def /II \i\space 2 add def }%
\psProjection[object=line,plan=P0,linewidth=0.05,linecolor=red,args=tabC 158 II getinterval aload pop]
\psCrayonH[RotY=30,RotX=10,pencolor=red,grid,h=20,r=0.5](tabC 158 II 1 sub add get neg,tabC 158 II 2 sub add get,0)
\end{pspicture}\newpage}
\multido{\i=0+1}{5}{
\begin{pspicture}(-6,-3)(7,6)
\psframe(-6,-3)(7,6)
\psset{lightsrc=viewpoint,viewpoint=100 20 50 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-5 3 -3 7,ngrid=8 10,linewidth=0.01,linecolor=blue](0,0,0)
\psSolid[object=plan,definition=equation,args={[0 0 1 0] 90},name=P0,base=-4 4 -4 4,action=none]
\psProjection[object=texte,PSfont=Times-Bold,% ZapfChancery, % Palatino-Italic,
              fontsize=142.2637 2 mul,linecolor=red,
              text=a,
              pos=ur,
              plan=P0](0.05,-0.18)%
\end{pspicture}\newpage}
\end{center}
\end{document}

lundi 6 juillet 2015

pst-crayon : dessiner un A

Une application du package pst-crayon : voir les messages précédents.
http://pstricks.blogspot.fr/2015/07/pst-crayon-dessiner-lesperluette.html
http://pstricks.blogspot.fr/2015/07/pst-crayon-aiguiser-des-crayons-de_4.html

Le listing permettant de créer les images :

\documentclass{article}
\usepackage{pst-crayon}
% A majuscule en ZapfChancery
\def\Azap{0.115149   0.0450886   0.19154   0.023238   0.255011   0.00936456   0.314753   0.00208101   0.380132   0.0   0.503432   0.00893101   0.622917   0.0391057   0.744656   0.0952064   0.875153   0.181915   1.02065   0.304001   1.18748   0.46632   1.38188   0.673381   1.61036   0.930213   2.12792   0.925877   2.49548   0.910096   2.47051   0.730089   2.43062   0.465106   2.40045   0.260127   2.38233   0.13752   2.37548   0.0450886   2.38423   0.000346836   2.4086   -0.0343367   2.4451   -0.056881   2.49063   -0.0648582   2.55375   -0.0606095   2.6356   -0.0450886   2.81847   -0.0117924   2.95972   0.0139601   3.06689   0.0334696   3.14753   0.0481234   3.2091   0.0592222   3.2593   0.0681532   3.3056   0.0763038   3.35563   0.0849747   3.43575   0.20498   3.3206   0.194922   3.22947   0.186251   3.16878   0.181829   3.12022   0.180181   3.06568   0.180008   2.99718   0.182435   2.94134   0.190499   2.89694   0.20498   2.86295   0.22683   2.83833   0.256832   2.82211   0.296024   2.8131   0.345101   2.81041   0.405104   2.81925   0.571325   2.84405   0.820526   2.88186   1.13233   2.92981   1.48654   2.98504   1.86268   3.04461   2.24064   3.10574   2.60005   3.16557   2.9207   3.09551   2.97065   3.04071   2.91064   2.98669   2.86113   2.93934   2.83044   2.89009   2.81474   2.83052   2.81041   2.78466   2.81162   2.73306   2.81674   2.65893   2.82732   2.54543   2.84544   2.28044   2.88368   2.09038   2.89573   1.91262   2.87483   1.73782   2.8118   1.56293   2.70558   1.38526   2.55548   1.21401   2.36871   1.09583   2.18671   1.02724   2.0028   1.00513   1.81048   1.00825   1.72473   1.01944   1.64712   1.04094   1.56484   1.07519   1.46538   1.44526   1.6655   1.39497   1.82522   1.36263   1.9467   1.34529   2.04373   1.34017   2.13061   1.37945   2.32397   1.4933   2.46687   1.67565   2.55531   1.92043   2.58566   2.10529   2.5756   2.36542   2.54543   2.42672   2.53944   2.4843   2.53537   2.55115   2.53138   2.64046   2.52566   1.77545   1.40538   1.60767   1.1965   1.42402   0.976429   1.25346   0.780813   1.12513   0.645114   0.975908   0.509848   0.834573   0.421925   0.688555   0.374322   0.525109   0.360015   0.467534   0.361229   0.416983   0.366345   0.365478   0.376924   0.305215   0.395046   0.115149   0.0450886   1.76539   1.13519   2.73064   2.40045   2.52566   1.13519   1.76539   1.13519}
 %  nbre points = 113
\pagestyle{empty}
\newpsstyle{decor}{lightsrc=60 30 60 rtp2xyz,viewpoint=60 20 70 rtp2xyz,Decran=36,solidmemory,lightintensity=1}
\begin{document}
\begin{center}
\multido{\i=0+2}{109}{%
\begin{pspicture}(-6,-4)(6,8)
\psframe[fillstyle=solid,fillcolor=cyan!10](-6,-4)(6,8)
\psset{style=decor}
\psSolid[object=grille,base=-5 3 -3 7,ngrid=8 10,fillcolor=black,linecolor=white,linewidth=0.01](0,0,0)
\psSolid[object=plan,definition=equation,args={[0 0 1 0] 90},name=P0,base=-4 4 -4 6,action=none]
\pstVerb{/tabC [\Azap] def /II \i\space 2 add def }%
\psProjection[object=line,plan=P0,linecolor=white,args=tabC 0 II getinterval aload pop,linewidth=0.035]
\psCrayonH[RotX=30,pencolor=white,grid,unit=0.5](tabC II 1 sub get neg 2 mul,tabC II 2 sub get 2 mul,0)
\end{pspicture}\newpage}
\multido{\i=0+2}{4}{%
\begin{pspicture}(-6,-4)(6,8)
\psframe[fillstyle=solid,fillcolor=cyan!10](-6,-4)(6,8)
\psset{style=decor}
\psSolid[object=grille,base=-5 3 -3 7,ngrid=8 10,fillcolor=black,linecolor=white,linewidth=0.01](0,0,0)
\psSolid[object=plan,definition=equation,args={[0 0 1 0] 90},name=P0,base=-4 4 -4 6,action=none]
\psProjection[object=line,plan=P0,linecolor=white,args=tabC 0 218 getinterval aload pop,linewidth=0.035]
\pstVerb{/tabC [\Azap] def /II \i\space 2 add def }%
\psProjection[object=line,plan=P0,linecolor=white,linewidth=0.035,args=tabC 218 II getinterval aload pop]
\psCrayonH[RotX=30,pencolor=white,grid,unit=0.5](tabC 218 II 1 sub add get neg 2 mul,tabC 218 II 2 sub add get 2 mul,0)
\end{pspicture}\newpage}
\begin{pspicture}(-6,-4)(6,8)
\psframe[fillstyle=solid,fillcolor=cyan!10](-6,-4)(6,8)
\psset{style=decor}
\psSolid[object=grille,base=-5 3 -3 7,ngrid=8 10,fillcolor=black,linecolor=white,linewidth=0.01](0,0,0)
\pstVerb{/tabC [\Azap] def}%
\psSolid[object=plan,definition=equation,args={[0 0 1 0] 90},name=P0,base=-4 4 -4 4,action=none]
\psProjection[object=texte,PSfont=ZapfChancery, % Palatino-Italic,
              fontsize=142.2637,linecolor=white,
              text=A,
              pos=ur,
              plan=P0](0,-0.18)%
\end{pspicture}
\end{center}
\end{document}

pst-crayon : dessiner l'esperluette

C'est une application du package pst-crayon, voir :
http://pstricks.blogspot.fr/2015/07/pst-crayon-aiguiser-des-crayons-de_4.html
 le code permettant d'obtenir les images :

\documentclass{article}
\usepackage{pst-crayon}
% l'esperluette en Palatino - italic
\def\esp{  2.44033   2.74069   2.5704   3.33552   2.33663   3.43194   2.08032   3.46072   1.88297   3.44442   1.70019   3.39066   1.5331   3.30976   1.37876   3.21204   1.24011   3.10062   1.12019   2.97862   1.02169   2.84943   0.947728   2.71616   0.901252   2.58202   0.885124   2.45039   0.907408   2.29553   0.977643   2.16469   1.10034   2.05162   1.28017   1.95026   1.01883   1.85436   0.825035   1.76791   0.672514   1.67756   0.535167   1.57047   0.405884   1.42714   0.311892   1.26092   0.254491   1.07302   0.235154   0.865008   0.256311   0.655953   0.318568   0.468835   0.419671   0.305649   0.557625   0.167955   0.730175   0.0577481   0.935415   -0.023238   1.17109   -0.0731823   1.43521   -0.0901772   1.65753   -0.077431   1.88167   -0.0407532   2.09636   0.0175152   2.2905   0.0950329   2.48195   0.197003   2.65381   0.310591   2.80417   0.433544   2.93128   0.563781   3.03334   0.699134   3.10843   0.837608   3.15482   0.976862   3.17077   1.11508   3.14476   1.26231   3.07565   1.39272   2.97654   1.4894   2.8607   1.53544   2.77572   1.54515   3.2006   1.6055   3.46567   1.67825   3.6638   1.8097   3.78788   1.99274   3.8308   2.22044   3.81684   2.35675   3.77201   2.46357   3.69146   2.54889   3.57067   2.62069   3.46558   2.54057   3.56061   2.48438   3.61871   2.42924   3.64767   2.36464   3.65565   2.28044   3.62148   2.13555   3.51752   2.0217   3.34133   1.93586   3.09065   1.87534   2.53537   1.78551   2.3055   1.74137   2.14414   1.69169   2.02205   1.62501   1.91037   1.53024   1.87048   1.0353   1.98529   1.02525   2.04416   1.23144   2.11795   1.35847   2.22174   1.42263   2.37062   1.44041   2.5547   1.40807   2.69673   1.31719   2.78812   1.17655   2.82047   0.995071   2.79601   0.82781   2.72647   0.67026   2.61713   0.526063   2.47354   0.399381   2.30117   0.293943   2.10538   0.213737   1.89164   0.162839   1.6655   0.144977   1.44804   0.160325   1.25147   0.20498   1.07814   0.276775   0.930733   0.373715   0.811682   0.493634   0.723499   0.634362   0.668699   0.793907   0.64997   0.970099   0.668959   1.15704   0.724193   1.3263   0.812982   1.4757   0.932554   1.6029   1.08031   1.70565   1.25346   1.78187   1.44943   1.82921   1.6655   1.84551   1.84551   1.84551   1.84551   1.85522   1.84993   1.87725   1.86233   1.91158   1.88132   1.9552   1.90551   2.0054   1.92728   2.05422   1.9454   2.09558   1.87534   2.09558   1.61218   2.13096   1.41388   2.23301   1.28867   2.39507   1.24514   2.61063   1.25763   2.73393   1.29361   2.84778   1.35084   2.94984   1.42705   3.03811   1.51983   3.11042   1.62701   3.1647   1.74623   3.19878   1.87534   3.21066   1.98433   3.20181   2.09107   3.17372   2.20241   3.12412   2.32553   3.05077   2.32553   2.74069   2.44033   2.74069}
\pagestyle{empty}
\begin{document}

\begin{center}
\multido{\i=0+4}{68}{% 135 = nombre de points du caractère : on prend 1 point sur 2
\begin{pspicture}(-3,-3)(5,8)
\psframe(-3,-3)(5,8)
\psset{lightsrc=viewpoint,viewpoint=100 20 50 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-5 3 -3 5,ngrid=8 8](0,0,0)
\psSolid[object=plan,definition=equation,args={[0 0 1 0] 90},name=P0,base=-4 4 -4 4,action=none]
\pstVerb{/tabC [\esp] def /dimC tabC length def /II \i\space 2 add def }%
\psProjection[object=line,plan=P0,linecolor=blue,args=tabC 0 II getinterval aload pop]
\psCrayonH[RotX=20,pencolor=blue,grid,unit=0.5](tabC II 1 sub get neg 2 mul,tabC II 2 sub get 2 mul,0)
\end{pspicture}\newpage}
\begin{pspicture}(-3,-3)(5,8)
\psframe(-3,-3)(5,8)
\psset{lightsrc=viewpoint,viewpoint=100 20 50 rtp2xyz,Decran=60,solidmemory}
\psSolid[object=grille,base=-5 3 -3 5,ngrid=8 8](0,0,0)
\psSolid[object=plan,definition=equation,args={[0 0 1 0] 90},name=P0,base=-4 4 -4 4,action=none]
\psProjection[object=texte,PSfont=Palatino-Italic,
              fontsize=142.2637,linecolor=blue,
              text=&,
              pos=ur,
              plan=P0](0.15,-0.2)%
\end{pspicture}
\end{center}
\end{document}