mardi 24 novembre 2015

2015->2016



L'animation a été réalisée avec le package pst-crayon. La dernière version du package est ici :
http://pstricks.blogspot.fr/2015/08/pst-crayon-version-3.html
Voici les liens des versions précédentes :
http://pstricks.blogspot.fr/2015/08/crayon-bicolore.html
http://pstricks.blogspot.fr/2015/08/pst-crayon-une-suggestion-dherbert-voss.html
http://pstricks.blogspot.fr/2015/08/pst-crayon-dessin-de-bart-simpson.html
http://pstricks.blogspot.fr/2015/07/obtenir-le-chemin-dun-caracter-dun-mot.html
http://pstricks.blogspot.fr/2015/07/pst-crayon-le-b-chancery.html
http://pstricks.blogspot.fr/2015/07/pst-crayon-dessiner-le-b.html
http://pstricks.blogspot.fr/2015/07/pst-crayon-dessiner-un-avion.html
http://pstricks.blogspot.fr/2015/07/pst-crayon-dessin-du-minuscule-en-times.html
http://pstricks.blogspot.fr/2015/07/pst-crayon-dessiner-un-a.html
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
http://pstricks.blogspot.fr/2015/07/pst-crayon-aiguiser-des-crayons-de.html

Pour créer les fichiers des chemins des années 2015 et 2016 (LaTeX->DVIPS->GS)

\documentclass{article}
\usepackage{pst-crayon}
\begin{document}
Les fichiers des chemins de 2015 et 2016
% générer les fichiers des chemins (2015 puis 2016)
\psCharPath[text=2015,fontsize=150,setflat=2,PSfont=NewCenturySchlbk-Roman]
\psCharPath[text=2016,fontsize=150,setflat=2,PSfont=NewCenturySchlbk-Roman]
\end{document}

Le code pour créer un fichier pdf contenant toutes les images pour l'animation :

\documentclass{article}
\usepackage[paperwidth=12cm,paperheight=8.3cm,hmargin={0cm,0cm},vmargin={0cm,0cm},dvips]{geometry}
\usepackage{pst-crayon}
\pagestyle{empty}
\begin{document}
\psset{RotSequence=yxz}
% générer les fichiers des chemins (2015 puis 2016)
%\begin{center}
%\psCharPath[text=2016,fontsize=150,setflat=2,PSfont=NewCenturySchlbk-Roman]
%\end{center}
\def\DATASF{%2015
         /tabF0 [(2015-0-68.dat) run] def
         /tabF1 [(2015-1-33.dat) run] def
         /tabF2 [(2015-2-29.dat) run] def
         /tabF3 [(2015-3-37.dat) run] def
         /tabF4 [(2015-4-91.dat) run] def
}%
\def\DATASS{%2016
         /tabS0 [(2016-0-68.dat) run] def
         /tabS1 [(2016-1-33.dat) run] def
         /tabS2 [(2016-2-29.dat) run] def
         /tabS3 [(2016-3-37.dat) run] def
         /tabS4 [(2016-4-61.dat) run] def
         /tabS5 [(2016-5-21.dat) run] def
}%
\begin{center}
    \begin{pspicture}(-3.5,-5.8)(8.5,2.5)
      \psframe[fillstyle=solid,fillcolor={[rgb]{0.47 0.71 1}}](-3.5,-5.8)(8.5,2.5)
      \psset{lightsrc=viewpoint,viewpoint=100 20 30 rtp2xyz,Decran=50,solidmemory}
    \psSolid[object=grille,base=-4 1 -1 13,ngrid=5 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 6,action=none]
    \psProjection[object=texte,PSfont=NewCenturySchlbk-Roman,
              fontsize=150,linecolor=yellow!50,
              text=2015,
              pos=br,
              plan=P0](0.15,0)%
\pstVerb{\DATASF}%
\psset{object=line,plan=P0,linecolor={[rgb]{0 0.5 0}},linewidth=0.05}
\multido{\iB=0+1}{5}{\psProjection[args=tabF\iB\space aload pop]}%
    \end{pspicture}\newpage
    \begin{pspicture}(-3.5,-5.8)(8.5,2.5)
      \psframe[fillstyle=solid,fillcolor={[rgb]{0.47 0.71 1}}](-3.5,-5.8)(8.5,2.5)
      \psset{lightsrc=viewpoint,viewpoint=100 20 30 rtp2xyz,Decran=50,solidmemory}
    \psSolid[object=grille,base=-4 1 -1 13,ngrid=5 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 6,action=none]
    \psProjection[object=texte,PSfont=NewCenturySchlbk-Roman,
              fontsize=150,linecolor=yellow!50,
              text=201,
              pos=br,
              plan=P0](0.15,0)%
