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 dans le sous-dossier (psCharPath/agnes-draw.tex) et celui pour l’obtention des données (psCharPath/aagnes-dat.tex) sont dans :

L'animation Gif obtenue :

La documentation au format pdf, ainsi que le fichier source (psCharPath/psCharPath-v2.pdf psCharPath/psCharPath-v2.tex) sont dans :
Ancienne version  (psCharPath/psCharPath.pdf psCharPath/psCharPath.tex) au même endroit.

Le tracé pas à pas d'Enzo (/psCharPath/enzo-dat.tex /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 :

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}

samedi 4 juillet 2015

pst-crayon : aiguiser des crayons de couleur avec PSTricks - version 2

On distingue 2 cas :
1 Aiguiser un crayon avec PSTricks, comme si le taillage s’effectuait avec un couteau ou un canif.
On considère dans ce cas que le corps du crayon est un cylindre dont on pourra choisir le rayon [r=0.6](je donne les valeurs par défaut) et la hauteur [h=25].
On taille des biseaux sur le bas du crayon. Le plan de coupe des biseaux fait un angle [phi=8.5] degrés avec l’axe vertical du crayon. Le nombre de biseaux est fixé à 8.
On choisira la couleur de la mine du crayon avec l’option : [pencolor=red], celle du corps du crayon avec l’option: [colorpencilbody=]. Par défaut ces 2 couleurs sont identiques. Si l’on souhaite donner une couleur différente aucorps du crayon, activez cette possibilité avec l’option : [colorbody].
Enfin, on pourra déplacer et faire tourner le crayon, avec les options usuelles de pst-solides3d.
La commande s’écrit : \psCrayonC[options](x,y,z).Les coordonnées (x,y,z) sont facultatives s’il n’y a pas dedéplacement.
Denis Barbier :
 https ://www.ctan.org/tex-archive/graphics/metapost/contrib/macros/mp3d/v1.0/contrib/denis-barbier
 s’appuyant sur des macros de Denis Roegel, a écrit avec metapost un ensemble de macros pour dessiner des crayons en 3d(très jolis), mais son procédé de taillage des crayons est différent, il utilise un aiguise-crayon –sans le dire, pas de biseaux, la partie aiguisée est un cône.
2 Le corps du cylindre est un prisme à base hexagonale
On aiguise le crayon avec un aiguise-crayon, la partie aiguisée est donc un cône. La rayon et la hauteur du crayon sont fixés avec les mêmes paramètres que précédemment. La commande pour ce type de crayon s’écrit \pscrayonH[options](x,y,z).


Les fichiers :


vendredi 3 juillet 2015

pst-crayon : aiguiser des crayons de couleur avec PSTricks

Voir la nouvelle version du 4 juillet 2015 :
 http://pstricks.blogspot.fr/2015/07/pst-crayon-aiguiser-des-crayons-de_4.html

Aiguiser un crayon avec PSTricks, comme si le taillage s’effectuait avec un couteau ou un canif.
Le corps du crayon est un cylindre dont on pourra choisir le rayon [r=0.6](je donne les valeurs par défaut) et la hauteur [h=25].
On taille des biseaux sur le bas du crayon. Le plan de coupe des biseaux fait un angle [phi=8.5] degrés avec l’axe vertical du crayon. Le nombre de biseaux est fixé à 8.
On choisira la couleur de la mine du crayon avec l’option : [pencolor=red], celle du corps du crayon avec l’option: [colorpencilbody=]. Par défaut ces 2 couleurs sont identiques. Si l’on souhaite donner une couleur différente au corps du crayon, activez cette possibilité avec l’option : [colorbody].
Enfin, on pourra déplacer et faire tourner le crayon, avec les options usuelles de pst-solides3d.
La commande s’écrit : \pscrayon[options](x,y,z). Les coordonnées (x,y,z) sont facultatives s’il n’y a pas de déplacement.

Denis Barbier :
 https ://www.ctan.org/tex-archive/graphics/metapost/contrib/macros/mp3d/v1.0/contrib/denis-barbier
, s’appuyant sur des macros de Denis Roegel, a écrit avec metapost, un ensemble de macros pour dessiner des crayons en 3d(très jolis), mais son procédé de taillage des crayons est différent, il utilise un aiguise-crayon–sans le dire, pas de biseaux, la partie aiguisée est un cône.
Dans le fichier pdf, les 2 animations sot réalisées avec le package animate, d'Alexander Grahn.
Voici une animation au format Gif :
Un éventail de crayons de couleurs :


Les fichiers :