diff options
author | Karl Berry <karl@freefriends.org> | 2014-08-23 22:46:16 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-08-23 22:46:16 +0000 |
commit | 714d34bcd751b70118d43b9592878923b509fa02 (patch) | |
tree | 765ece91f34f3d5665eb96b80cfeb80dd6c56e9a | |
parent | 5caddc787b889e7f0a38ec359b4d9fc9ba22488d (diff) |
pst-spirograph (23aug14)
git-svn-id: svn://tug.org/texlive/trunk@35026 c570f23f-e606-0410-a88d-b1316a301751
14 files changed, 410 insertions, 337 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/Changes b/Master/texmf-dist/doc/generic/pst-spirograph/Changes index 1173d0e22e4..be4d45e3a4e 100644 --- a/Master/texmf-dist/doc/generic/pst-spirograph/Changes +++ b/Master/texmf-dist/doc/generic/pst-spirograph/Changes @@ -1,11 +1,15 @@ ----- pst-spirograph.tex +0.41 2014-08-23 - updated documentation + - move some more PS functions into the pro file 0.40 2014-08-18 - first CTAN version (hv) ----- pst-spirograph.pro +0.41 2014-08-23 - added some more functions 0.40 2014-08-18 - first CTAN version (hv) ----- pst-spirograph.sty +0.41 2014-08-23 - updated file dates 0.40 2014-08-18 - first CTAN version (hv) diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim1.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim1.tex index 9c7e611311c..ac4109bc2f0 100644 --- a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim1.tex +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim1.tex @@ -1,19 +1,20 @@ \documentclass[border=5mm]{standalone} \usepackage{animate} \usepackage{pst-spirograph} +\addtopsstyle{gridstyle}{gridlabels=0pt} \begin{document} \begin{animateinline}[ width=0.9\linewidth, - begin={\begin{pspicture}(-3.5,-3.5)(3.5,3.5)}, + begin={\begin{pspicture}[showgrid](-3.5,-3.5)(3.5,3.5)\psframe*[linecolor=yellow,opacity=0.4](-3.5,-3.5)(3.5,3.5)}, end={\end{pspicture}}, palindrome,controls, % autoplay ]{5} -\multiframe{72}{rA=0.001+20.000}{% - \psSpirograph[thetamax=\rA,Z1=59,Z2=24,m=0.1,ap=10,curvewidth=1.5pt, - linewidth=0.025,fillstyle=solid,polarangle=\rA,holenumber=5,opacity=0.5](0,0)} +\multiframe{180}{iA=0+4}{% + \psSpirograph[thetamax=\iA,Z1=59,Z2=24,m=0.1,ap=10,curvewidth=1.2pt, + linewidth=0.025,fillstyle=solid,polarangle=\iA,holenumber=5,opacity=0.5](0,0)} \end{animateinline} \end{document} diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim2.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim2.tex index caaf0254b4d..c334442f705 100644 --- a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim2.tex +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim2.tex @@ -1,19 +1,20 @@ \documentclass[border=5mm]{standalone} \usepackage{animate} \usepackage{pst-spirograph} +\addtopsstyle{gridstyle}{gridlabels=0pt} \begin{document} \begin{animateinline}[ width=0.9\linewidth, - begin={\begin{pspicture}(-3,-3)(3,3)}, + begin={\begin{pspicture}[showgrid](-3,-3)(3,3)\psframe*[linecolor=yellow,opacity=0.4](-3,-3)(3,3)}, end={\end{pspicture}}, palindrome,controls, % autoplay ]{5} -\multiframe{144}{rA=0.001+30.000}{% - \psSpirograph[thetamax=\rA,Z1=41,Z2=13,m=0.1,ap=10,,curvewidth=1.5pt,holenumber=3, - linewidth=0.025,fillstyle=solid,polarangle=\rA,opacity=0.5](0,0)} +\multiframe{180}{iA=0+4}{% + \psSpirograph[thetamax=\iA,Z1=41,Z2=13,m=0.1,ap=10,,curvewidth=1.1pt,holenumber=3, + linewidth=0.025,fillstyle=solid,polarangle=\iA,opacity=0.5](0,0)} \end{animateinline} \end{document} diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim3.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim3.tex index 2d980587c88..e20fe334935 100644 --- a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim3.tex +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim3.tex @@ -1,19 +1,20 @@ \documentclass[border=5mm]{standalone} \usepackage{animate} \usepackage{pst-spirograph} +\addtopsstyle{gridstyle}{gridlabels=0pt} \begin{document} \begin{animateinline}[ width=0.9\linewidth, - begin={\begin{pspicture}(-4,-4)(4,4)}, + begin={\begin{pspicture}[showgrid](-4,-4)(4,4)\psframe*[linecolor=yellow,opacity=0.4](-4,-4)(4,4)}, end={\end{pspicture}}, palindrome,controls, % autoplay ]{5} -\multiframe{72}{rA=0.001+20.000}{% - \psSpirograph[thetamax=\rA,Z1=88,Z2=15,m=0.08,ap=10,curvewidth=1.5pt,holenumber=6, - linewidth=0.025,fillstyle=solid,polarangle=\rA,opacity=0.5](0,0)} +\multiframe{180}{iA=0+4}{% + \psSpirograph[thetamax=\iA,Z1=88,Z2=15,m=0.08,ap=10,curvewidth=1.1pt,holenumber=6, + linewidth=0.025,fillstyle=solid,polarangle=\iA,opacity=0.5](0,0)} \end{animateinline} \end{document} diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim4.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim4.tex index ca10a1911e9..0b113bdecba 100644 --- a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim4.tex +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim4.tex @@ -1,19 +1,19 @@ \documentclass[border=5mm]{standalone} \usepackage{animate} \usepackage{pst-spirograph} - +\addtopsstyle{gridstyle}{gridlabels=0pt} \begin{document} \begin{animateinline}[ width=0.9\linewidth, - begin={\begin{pspicture}(-3.5,-3.5)(3.5,3.5)}, + begin={\begin{pspicture}[showgrid](-3.5,-3.5)(3.5,3.5)\psframe*[linecolor=yellow,opacity=0.4](-3.5,-3.5)(3.5,3.5)}, end={\end{pspicture}}, palindrome,controls, % autoplay ]{5} -\multiframe{100}{rA=0.001+30.000}{% - \psSpirograph[thetamax=\rA,Z1=122,Z2=69,m=0.05,ap=10,curvewidth=1.5pt, - linewidth=0.025,fillstyle=solid,polarangle=\rA,holenumber=4,opacity=0.5](0,0)} +\multiframe{180}{iA=0+4}{% + \psSpirograph[thetamax=\iA,Z1=122,Z2=69,m=0.05,ap=10,curvewidth=1.1pt, + linewidth=0.025,fillstyle=solid,polarangle=\iA,holenumber=4,opacity=0.5](0,0)} \end{animateinline} \end{document} diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim5.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim5.tex index b6e17000375..0195e722a2b 100644 --- a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim5.tex +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim5.tex @@ -1,19 +1,20 @@ \documentclass[border=5mm]{standalone} \usepackage{animate} \usepackage{pst-spirograph} +\addtopsstyle{gridstyle}{gridlabels=0pt} \begin{document} \begin{animateinline}[ width=0.9\linewidth, - begin={\begin{pspicture}(-3.5,-3.5)(3.5,3.5)}, + begin={\begin{pspicture}[showgrid=top](-3.5,-3.5)(3.5,3.5)\psframe*[linecolor=yellow,opacity=0.4](-3.5,-3.5)(3.5,3.5)}, end={\end{pspicture}}, palindrome,controls, % autoplay ]{5} -\multiframe{72}{rA=0.001+20.000}{% - \psSpirograph[thetamax=\rA,Z1=59,Z2=24,m=0.1,ap=10,curvewidth=1.5pt, - linewidth=0.025,fillstyle=solid,polarangle=\rA,holenumber=5,opacity=0.5](0,0)} +\multiframe{180}{iA=0+6}{% + \psSpirograph[thetamax=\iA,Z1=59,Z2=24,m=0.1,ap=10,curvewidth=1.1pt, + linewidth=0.025,fillstyle=solid,polarangle=\iA,holenumber=5,opacity=0.5](0,0)} \end{animateinline} \end{document} diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim6.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim6.tex index 3f8c8a3f9b5..7893599526b 100644 --- a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim6.tex +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim6.tex @@ -1,19 +1,20 @@ \documentclass[border=5mm]{standalone} \usepackage{animate} \usepackage{pst-spirograph} +\addtopsstyle{gridstyle}{gridlabels=0pt} \begin{document} \begin{animateinline}[ width=0.9\linewidth, - begin={\begin{pspicture}(-4.5,-4.5)(4.5,4.5)}, + begin={\begin{pspicture}[showgrid](-4.5,-4.5)(4.5,4.5)\psframe*[linecolor=yellow,opacity=0.4](-4.5,-4.5)(4.5,4.5)}, end={\end{pspicture}}, palindrome,controls, % autoplay ]{5} -\multiframe{72}{rA=0.001+20.000}{% - \psSpirograph[thetamax=\rA,Z1=20,Z2=30,m=0.1,ap=10,curvewidth=1.5pt,inner=false, - linewidth=0.025,fillstyle=solid,polarangle=\rA,holenumber=4,opacity=0.5](0,0)} +\multiframe{180}{iA=0+6}{% + \psSpirograph[thetamax=\iA,Z1=20,Z2=30,m=0.1,ap=10,curvewidth=1.5pt,inner=false, + linewidth=0.025,fillstyle=solid,polarangle=\iA,holenumber=4,opacity=0.5](0,0)} \end{animateinline} \end{document} diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim7.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim7.tex index 34fb2d22b3b..b99a5a0ad8a 100644 --- a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim7.tex +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim7.tex @@ -1,19 +1,20 @@ \documentclass[border=5mm]{standalone} \usepackage{animate} \usepackage{pst-spirograph} +\addtopsstyle{gridstyle}{gridlabels=0pt} \begin{document} \begin{animateinline}[ width=0.9\linewidth, - begin={\begin{pspicture}(-7,-7)(7,7)}, + begin={\begin{pspicture}[showgrid](-7,-7)(7,7)\psframe*[linecolor=yellow,opacity=0.4](-7,-7)(7,7)}, end={\end{pspicture}}, palindrome,controls, % autoplay ]{5} -\multiframe{72}{rA=0.001+20.000}{% - \psSpirograph[thetamax=\rA,Z1=36,Z2=24,m=0.15,ap=20,curvecolor={[rgb]{0.875 0 0.5}},inner=false, - curvewidth=1.5pt,linewidth=0.025,fillstyle=solid,polarangle=\rA,holenumber=0,opacity=0.5](0,0)} +\multiframe{180}{iA=0+6}{% + \psSpirograph[thetamax=\iA,Z1=36,Z2=24,m=0.15,ap=20,curvecolor={[rgb]{0.875 0 0.5}},inner=false, + curvewidth=1.1pt,linewidth=0.025,fillstyle=solid,polarangle=\iA,holenumber=0,opacity=0.5](0,0)} \end{animateinline} \end{document} diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim8.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim8.tex index dfc25030254..8a274f5adc2 100644 --- a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim8.tex +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim8.tex @@ -1,19 +1,20 @@ \documentclass[border=5mm]{standalone} \usepackage{animate} \usepackage{pst-spirograph} +\addtopsstyle{gridstyle}{gridlabels=0pt} \begin{document} \begin{animateinline}[ width=0.9\linewidth, - begin={\begin{pspicture}[showgrid=top](-7,-7)(7,7)}, + begin={\begin{pspicture}[showgrid](-7,-7)(7,7)\psframe*[linecolor=yellow,opacity=0.4](-7,-7)(7,7)}, end={\end{pspicture}}, palindrome,controls, % autoplay ]{5} -\multiframe{74}{rA=0.001+20.000}{% - \psSpirograph[thetamax=\rA,Z1=27,Z2=12,m=0.4,curvecolor={[rgb]{0 0.25 0.5}},curvewidth=1.5pt, - linewidth=0.025,fillstyle=solid,polarangle=\rA,holenumber=4,opacity=0.5](0,0)} +\multiframe{180}{iA=0+6}{% + \psSpirograph[thetamax=\iA,Z1=27,Z2=12,m=0.4,curvecolor={[rgb]{0 0.25 0.5}},curvewidth=1.1pt, + linewidth=0.025,fillstyle=solid,polarangle=\iA,holenumber=4,opacity=0.5](0,0)} \end{animateinline} \end{document} diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.pdf b/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.pdf Binary files differindex 0a1dc5b7011..c99901f2bb5 100644 --- a/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.pdf +++ b/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.pdf diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.tex b/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.tex index 67982a1114e..a83e72190b8 100644 --- a/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.tex +++ b/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.tex @@ -1,9 +1,10 @@ -%% $Id: pst-spirograph-doc.tex 75 2014-08-19 18:38:05Z herbert $ +%% $Id: pst-spirograph-doc.tex 80 2014-08-23 05:50:14Z herbert $ \documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings headexclude,footexclude,oneside]{pst-doc} \usepackage[utf8]{inputenc} \usepackage{pst-spirograph} \let\pstFV\fileversion +\usepackage{pst-node,pst-plot} \usepackage{animate} \def\UrlFont{\small\ttfamily} @@ -14,7 +15,7 @@ \hypersetup{pdfauthor={Manuel Luque, Herbert Voss},pdftitle={Spirograoh}} % \def\bgImage{\begin{pspicture}(-4,-4)(4,4) -\psSpirograph[thetamax=720,Z1=36,Z2=24,m=0.15,linewidth=0.025,ap=20,inner, +\psSpirograph[thetamax=360,Z1=36,Z2=24,m=0.15,linewidth=0.025,ap=20, fillstyle=solid,polarangle=150,linecolor=blue,holenumber=0,opacity=0.4] \end{pspicture}% } @@ -52,10 +53,10 @@ A hypotrochoid is generated by a fixed point on a circle rolling inside a fixed \footnote{\url{http://mathworld.wolfram.com/Spirograph.html}} It consists of a small toothed wheel rotating inside or outside a ring gear. The weighing tile wheel has nine drilled holes numbered from 0--8, through these small holes the tip of a -pen or pencil can be put. % weighing tile??? +pen or pencil can be put. This causes the small wheel to rotate one or more laps around the crown and draws a hypocycloid. -The wheel can also turn off a first fixed gear, it is thus possible to draw epicycloids . The command is written as %% turn of??? +The wheel can also turn off a first fixed gear, it is thus possible to draw epicycloids . The command is written as \begin{BDef} @@ -70,12 +71,13 @@ The optional parameters, including default values are indicated as following: \begin{compactenum} \item \LKeyset{Z1=20}: number of teeth of the wheel 1, the crown; \item \LKeyset{Z2=10}: number of teeth of the wheel 2; -\item \LKeyset{m=0.5}: module of the gear; +\item \LKeyset{m=0.5}: relative size of the gear; \item \LKeyset{ap=20}: pressure angle in degrees, it must be reduced if the number of teeth -crown is large (if the path of the teeth will be incorrect), e.g. take \verb|Z1=120|; -\item \LKeyset{holenumber=0} : active hole number; -\item \LKeyset{polarangle=<value>}: polar angle in degrees to position the center -of the small wheel, a useful parameter for animation. + crown is large (if the path of the teeth will be incorrect), e.g. take \verb|Z1=120|; +\item \LKeyset{holenumber=0}: active hole number; +\item \LKeyset{polarangle=0}: polar angle in degrees to position the center of the inner/outer gear; +of the small wheel. It is a useful parameter for an animation, then it is the starting angle.. +\item \LKeyset{thetamax=360}: the end value for the rotation of the second inside/outside gear; \end{compactenum} There are two Boolean values for the organisation of the two circles: @@ -110,10 +112,79 @@ The last parameter is the angle \LKeyset{thetamax=360}, which represents the rot the center of the small wheel around the ring, so it is a parameter to adjust, depending on the planned route of the hypocycloid. -%\clearpage + +\section{Parameter} + +\subsection{Relative size} +The relative size of the two gears can be set by the optional argument \Lkeyword{m}, +which can take every possible value. + + +\begin{LTXexample}[pos=t] +\psset{unit=0.75} +\begin{pspicture}[showgrid=top,opacity=0.5](-7,-7)(7,7) +\psframe*[linecolor=yellow!30](-7,-7)(7,7) +\psset{thetamax=720,Z1=120,Z2=48,ap=10,linewidth=0.025,fillstyle=solid} +\psSpirograph[m=0.1,polarangle=200,holenumber=0,linecolor=red] +\psSpirograph[m=0.05,polarangle=340,holenumber=3,curvecolor=blue,linecolor=blue] +\psSpirograph[m=0.075,polarangle=90,holenumber=6,curvecolor=green,linecolor=green] +\end{pspicture} +\end{LTXexample} + +\subsection{Pencil position} + +\noindent\begin{tabularx}{\linewidth}{@{} XX @{}} +The holes (\Lkeyword{holenumber}) for the pencil are ordered from outside into the center of the gear with different +polar coordinates (radius and angle) . They are numbered from 0 to 8 and the position cannot be changed. Every given number greater +than 8 will be reset internally to 8. +& +\begin{pspicture}[shift=-6cm](-3.5,-3.5)(3.5,3.5) + \pscircle*[linecolor=red!30](0,0){3} + \psaxes[axesstyle=polar,labels=none](3,360) + \multido{\iA=0+60,\iB=8+-1}{9}{% + \pnode(!0.35 \iA\space DegtoRad mul \iA\space cos mul neg + 0.35 \iA\space DegtoRad mul \iA\space sin mul){N\iB}% + \psdot(N\iB)\uput[0](N\iB){\iB}} + \pscurve{->}(N0)(N1)(N2)(N3)(N4)(N5)(N6)(N7)(N8) +\end{pspicture} +\end{tabularx} + + +\begin{LTXexample}[pos=t,wide] +\psset{unit=0.8cm} +\begin{pspicture}[showgrid=top,opacity=0.5](-7,-7)(7,7) +\psframe*[linecolor=yellow!30](-7,-7)(7,7) +\psset{thetamax=720,Z1=120,Z2=48,m=0.1,ap=10,linewidth=0.025,curvewidth=1.1pt} +\psSpirograph[holenumber=0] +\psSpirograph[holenumber=1,curvecolor=blue] \psSpirograph[holenumber=2,curvecolor=green] +\psSpirograph[holenumber=3,curvecolor=cyan] \psSpirograph[holenumber=4,curvecolor=magenta] +\psSpirograph[holenumber=6,curvecolor=black] \psSpirograph[holenumber=5,curvecolor=black!50] +\psSpirograph[holenumber=7,curvecolor=blue!50]\psSpirograph[holenumber=8,curvecolor=red!50] +\end{pspicture} +\end{LTXexample} + + +\clearpage +\subsection{Pressure Angle} + +This value defines the look of a ``teeth''. Values greater than 30 make no real sense. + +\psset{unit=1cm} +\begin{LTXexample}[pos=t] +\begin{pspicture}[showgrid=top,opacity=0.5](-7,-3)(7,3) +\psset{unit=0.4,linewidth=0.025,fillstyle=solid,polarangle=90} +\psSpirograph[ap=0](-12,0) +\psSpirograph[ap=20, holenumber=4](0,0) +\psSpirograph[ap=30, holenumber=8](12,0) +\end{pspicture} +\end{LTXexample} + +\clearpage + \section{Examples} +\psset{unit=1cm} \begin{LTXexample}[pos=t] \begin{pspicture}[showgrid=top](-7,-7)(7,7) \psframe*[linecolor=yellow!30](-7,-7)(7,7) @@ -176,7 +247,9 @@ depending on the planned route of the hypocycloid. \clearpage \section{Animations} -With package \LPack{animate} one can easily create animations: +With package \LPack{animate} one can easily create animations. You get a better result with +\verb:\multiframe{360}{iA=0+4}{...}: but that increases the file size of the PDF. + \begin{LTXexample}[pos=t] \begin{animateinline}[ @@ -186,13 +259,14 @@ With package \LPack{animate} one can easily create animations: palindrome,controls, % autoplay ]{5} -\multiframe{100}{rA=0.001+30.000}{% - \psSpirograph[thetamax=\rA,Z1=59,Z2=24,m=0.1,ap=10,curvewidth=1.5pt, - linewidth=0.025,fillstyle=solid,polarangle=\rA,holenumber=5,opacity=0.5](0,0)} +\multiframe{100}{iA=0+8}{% + \psSpirograph[thetamax=\iA,Z1=59,Z2=24,m=0.1,ap=10,curvewidth=1.1pt, + linewidth=0.025,fillstyle=solid,polarangle=\iA,holenumber=5,opacity=0.5](0,0)} \end{animateinline} \end{LTXexample} + There are some more examples in the documention directory of the package. \clearpage diff --git a/Master/texmf-dist/dvips/pst-spirograph/pst-spirograph.pro b/Master/texmf-dist/dvips/pst-spirograph/pst-spirograph.pro index bdf690be00e..e1295ed6c3b 100644 --- a/Master/texmf-dist/dvips/pst-spirograph/pst-spirograph.pro +++ b/Master/texmf-dist/dvips/pst-spirograph/pst-spirograph.pro @@ -1,10 +1,10 @@ -%% $Id: pst-spirograph.pro 75 2014-08-19 18:38:05Z herbert $ +%% $Id: pst-spirograph.pro 80 2014-08-23 05:50:14Z herbert $ %% % PostScript prologue for pst-spirograph.tex. % -% Version 0.40, 2014/08/18 +% Version 0.41, 2014/08/23 % -/tx@spirographDict 10 dict def +/tx@spirographDict 50 dict def tx@spirographDict begin /coorPen { 1 dict begin @@ -23,23 +23,23 @@ tx@spirographDict begin /Datas1 { /Z@ exch def /m@ exch def - /R@ {m@ Z@ mul 2 div } bind def % cercle primitif - /Rb {R@ ap cos mul } bind def % cercle de base - /Rp {R@ 2 mul 2.5 m@ mul sub 2 div } bind def % cercle de pied - /Rt {R@ 2 mul 2 m@ mul add 2 div } bind def % cercle de tête + /R@ { m@ Z@ mul 2 div } bind def % cercle primitif + /Rb { R@ ap cos mul } bind def % cercle de base + /Rp { R@ 2 mul 2.5 m@ mul sub 2 div } bind def % cercle de pied + /Rt { R@ 2 mul 2 m@ mul add 2 div } bind def % cercle de tète } def /Datas2 { /Z@ exch def /m@ exch def - /R@ {m@ Z@ mul 2 div } bind def % cercle primitif - /Rb {R@ ap cos mul } bind def % cercle de base - /Rp {R@ 2 mul 2 m@ mul sub 2 div } bind def % cercle de pied - /Rt {R@ 2 mul 2.5 m@ mul add 2 div } bind def % cercle de tête + /R@ { m@ Z@ mul 2 div } bind def % cercle primitif + /Rb { R@ ap cos mul } bind def % cercle de base + /Rp { R@ 2 mul 2 m@ mul sub 2 div } bind def % cercle de pied + /Rt { R@ 2 mul 2.5 m@ mul add 2 div } bind def % cercle de tète } def /Calculs { % les valeurs suivantes sont en radians /ThetaP {R@ Rb div dup mul 1 sub sqrt } bind def % intersection avec cercle primitif /ThetaT {Rt Rb div dup mul 1 sub sqrt } bind def % intersection avec cercle de tete - % Les valeurs suivantes ont en degrés + % Les valeurs suivantes ont en degrés /ThetaTdeg {Rt Rb div dup mul 1 sub sqrt RadtoDeg } bind def % /ThetaPdeg {R@ Rb div dup mul 1 sub sqrt RadtoDeg } bind def /DeltaP {ThetaPdeg sin ThetaP ThetaPdeg cos mul sub @@ -47,25 +47,25 @@ tx@spirographDict begin /DeltaT {ThetaTdeg sin ThetaT ThetaTdeg cos mul sub ThetaTdeg cos ThetaT ThetaTdeg sin mul add atan } bind def /DeltaS {Pi 2 div Z@ div } bind def - /DeltaSdeg {90 Z@ div } bind def - /AngleDent {360 Z@ div} bind def - /Alpha {DeltaSdeg DeltaP add DeltaT sub } bind def - /2Beta {DeltaSdeg DeltaP add 2 mul } bind def - /Beta_ {DeltaSdeg DeltaP add neg} bind def - /ptA {Rp cm 0} bind def - /ptB {Rb cm 0} bind def - /ptC {Rp cm DeltaSdeg 2 mul neg 2Beta 2 div add cos mul - Rp cm DeltaSdeg 2 mul neg 2Beta 2 div add sin mul} bind def - /ptA'{Rp cm DeltaP DeltaSdeg add 2 mul cos mul - Rp cm DeltaP DeltaSdeg add 2 mul sin mul} bind def - /ptB'{Rb cm DeltaP DeltaSdeg add 2 mul cos mul - Rb cm DeltaP DeltaSdeg add 2 mul sin mul} bind def - /ptC'{Rp cm DeltaSdeg 3 mul DeltaP add cos mul - Rp cm DeltaSdeg 3 mul DeltaP add sin mul} bind def - /Raxe {Rp 4 div } bind def - /A@0 14.5 def % position et largeur de la clavette - % rayon de raccordement sur le cercle de pied - /Rarct {Rp Pi mul Z@ div 12 div cm} bind def + /DeltaSdeg {90 Z@ div } bind def + /AngleDent {360 Z@ div} bind def + /Alpha {DeltaSdeg DeltaP add DeltaT sub } bind def + /2Beta {DeltaSdeg DeltaP add 2 mul } bind def + /Beta_ {DeltaSdeg DeltaP add neg} bind def + /ptA { Rp cm 0} bind def + /ptB { Rb cm 0} bind def + /ptC { Rp cm DeltaSdeg 2 mul neg 2Beta 2 div add cos mul + Rp cm DeltaSdeg 2 mul neg 2Beta 2 div add sin mul} bind def + /ptA'{ Rp cm DeltaP DeltaSdeg add 2 mul cos mul + Rp cm DeltaP DeltaSdeg add 2 mul sin mul} bind def + /ptB'{ Rb cm DeltaP DeltaSdeg add 2 mul cos mul + Rb cm DeltaP DeltaSdeg add 2 mul sin mul} bind def + /ptC'{ Rp cm DeltaSdeg 3 mul DeltaP add cos mul + Rp cm DeltaSdeg 3 mul DeltaP add sin mul} bind def + /Raxe { Rp 4 div } bind def + /A@0 14.5 def % position et largeur de la clavette + % rayon de raccordement sur le cercle de pied + /Rarct {Rp Pi mul Z@ div 12 div cm} bind def } def % Le symetrique P' de P par rapport a la l'axe de la dent % Delta(axe de la dent) y=x*tan(Beta) @@ -93,6 +93,23 @@ tx@spirographDict begin } def % developpante du cercle de base % +/Circles { + gsave + setlinedash + newpath + 0 0 R@ cm 0 360 arc + closepath + circlescolor + stroke + % on ne dessine pas le cercle de base + %newpath + %0 0 Rb cm 0 360 arc + %closepath + %stroke + grestore +} def +% +% trace des cercles /devCercle { 1 dict begin /t exch def % en degres @@ -100,78 +117,193 @@ tx@spirographDict begin Rb t sin t DegtoRad t cos mul sub mul cm % y end } def -% trace des cercles +%% %%%% definition de la roue dentee %%%%%% /Roue { -% arc de développante -/tabArcDev [ -0 1 ThetaTdeg { /i@ exch def - [i@ devCercle] } for - ] def -% -/n@ tabArcDev length def -% -/tabDent [ + % arc de développante + /tabArcDev [ 0 1 ThetaTdeg { /i@ exch def [i@ devCercle] } for ] def + /n@ tabArcDev length def % l'arc de developpante initial - tabArcDev aload pop + /tabDent [ tabArcDev aload pop % l'arc ce cercle de tete -DeltaT 0.1 2Beta DeltaT sub {/i@ exch def - [Rt cm i@ cos mul - Rt cm i@ sin mul] - } for + DeltaT 0.1 2Beta DeltaT sub {/i@ exch def + [Rt cm i@ cos mul Rt cm i@ sin mul] } for % le symetrique de l'arc de developpante par rapport a l'axe de la dent -n@ 1 sub -1 0 { - /compteur exch def - [tabArcDev compteur get aload pop symAxe] - } for - ] def + n@ 1 sub -1 0 { /compteur exch def [tabArcDev compteur get aload pop symAxe] } for ] def % trace de la dent -/n2@ tabDent length def -newpath -ptC moveto -0 1 Z@ 1 sub {/i@ exch AngleDent mul def -ifinner -{ - wheel 2 eq { ptA RotDent ptB RotDent Rarct arct ptB RotDent lineto } - { ptA RotDent lineto ptB RotDent lineto } ifelse -} -{ - Rp Rb eq { ptA RotDent lineto ptB RotDent lineto } - { ptA RotDent ptB RotDent Rarct arct ptB RotDent lineto } ifelse -} ifelse - 0 1 n2@ 1 sub { - /compteur exch def - tabDent compteur get aload pop - RotDent lineto } for -ifinner - {wheel 2 eq { - Rp Rb eq { - ptA' RotDent lineto ptC' RotDent lineto + /n2@ tabDent length def + newpath + ptC moveto + 0 1 Z@ 1 sub { + /i@ exch AngleDent mul def + ifinner { + wheel 2 eq { ptA RotDent ptB RotDent Rarct arct ptB RotDent lineto } + { ptA RotDent lineto ptB RotDent lineto } ifelse }{ - ptA' RotDent ptC' RotDent Rarct arct - ptC' RotDent lineto } ifelse - } { - ptA' RotDent lineto ptC' RotDent lineto } ifelse -}{ - Rp Rb eq { - ptA' RotDent lineto ptC' RotDent lineto + Rp Rb eq { ptA RotDent lineto ptB RotDent lineto } + { ptA RotDent ptB RotDent Rarct arct ptB RotDent lineto } ifelse + } ifelse + 0 1 n2@ 1 sub { + /compteur exch def + tabDent compteur get aload pop + RotDent lineto + } for + ifinner { + wheel 2 eq { + Rp Rb eq + { ptA' RotDent lineto ptC' RotDent lineto } + { ptA' RotDent ptC' RotDent Rarct arct ptC' RotDent lineto } ifelse + }{ ptA' RotDent lineto ptC' RotDent lineto } ifelse }{ - ptA' RotDent ptC' RotDent Rarct arct - ptC' RotDent lineto } - ifelse -} ifelse -} for + Rp Rb eq + { ptA' RotDent lineto ptC' RotDent lineto } + { ptA' RotDent ptC' RotDent Rarct arct ptC' RotDent lineto } ifelse + } ifelse + } for } def +% % pour l'engrenage interieur -/COURONNE { 0 0 Rt 1.1 mul cm 360 0 arcn } def +/COURONNE { 0 0 Rt 1.1 mul cm 360 0 arcn } def +% +/trous { + 1 dict begin + /a@ { R@ cm 3 div Pi div } bind def + gsave + positionAngular rotate + 0 60 540 { + /THETA exch def + untrou + 1 setgray iffill { Fill } if + untrou + linecolor + stroke + } for + grestore + end +} def % /untrou { - newpath + newpath + a@ THETA DegtoRad mul THETA cos mul neg + a@ THETA DegtoRad mul THETA sin mul + 0.05 cm 0 360 arc + closepath +} def +% +%%%%%%%%%% Roue No 1 %%%%%%%%%%%%%%%%% +/Roue1 { + 1 dict begin + /wheel 1 def + gsave + t@@x t@@y translate + m1 Z1 + ifinner { + Datas2 + Calculs + Beta_ rotate + Roue + COURONNE + closepath + iffill { color1 Fill } if + Roue + closepath + linecolor + stroke + COURONNE + closepath + linecolor + stroke + ifcircles { Circles } if + }{ + Datas1 + Calculs + Beta_ rotate + Roue + closepath + iffill { color1 Fill } if + Roue + closepath + linecolor + stroke + ifcircles { Circles } if + } ifelse + grestore + % dessin de l'hypocycloide ou de l'epicycloide + gsave + t@@x t@@y translate + ifinner { + tabSpirograph 0 get aload pop moveto + 1 1 nPts { + /nP exch def + tabSpirograph nP get aload pop lineto + } for + }{ + tabSpirograph2 0 get aload pop moveto + 1 1 nPts2 { + /nP exch def + tabSpirograph2 nP get aload pop lineto + } for + } ifelse + curvecolor + SetCurveWidth + stroke + grestore + end +} def +%%%%%%%%%% Roue No 2 %%%%%%%%%%%%%%%%% +/Roue2 { + 5 dict begin + /wheel 2 def + gsave + m2 Z2 Datas1 + Calculs + /a@ex m2 Z1 Z2 add mul 2 div cm def % entraxe engrenage exterieur + /a@in m2 Z1 Z2 sub mul 2 div cm def % entraxe engrenage interieur + /a@ {R@ cm 3 div 3.14159 div} bind def + ifinner{ + a@in polarAngle cos mul t@@x add a@in polarAngle sin mul t@@y add translate + Beta_ polarAngle Z1 Z2 sub Z2 div mul sub rotate + /positionAngular 2Beta 2 div def + }{ + a@ex polarAngle cos mul t@@x add a@ex polarAngle sin mul t@@y add translate + DeltaSdeg DeltaP add neg 180 Z2 div add 180 add polarAngle Z1 Z2 add Z2 div mul add rotate + /positionAngular Beta_ neg def + } ifelse + Roue + closepath + iffill { color2 Fill } if + Roue + closepath + linecolor + stroke + trous + ifcircles { Circles } if + grestore + gsave + newpath + ifinner { + a@in polarAngle cos mul t@@x add a@in polarAngle sin mul t@@y add translate + Beta_ polarAngle Z1 Z2 sub Z2 div mul sub rotate + /THETA 540 ni 60 mul sub def + positionAngular rotate a@ THETA DegtoRad mul THETA cos mul neg a@ THETA DegtoRad mul THETA sin mul - 0.05 cm 0 360 arc - closepath + 0.06 cm 0 360 arc + }{ + a@ex polarAngle cos mul t@@x add a@ex polarAngle sin mul t@@y add translate + DeltaSdeg DeltaP add neg 180 Z2 div add 180 add polarAngle Z1 Z2 add Z2 div mul add rotate + /a@ {R@ cm 3 div 3.14159 div} bind def + /THETA 540 ni 60 mul sub def + positionAngular rotate + a@ THETA DegtoRad mul THETA cos mul neg + a@ THETA DegtoRad mul THETA sin mul + 0.06 cm 0 360 arc + } ifelse + closepath + curvecolor + fill + grestore + end } def -% end %%
\ No newline at end of file diff --git a/Master/texmf-dist/tex/generic/pst-spirograph/pst-spirograph.tex b/Master/texmf-dist/tex/generic/pst-spirograph/pst-spirograph.tex index 57b941240e6..c015ca5bca2 100644 --- a/Master/texmf-dist/tex/generic/pst-spirograph/pst-spirograph.tex +++ b/Master/texmf-dist/tex/generic/pst-spirograph/pst-spirograph.tex @@ -1,4 +1,4 @@ -%% $Id: pst-spirograph.tex 75 2014-08-19 18:38:05Z herbert $ +%% $Id: pst-spirograph.tex 80 2014-08-23 05:50:14Z herbert $ %% %% This is file `pst-spirograph.tex', %% @@ -7,7 +7,7 @@ %% Package `pst-spirograph.tex' %% %% COPYRIGHT 2015 by -%% Manuel Luque +%% Manuel Luque <manuel.luque27@gmail.com> %% Herbert Voss <hvoss@tug.org> %% %% This program can be redistributed and/or modified under the terms @@ -15,7 +15,7 @@ %% in directory CTAN:/macros/latex/base/lppl.txt. %% %% DESCRIPTION: -%% `pst-spirograph' is a PSTricks package to show sprograph curves +%% `pst-spirograph' is a PSTricks package to show spirograph curves %% %% \csname PSTSPIROGRAPHLoaded\endcsname @@ -23,9 +23,9 @@ % Requires some packages \ifx\PSTricksLoaded\endinput\else \input pstricks \fi \ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi -\def\fileversion{0.40} -\def\filedate{2014/08/18} -\message{`PSTSPIROGRAPH' v\fileversion, \filedate} +\def\fileversion{0.41} +\def\filedate{2014/08/23} +\message{`PSTSPIROGRAPH' v\fileversion, \filedate\ (ml,hv)} \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax @@ -68,198 +68,54 @@ \def\psSpirograph{\def\pst@par{}\pst@object{psSpirograph}} \def\psSpirograph@i{\@ifnextchar({\psSpirograph@ii}{\psSpirograph@ii(0,0)}} \def\psSpirograph@ii(#1){% -\begin@SpecialObj -\pst@@getcoor{#1}% -\addto@pscode{ -tx@spirographDict begin -\pst@coor /t@@y ED /t@@x ED -1 setlinejoin -/cm {\pst@number\psunit mul } bind def -/Z1 \psk@ZA def -/m1 \psk@m def -/Z2 \psk@ZB def -/m2 \psk@m def -/ap \psk@ap def -/polarAngle \psk@polarangle def -/ni \psk@holenumber def % numero du trou -ni 8 ge {/ni 8 def} if -/thetamax \psk@thetamax def -/ifinner \ifPst@spirograph@inner true \else false \fi def -/ki 1 ni 9 div sub def -/r2 m1 Z2 mul 2 div def -/qi Z1 Z2 div 1 sub def -/qi2 Z1 Z2 div 1 add def -thetamax 0 le {/pas -1 def}{/pas 1 def} ifelse -/tabSpirograph [ % tableau des points de l'hypocycloide -0 pas thetamax {/i_ exch def [i_ coorPen]} for - ] def -/tabSpirograph2 [ % tableau des points de l'epicycloide -0 pas thetamax {/i_ exch def [i_ coorPen2]} for - ] def -/nPts tabSpirograph length 1 sub def -/nPts2 tabSpirograph2 length 1 sub def -/color1 {\pst@usecolor\pscolora } def -/color2 {\pst@usecolor\pscolorb } def -/circlescolor {\pst@usecolor\pscolorc } def -/curvecolor {\pst@usecolor\pscolord } def -/linecolor {\pst@usecolor\pslinecolor} def -/fillopacity \psk@opacityalpha def + \begin@SpecialObj + \pst@@getcoor{#1}% + \addto@pscode{ + tx@spirographDict begin + \pst@coor /t@@y ED /t@@x ED + 1 setlinejoin + /cm { \pst@number\psunit mul } bind def + /Z1 \psk@ZA def + /m1 \psk@m def + /Z2 \psk@ZB def + /m2 \psk@m def + /ap \psk@ap def + /polarAngle \psk@polarangle def + /setlinedash { [ \psk@dash\space ] 0 setdash } def + /ni \psk@holenumber def % numero du trou + ni 8 gt {/ni 8 def} if + /thetamax \psk@thetamax def % -/Circles { -gsave -[ \psk@dash\space ] 0 setdash -newpath -0 0 R@ cm 0 360 arc -closepath -circlescolor -stroke -% on ne dessine pas le cercle de base -%newpath -%0 0 Rb cm 0 360 arc -%closepath -%stroke -grestore -} def -/trous { -1 dict begin - /a@ {R@ cm 3 div 3.14159 div} bind def - gsave - positionAngular rotate - 0 60 540 {/THETA exch def - untrou - 1 setgray -/fill \tx@setTransparency /fill load def - fill - untrou - linecolor - stroke - } for - grestore - end -}def -%%% Les dessins de l'engrenage %%%%%% -%%%%%%%%%% Roue N°1 %%%%%%%%%%%%%%%%% -/Roue1{ -1 dict begin -/wheel 1 def -gsave -t@@x t@@y translate -m1 Z1 -ifinner { - Datas2 - Calculs - Beta_ rotate - Roue - COURONNE - closepath - \ifx\psk@fillstyle\relax\else color1 /fill \tx@setTransparency /fill load def fill \fi -Roue -closepath -linecolor -stroke -COURONNE -closepath -linecolor -stroke -\ifPst@spirograph@circles Circles \fi -}{ - Datas1 - Calculs - Beta_ rotate - Roue - closepath - \ifx\psk@fillstyle\relax\else color1 /fill \tx@setTransparency /fill load def fill \fi -Roue -closepath -linecolor -stroke -\ifPst@spirograph@circles Circles \fi -} ifelse -grestore -% dessin de l'hypocycloide ou de l'epicycloide -gsave -t@@x t@@y translate -\ifPst@spirograph@inner -tabSpirograph 0 get aload pop moveto -1 1 nPts {/nP exch def - tabSpirograph nP get aload pop lineto - } for -\else -tabSpirograph2 0 get aload pop moveto -1 1 nPts2 {/nP exch def - tabSpirograph2 nP get aload pop lineto - } for -\fi -curvecolor -\pst@number\pscurvewidth SLW -stroke -grestore -end -} def -Roue1 -%%%%%%%%%% Roue N°2 %%%%%%%%%%%%%%%%% -/Roue2 { -5 dict begin -/wheel 2 def -gsave -m2 Z2 Datas1 -Calculs -/a@ex m2 Z1 Z2 add mul 2 div cm def % entraxe engrenage exterieur -/a@in m2 Z1 Z2 sub mul 2 div cm def % entraxe engrenage interieur -/a@ {R@ cm 3 div 3.14159 div} bind def -\ifPst@spirograph@inner - a@in polarAngle cos mul t@@x add a@in polarAngle sin mul t@@y add translate - Beta_ polarAngle Z1 Z2 sub Z2 div mul sub rotate - /positionAngular 2Beta 2 div def -\else - a@ex polarAngle cos mul t@@x add a@ex polarAngle sin mul t@@y add translate - DeltaSdeg DeltaP add neg 180 Z2 div add 180 add polarAngle Z1 Z2 add Z2 div mul add rotate - /positionAngular Beta_ neg def -\fi -Roue -closepath -\ifx\psk@fillstyle\relax\else - color2 -/fill \tx@setTransparency /fill load def - fill -\fi -Roue -closepath -linecolor -stroke -trous -\ifPst@spirograph@circles Circles \fi -grestore -gsave -newpath -\ifPst@spirograph@inner - a@in polarAngle cos mul t@@x add a@in polarAngle sin mul t@@y add translate - Beta_ polarAngle Z1 Z2 sub Z2 div mul sub rotate - /THETA 540 ni 60 mul sub def - positionAngular rotate - a@ THETA DegtoRad mul THETA cos mul neg - a@ THETA DegtoRad mul THETA sin mul - 0.06 cm 0 360 arc - \else - a@ex polarAngle cos mul t@@x add a@ex polarAngle sin mul t@@y add translate - DeltaSdeg DeltaP add neg 180 Z2 div add 180 add polarAngle Z1 Z2 add Z2 div mul add rotate - /a@ {R@ cm 3 div 3.14159 div} bind def - /THETA 540 ni 60 mul sub def - positionAngular rotate - a@ THETA DegtoRad mul THETA cos mul neg - a@ THETA DegtoRad mul THETA sin mul - 0.06 cm 0 360 arc -\fi -closepath -curvecolor -fill -grestore - end - } def -Roue2 -end -}% -\end@SpecialObj}% % fin de la commande PSTricks + /ifinner \ifPst@spirograph@inner true \else false \fi def + /ifcircles \ifPst@spirograph@circles true \else false \fi def + /iffill \ifx\psk@fillstyle\relax false \else true \fi def + /Fill { \tx@setTransparency fill } def +% + /ki 1 ni 9 div sub def + /r2 m1 Z2 mul 2 div def + /qi Z1 Z2 div 1 sub def + /qi2 Z1 Z2 div 1 add def + thetamax 0 le {/pas -1 def}{/pas 1 def} ifelse +% tableau des points de l'hypocycloide + /tabSpirograph [ 0 pas thetamax {/i_ exch def [i_ coorPen]} for ] def +% tableau des points de l'epicycloide + /tabSpirograph2 [ 0 pas thetamax {/i_ exch def [i_ coorPen2]} for ] def + /nPts tabSpirograph length 1 sub def + /nPts2 tabSpirograph2 length 1 sub def + /color1 {\pst@usecolor\pscolora } def + /color2 {\pst@usecolor\pscolorb } def + /circlescolor {\pst@usecolor\pscolorc } def + /curvecolor {\pst@usecolor\pscolord } def + /linecolor {\pst@usecolor\pslinecolor} def + /fillopacity \psk@opacityalpha def + /SetCurveWidth { \pst@number\pscurvewidth SLW } def +% + Roue1 + Roue2 + end + }% + \end@SpecialObj + \ignorespaces} % \catcode`\@=\PstAtCode\relax % diff --git a/Master/texmf-dist/tex/latex/pst-spirograph/pst-spirograph.sty b/Master/texmf-dist/tex/latex/pst-spirograph/pst-spirograph.sty index 8ab82b40ead..c85a30c84a7 100644 --- a/Master/texmf-dist/tex/latex/pst-spirograph/pst-spirograph.sty +++ b/Master/texmf-dist/tex/latex/pst-spirograph/pst-spirograph.sty @@ -1,4 +1,4 @@ -% $Id: pst-spirograph.sty 73 2014-08-18 15:35:25Z herbert $ +% $Id: pst-spirograph.sty 80 2014-08-23 05:50:14Z herbert $ %% %% This is file `pst-spirograph.sty'. %% @@ -15,15 +15,15 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{pst-spirograph} - [2014/08/18 v0.40 LaTeX wrapper for `pst-spirograph' (hv)] + [2014/08/23 v0.41 LaTeX wrapper for `pst-spirograph' (hv)] % \RequirePackage{pstricks} -\ProvidesPackage{pst-spirograph}[2014/08/18 package wrapper for pst-spirograph.tex] +\ProvidesPackage{pst-spirograph}[2014/08/23 package wrapper for pst-spirograph.tex] \input{pst-spirograph.tex} \ProvidesFile{pst-spirograph.tex} [\filedate\space \fileversion\space `pst-spirograph' (ml,hv)] \IfFileExists{pst-spirograph.pro}{% \ProvidesFile{pst-spirograph.pro} - [2014/08/18 v. 1.14, PostScript prologue file (hv)] + [2014/08/23 v. 0.41, PostScript prologue file (hv)] \@addtofilelist{pst-spirograph.pro}}{}% \endinput |