\pstVerb{\DATASF}%
\psset{object=line,plan=P0,linecolor={[rgb]{0 0.5 0}},linewidth=0.05}
\multido{\iB=0+1}{5}{\psProjection[args=tabF\iB\space aload pop]}%
    \end{pspicture}
\newpage
  \multido{\i=182+-2}{90}{% défaire le 5
    \begin{pspicture}(-3.5,-5.8)(8.5,2.5)
      \psframe[fillstyle=solid,fillcolor={[rgb]{0.47 0.71 1}}](-3.5,-5.8)(8.5,2.5)
      \psset{lightsrc=viewpoint,viewpoint=100 20 30 rtp2xyz,Decran=50,solidmemory}
      \psSolid[object=grille,base=-4 1 -1 13,ngrid=5 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 6,action=none]
      \psProjection[object=texte,PSfont=NewCenturySchlbk-Roman,
              fontsize=150,linecolor=yellow!50,
              text=201,
              pos=br,
              plan=P0](0.15,0)%
      \pstVerb{\DATASF /II \i\space 2 sub def }%
      \psset{object=line,plan=P0,linecolor={[rgb]{0 0.5 0}},linewidth=0.05}
%%
\multido{\iB=0+1}{4}{\psProjection[args=tabF\iB\space aload pop]}
%      \fi
      \psProjection[args=tabF4\space 0 II getinterval aload pop]
      \psCrayonC[RotY=90,RotX=10,pencolor={[rgb]{0.95 0.95 0.95}},grid,h=10,r=0.5,phi=10]%
        (0,tabF4\space II 2 sub get,tabF4\space II 1 sub get)
    \end{pspicture}\newpage}
%
\newpage
  \multido{\i=0+2}{61}{% faire le 6
    \begin{pspicture}(-3.5,-5.8)(8.5,2.5)
      \psframe[fillstyle=solid,fillcolor={[rgb]{0.47 0.71 1}}](-3.5,-5.8)(8.5,2.5)
      \psset{lightsrc=viewpoint,viewpoint=100 20 30 rtp2xyz,Decran=50,solidmemory}
      \psSolid[object=grille,base=-4 1 -1 13,ngrid=5 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 6,action=none]
      \psProjection[object=texte,PSfont=NewCenturySchlbk-Roman,
              fontsize=150,linecolor=yellow!50,
              text=201,
              pos=br,
              plan=P0](0.15,0)%
      \pstVerb{\DATASS /II \i\space 2 add def }%
      \psset{object=line,plan=P0,linecolor={[rgb]{0 0.5 0}},linewidth=0.05}
%%
\multido{\iB=0+1}{4}{\psProjection[args=tabS\iB\space aload pop]}
%      \fi
      \psProjection[args=tabS4 0 II getinterval aload pop]
      \psCrayonC[RotY=90,RotX=10,pencolor={[rgb]{0 0.5 0}},grid,h=15,r=0.5]%
        (0,tabS4\space II 2 sub get,tabS4\space II 1 sub get)
    \end{pspicture}\newpage}
%
  \multido{\i=0+2}{21}{% faire l'intérieur du 6
    \begin{pspicture}(-3.5,-5.8)(8.5,2.5)
      \psframe[fillstyle=solid,fillcolor={[rgb]{0.47 0.71 1}}](-3.5,-5.8)(8.5,2.5)
      \psset{lightsrc=viewpoint,viewpoint=100 20 30 rtp2xyz,Decran=50,solidmemory}
      \psSolid[object=grille,base=-4 1 -1 13,ngrid=5 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 6,action=none]
      \psProjection[object=texte,PSfont=NewCenturySchlbk-Roman,
              fontsize=150,linecolor=yellow!50,
              text=201,
              pos=br,
              plan=P0](0.15,0)%
      \pstVerb{\DATASS /II \i\space 2 add def }%
      \psset{object=line,plan=P0,linecolor={[rgb]{0 0.5 0}},linewidth=0.05}
%%
\multido{\iB=0+1}{5}{\psProjection[args=tabS\iB\space aload pop]}
%      \fi
      \psProjection[args=tabS5 0 II getinterval aload pop]
      \psCrayonC[RotY=90,RotX=10,pencolor={[rgb]{0 0.5 0}},grid,h=15,r=0.5]%
        (0,tabS5\space II 2 sub get,tabS5\space II 1 sub get)
    \end{pspicture}\newpage}
