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}
Aucun commentaire:
Enregistrer un commentaire