summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-08-23 22:46:16 +0000
committerKarl Berry <karl@freefriends.org>2014-08-23 22:46:16 +0000
commit714d34bcd751b70118d43b9592878923b509fa02 (patch)
tree765ece91f34f3d5665eb96b80cfeb80dd6c56e9a
parent5caddc787b889e7f0a38ec359b4d9fc9ba22488d (diff)
pst-spirograph (23aug14)
git-svn-id: svn://tug.org/texlive/trunk@35026 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/generic/pst-spirograph/Changes4
-rw-r--r--Master/texmf-dist/doc/generic/pst-spirograph/animation/anim1.tex9
-rw-r--r--Master/texmf-dist/doc/generic/pst-spirograph/animation/anim2.tex9
-rw-r--r--Master/texmf-dist/doc/generic/pst-spirograph/animation/anim3.tex9
-rw-r--r--Master/texmf-dist/doc/generic/pst-spirograph/animation/anim4.tex10
-rw-r--r--Master/texmf-dist/doc/generic/pst-spirograph/animation/anim5.tex9
-rw-r--r--Master/texmf-dist/doc/generic/pst-spirograph/animation/anim6.tex9
-rw-r--r--Master/texmf-dist/doc/generic/pst-spirograph/animation/anim7.tex9
-rw-r--r--Master/texmf-dist/doc/generic/pst-spirograph/animation/anim8.tex9
-rw-r--r--Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.pdfbin10196728 -> 10451957 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.tex102
-rw-r--r--Master/texmf-dist/dvips/pst-spirograph/pst-spirograph.pro310
-rw-r--r--Master/texmf-dist/tex/generic/pst-spirograph/pst-spirograph.tex250
-rw-r--r--Master/texmf-dist/tex/latex/pst-spirograph/pst-spirograph.sty8
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
index 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
Binary files differ
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