%
    \begin{pspicture}(-3.5,-5.8)(8.5,2.5)
      \psframe[fillstyle=solid,fillcolor={[rgb]{0.47 0.71 1}}](-3.5,-5.8)(8.5,2.5)
      \psset{lightsrc=viewpoint,viewpoint=100 20 30 rtp2xyz,Decran=50,solidmemory}
    \psSolid[object=grille,base=-4 1 -1 13,ngrid=5 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 6,action=none]
    \psProjection[object=texte,PSfont=NewCenturySchlbk-Roman,
              fontsize=150,linecolor=yellow!50,
              text=2016,
              pos=br,
              plan=P0](0.15,0)%
\pstVerb{\DATASS}%
\psset{object=line,plan=P0,linecolor={[rgb]{0 0.5 0}},linewidth=0.05}
\multido{\iB=0+1}{6}{\psProjection[args=tabS\iB\space aload pop]}%
\end{pspicture}
\end{center}
\end{document}



jeudi 12 novembre 2015

Le mode /Difference de blendmode utilisé pour réaliser, au choix, la synthèse additive ou soustractive des couleurs.

J'ai déjà employé divers modes de l'option blendmode de PSTricks pour réaliser plusieurs animations et illustrer les synthèses additive et soustractive des couleurs :

http://pstricks.blogspot.fr/2012/09/loption-blendmode-de-pstricks-pour.html
http://pstricks.blogspot.fr/2012/09/loption-blendmodelighten-de-pstricks-et.html
http://pstricks.blogspot.fr/2012/08/loption-bendmodemultiply-de-pstricks-et.html

J'ai fait une mise à jour mineure ici (voir les fichiers pstricks_blendmode.pdf et pstricks_blendmode.tex ) :

On peut avec le mode /Difference réaliser, au choix, la synthèse additive ou soustractive des couleurs.
Le code ci-dessous, vous permettra après compilation de réaliser le pdf de la synthèse soustractive incluant l'animation grâce au package animate d'Alexander Grahn.

\documentclass{article}
\usepackage{pst-node,animate}
\newpsstyle{blendmode0}{fillstyle=shape,blendmode=0,shapealpha=1,linestyle=none}
\newpsstyle{blendmode1}{fillstyle=shape,blendmode=1,shapealpha=1,linestyle=none}
\newpsstyle{blendmode2}{fillstyle=shape,blendmode=2,shapealpha=1,linestyle=none}
\newpsstyle{blendmode3}{fillstyle=shape,blendmode=3,shapealpha=1,linestyle=none}
\newpsstyle{blendmode4}{fillstyle=shape,blendmode=4,shapealpha=1,linestyle=none}
\newpsstyle{blendmode5}{fillstyle=shape,blendmode=5,shapealpha=1,linestyle=none}
\newpsstyle{blendmode6}{fillstyle=shape,blendmode=6,shapealpha=1,linestyle=none}
\newpsstyle{blendmode7}{fillstyle=shape,blendmode=7,shapealpha=1,linestyle=none}
% /Normal     0
% /Compatible 1
% /Screen     2
% /Multiply   3
% /HardLight  4
% /Darken     5
% /Lighten    6
% /Difference 7
\makeatletter
\pst@def{setBlendmode}<
    \ifcase\psk@blendmode
      /Normal \or
      /Compatible \or
      /Screen \or
      /Multiply \or
      /HardLight \or
      /Darken \or
      /Lighten \or
      /Difference
    \else
      /Normal
    \fi
    .setblendmode \psk@shapealpha .setshapealpha >
\makeatother
\begin{document}
\begin{center}
\psset{style=blendmode7}
\def\nFrames{51 }% 51 images, 50 pas de déplacements
\begin{animateinline}[controls,palindrome,
                     begin={\begin{pspicture}(-5.1,-6.1)(5.1,6.1)},
                     end={\end{pspicture}}]{5}% 5 images/s
\multiframe{\nFrames}{i=0+1}{
\pstVerb{/a_ 5 def
         /radius a_ 2 div def
         /yA a_ 3 div 3 sqrt mul def % a*sqrt(3)/3
         /xB radius neg def
         /yB a_ 6 div 3 sqrt mul neg def % -a*sqrt(3)/6
         /xC radius def
         /yC yB def
         /yF yA radius add def
         /xB2 radius def
         /yB2 yB neg def
         /xC2 radius neg def
         /yC2 yB2 def
         /xA2 0 def
         /yA2 yA neg def %
         /Npoints \nFrames 1 sub def % nombre de déplacements
         /xCyan 0 def
         /yCyan yA \i\space Npoints div yA mul 2 mul sub def
         /xYellow radius neg \i\space a_ mul Npoints div add def
         /yYellow xYellow 3 sqrt div def
         /xMagenta radius -\i\space a_ mul Npoints div add def
         /yMagenta xMagenta 3 sqrt div neg def
% le cadre
         /xD a_ neg def
         /yD yA2 radius sub def
         /xE a_ def
         /yE yD def
         /xF xE def
         /xG xE neg def
         /yG yF def
         }%
\pnode(!xD yD){D}
\pnode(!xE yE){E}
\pnode(!xF yF){F}
\pnode(!xG yG){G}
\pnode(!0 yCyan){C}
\pnode(!xYellow yYellow){Y}
\pnode(!xMagenta yMagenta){M}
\pspolygon[linestyle=solid,fillcolor=white,blendmode=0](D)(E)(F)(G)
\rput(C){\pspolygon[fillcolor=red](!radius neg radius neg)(!radius radius neg)(!radius radius)(!radius neg radius)}
\rput(Y){\pspolygon[fillcolor=blue](!radius neg radius neg)(!radius radius neg)(!radius radius)(!radius neg radius)}
\rput(M){\pspolygon[fillcolor=green](!radius neg radius neg)(!radius radius neg)(!radius radius)(!radius neg radius)}
}%
\end{animateinline}
\end{center}
\end{document}


Le code ci-dessous, vous permettra après compilation de réaliser le pdf de la synthèse additive incluant l'animation grâce au package animate d'Alexander Grahn.

\documentclass{article}
\usepackage{pst-node,animate}
\newpsstyle{blendmode0}{fillstyle=shape,blendmode=0,shapealpha=1,linestyle=none}
\newpsstyle{blendmode1}{fillstyle=shape,blendmode=1,shapealpha=1,linestyle=none}
\newpsstyle{blendmode2}{fillstyle=shape,blendmode=2,shapealpha=1,linestyle=none}
\newpsstyle{blendmode3}{fillstyle=shape,blendmode=3,shapealpha=1,linestyle=none}
\newpsstyle{blendmode4}{fillstyle=shape,blendmode=4,shapealpha=1,linestyle=none}
\newpsstyle{blendmode5}{fillstyle=shape,blendmode=5,shapealpha=1,linestyle=none}
\newpsstyle{blendmode6}{fillstyle=shape,blendmode=6,shapealpha=1,linestyle=none}
\newpsstyle{blendmode7}{fillstyle=shape,blendmode=7,shapealpha=1,linestyle=none}
% /Normal     0
% /Compatible 1
% /Screen     2
% /Multiply   3
% /HardLight  4
% /Darken     5
% /Lighten    6
% /Difference 7
\makeatletter
\pst@def{setBlendmode}<
    \ifcase\psk@blendmode
      /Normal \or
      /Compatible \or
      /Screen \or
      /Multiply \or
      /HardLight \or
      /Darken \or
      /Lighten \or
      /Difference
    \else
      /Normal
    \fi
    .setblendmode \psk@shapealpha .setshapealpha >
\makeatother
\begin{document}
\begin{center}
\def\nFrames{51 }% 51 images, 50 pas de déplacements
\begin{animateinline}[controls,palindrome,
                     begin={\begin{pspicture}(-5,-6)(5,6)},
                     end={\end{pspicture}}]{5}% 5 images/s
\multiframe{\nFrames}{i=0+1}{
\psset{style=blendmode7}
\pstVerb{/a_ 5 def
         /radius a_ 2 div def
         /yA a_ 3 div 3 sqrt mul def % a*sqrt(3)/3
         /xB radius neg def
         /yB a_ 6 div 3 sqrt mul neg def % -a*sqrt(3)/6
         /xC radius def
         /yC yB def
         /yF yA radius add def
         /xB2 radius def
         /yB2 yB neg def
         /xC2 radius neg def
         /yC2 yB2 def
         /xA2 0 def
         /yA2 yA neg def %
         /Npoints \nFrames 1 sub def % nombre de déplacements
         /xRouge 0 def
         /yRouge yA \i\space Npoints div yA mul 2 mul sub def
         /xVert radius neg \i\space a_ mul Npoints div add def
         /yVert xVert 3 sqrt div def
         /xBleu radius -\i\space a_ mul Npoints div add def
         /yBleu xBleu 3 sqrt div neg def
% le cadre
         /xD a_ neg def
         /yD yA2 radius sub def
         /xE a_ def
         /yE yD def
         /xF xE def
         /xG xE neg def
         /yG yF def
         }%
\pnode(!0 yRouge){R}
\pnode(!xBleu yBleu){B}
\pnode(!xVert yVert){V}
\pscircle[fillcolor=red](R){!radius}
\pscircle[fillcolor=blue](B){!radius}
\pscircle[fillcolor=green](V){!radius}
\pnode(!xD yD){D}
\pnode(!xE yE){E}
\pnode(!xF yF){F}
\pnode(!xG yG){G}
\pspolygon[linestyle=solid](D)(E)(F)(G)
}%
\end{animateinline}
\end{center}
\end{document}