diff options
Diffstat (limited to 'Master')
11 files changed, 418 insertions, 26 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/Changes b/Master/texmf-dist/doc/generic/pst-spirograph/Changes index 23eeed9eb41..124518d431e 100644 --- a/Master/texmf-dist/doc/generic/pst-spirograph/Changes +++ b/Master/texmf-dist/doc/generic/pst-spirograph/Changes @@ -1,4 +1,6 @@ ----- pst-spirograph.tex +0.51 2020-03-14 - added new optional argument for a rubber band connection + of two gears 0.50 2020-03-11 - added new optional argument TypeA for special graphs 0.41 2014-08-23 - updated documentation - move some more PS functions into the pro file @@ -6,12 +8,14 @@ ----- pst-spirograph.pro +0.51 2020-03-14 - added some more functions 0.50 2020-03-11 - added some more functions 0.41 2014-08-23 - added some more functions 0.40 2014-08-18 - first CTAN version (hv) ----- pst-spirograph.sty +0.51 2020-03-14 - load more required files 0.50 2020-03-11 - updated file dates 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/README.anim b/Master/texmf-dist/doc/generic/pst-spirograph/animation/README.anim index 333ea8a91d0..36b2f23bde0 100644 --- a/Master/texmf-dist/doc/generic/pst-spirograph/animation/README.anim +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/README.anim @@ -2,7 +2,7 @@ run all files with latex <file> dvips <file> -ps2pdf <file>.ps +ps2pdf -dNOSAFER <file>.ps and then view the pdf with the acrobat reader, available from Adobe if not already installed on your current system.
\ No newline at end of file diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim9.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim9.tex new file mode 100644 index 00000000000..91999718601 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim9.tex @@ -0,0 +1,24 @@ +\documentclass[border=5mm]{standalone} +\usepackage{animate} +\usepackage{pst-spirograph} +\addtopsstyle{gridstyle}{gridlabels=0pt} + +\begin{document} + +\psset{unit=0.25cm} +\begin{animateinline}[ + width=0.9\linewidth,begin={\begin{pspicture}(-20,-20)(20,20)},end={\end{pspicture}},palindrome,controls]{5} +\multiframe{325}{i=0+10}{% +\psgrid[subgriddiv=0,gridcolor=black!20,unit=2](-10,-10)(10,10)% +\ifnum\i=325 \psset{gearwheels=false}\fi +\psSpirograph[Z1=72,Z2=16,m=0.2,ap=10,TypeA=false,linewidth=0.02,linecolor={[rgb]{0.5 0 0 }},fillstyle=solid, + opacity=0.75,polarangle=\i,circles=false,thetamax=\i,curvecolor=blue,curvewidth=2pt, + HolePos=0.5,color1=cyan!10,color2=cyan!10,strokeopacity=0.5]% +\psSpirograph[Z1=72,Z2=16,m=0.2,ap=10,TypeA=false,linewidth=0.02,linecolor={[rgb]{0.5 0 0 }},fillstyle=solid, + opacity=0.75,polarangle=\i,circles=false,thetamax=\i,curvecolor=green,curvewidth=2pt, + HolePos=1.5,color1=cyan!10,color2=cyan!10,strokeopacity=0.5,gearwheels=false] +} +\end{animateinline} + +\end{document} + diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/animA.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/animA.tex new file mode 100644 index 00000000000..cadac1cd1ac --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/animA.tex @@ -0,0 +1,23 @@ +\documentclass[border=5mm]{standalone} +\usepackage{geometry} +\geometry{paperwidth=18cm,paperheight=21cm,margin=1cm} +\usepackage{animate} +\usepackage{pst-spirograph} +\addtopsstyle{gridstyle}{gridlabels=0pt} + +\begin{document} + +\psset{unit=0.5cm} +\begin{animateinline}[ + width=0.9\linewidth,begin={\begin{pspicture}(-18,-18)(18,18)},end={\end{pspicture}},palindrome,controls]{5} +\multiframe{181}{i=0+10}{% +\psgrid[style=gridstyleA]% +\ifnum\i=181 \psset{gearwheels=false}\fi +\psSpirograph[Z1=60,Z2=24,m=0.2,linewidth=0.025,TypeA=false, + linecolor=blue,fillstyle=solid,opacity=0.75,polarangle=\i,circles=false,thetamax=\i,curvecolor=red,curvewidth=2pt,HolePos=1.7, + gearwheels=false, + circles]} +\end{animateinline} + +\end{document} + diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/animB.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/animB.tex new file mode 100644 index 00000000000..e568a039651 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/animB.tex @@ -0,0 +1,22 @@ +\errorcontextlines=100 +\documentclass{article} +\usepackage{geometry} +\geometry{paperwidth=16.5cm,paperheight=12cm,margin=1cm} +\pagestyle{empty} +\usepackage{pst-spirograph,animate} +\begin{document} + +\noindent +\begin{animateinline}[ + begin={\begin{pspicture}(-6,-3)(8,6)\psframe*[linecolor=yellow,opacity=0.4](-6,-3)(8,6)}, + end={\end{pspicture}}, + palindrome,controls, +% autoplay +]{5} +\multiframe{361}{iA=0+2}{% +\psSpirograph[RubberBand,Z1=20,Z2=40,m=0.2,viewpoint=2 -5 3,arrowinset=0,arrowsize=0.2,wheelrotation=\iA, + linewidth=0.025,color1=yellow,color2=blue!50]} +\end{animateinline} + + +\end{document} diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/animC.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/animC.tex new file mode 100644 index 00000000000..f9ccfdd2e88 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/animC.tex @@ -0,0 +1,17 @@ +\documentclass{standalone} +\usepackage{geometry} +\geometry{paperwidth=20cm,paperheight=16cm,margin=1cm} +\usepackage{pst-spirograph,animate} + +\begin{document} +\begin{animateinline}[ + begin={\begin{pspicture}(-10,-5)(7,8)}, + end={\end{pspicture}}, + palindrome,controls, +% autoplay +]{5} +\multiframe{181}{iA=0+2}{% + \psSpirograph[RubberBand,Z1=40,Z2=10,m=0.2,viewpoint=-1 -5 5,arrowinset=0,arrowsize=0.2,wheelrotation=\iA,linewidth=0.025,color1=yellow,color2=cyan]} +\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 8f855e7883b..95c0731945d 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 b61131c97ae..9af23c3350b 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 @@ -63,7 +63,8 @@ The wheel can also turn off a first fixed gear, it is thus possible to draw epic \begin{BDef} -\Lcs{psSpirograph}\OptArgs\Largr{\CAny} +\Lcs{psSpirograph}\OptArgs\Largr{\CAny}\\ +\Lcs{psSpirographB}\OptArgs\Largr{\CAny} \end{BDef} @@ -125,15 +126,18 @@ 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) +\begin{pspicture}[showgrid=top,opacity=0.5](-11,-11)(11,11) +\psframe*[linecolor=yellow!30](-11,-11)(11,11) \psset{thetamax=720,Z1=120,Z2=48,ap=10,linewidth=0.025,fillstyle=solid} +\psSpirograph[inner=false,m=0.1,polarangle=200,holenumber=0,linecolor=blue,curvecolor=blue] \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 @{}} @@ -267,15 +271,15 @@ examples use a bigger angle step than useful for a single animation. palindrome,controls, % autoplay ]{5} -\multiframe{100}{iA=0+8}{% +\multiframe{80}{iA=0+10}{% \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} +\iffalse \psset{linewidth=0.1pt} - \begin{LTXexample}[pos=t] \psset{unit=0.3cm} \begin{animateinline}[ @@ -289,7 +293,6 @@ examples use a bigger angle step than useful for a single animation. \end{LTXexample} -\iffalse \begin{LTXexample}[pos=t] \psset{unit=0.5cm} \begin{animateinline}[ @@ -313,7 +316,7 @@ examples use a bigger angle step than useful for a single animation. \psgrid[style=gridstyleA,unit=1.4](-10,-10)(10,10)% \ifnum\i=181 \psset{gearwheels=false}\fi \psSpirograph[Z1=50,Z2=20,m=0.2,linewidth=0.025,fillstyle=solid,opacity=0.75,polarangle=\i,circles,TypeA=false, - thetamax=\i,curvecolor=red,curvewidth=2pt,HolePos=1.05]} + thetamax=\i,curvecolor=red,curvewidth=2pt,HolePos=1.5]} \end{animateinline} \end{LTXexample} @@ -330,7 +333,6 @@ examples use a bigger angle step than useful for a single animation. linecolor=blue,fillstyle=solid,opacity=0.75,polarangle=\i,circles=false,thetamax=\i,curvecolor=red,curvewidth=2pt,HolePos=1.7]} \end{animateinline} \end{LTXexample} -\fi @@ -350,6 +352,34 @@ examples use a bigger angle step than useful for a single animation. } \end{animateinline} \end{LTXexample} +\fi + + +\clearpage + +\section{Connect the two gears with a rubberband} + +This is an adaptation with PSTricks of an idea of Alejandro Teutli which he realized with Mathematica: +\url{https://demonstrations.wolfram.com/ParametricMovementOfARubberBand/} which is a variation of a spirograph. +A rubber band is fixed by its ends on two gears. A pencil tied in the middle of the elastic rubberband draws the curve obtained when the gears are +rotating. The optional argument \Lkeyword{RubberBand} must be used, if you want such a spirograph. It is only available +in 3D. + + +\begin{LTXexample}[pos=t] +\begin{animateinline}[ + width=0.9\linewidth, + begin={\begin{pspicture}(-6,-3)(8,6)\psframe*[linecolor=yellow,opacity=0.4](-6,-3)(8,6)}, + end={\end{pspicture}}, + palindrome,controls, +% autoplay +]{5} +\multiframe{181}{iA=0+4}{% +\psSpirograph[RubberBand,Z1=20,Z2=40,m=0.2,viewpoint=2 -5 3,arrowinset=0,arrowsize=0.2,wheelrotation=\iA, + linewidth=0.025,color1=yellow,color2=blue!50]} +\end{animateinline} +\end{LTXexample} + diff --git a/Master/texmf-dist/dvips/pst-spirograph/pst-spirograph.pro b/Master/texmf-dist/dvips/pst-spirograph/pst-spirograph.pro index 588345b42e4..59f31ba3024 100644 --- a/Master/texmf-dist/dvips/pst-spirograph/pst-spirograph.pro +++ b/Master/texmf-dist/dvips/pst-spirograph/pst-spirograph.pro @@ -1,8 +1,8 @@ -%% $Id: pst-spirograph.pro 1159 2020-03-12 15:13:17Z herbert $ +%% $Id: pst-spirograph.pro 1160 2020-03-14 14:08:31Z herbert $ %% % PostScript prologue for pst-spirograph.tex. % -% Version 0.50, 2020/03/11 +% Version 0.51, 2020/03/14 % /tx@spirographDict 50 dict def tx@spirographDict begin @@ -288,7 +288,7 @@ tx@spirographDict begin positionAngular rotate a@ THETA DegtoRad mul THETA cos mul neg a@ THETA DegtoRad mul THETA sin mul - 0.06 cm 0 360 arc + 0.12 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 @@ -297,7 +297,7 @@ tx@spirographDict begin positionAngular rotate a@ THETA DegtoRad mul THETA cos mul neg a@ THETA DegtoRad mul THETA sin mul - 0.06 cm 0 360 arc + 0.12 cm 0 360 arc } ifelse closepath curvecolor @@ -332,7 +332,6 @@ tx@spirographDict begin } for } def %%%% fin de la definition de la roue dentee %%% - /COURONNE { 0 0 Rt 1.25 mul cm 360 0 arcn } def /plaquette { Beta_ neg rotate /alpha1 1 R1 2 mul atan 2 div def @@ -360,6 +359,8 @@ tx@spirographDict begin closepath linecolor stroke + } def + /drawHole { R1 cm HolePos mul 0 GetCurveWidth 1.5 mul 0 360 arc curvecolor fill @@ -380,6 +381,34 @@ tx@spirographDict begin R1 HolePos mul beta sin mul yC add cm end } def + /AXE { + %newpath + Raxe 4 div cm + A@0 cos Raxe mul cm moveto + 0 0 Raxe cm 90 A@0 sub 90 A@0 add arcn + Raxe 4 div cm neg + A@0 cos Raxe mul cm + lineto + Raxe 4 div cm neg + Raxe A@0 cos 0.2 add mul cm + lineto + Raxe 4 div cm + Raxe A@0 cos 0.2 add mul cm + lineto + } def + %%% clavette %%% + /CLAVETTE { + newpath + Raxe 4 div cm + A@0 cos 0.2 sub Raxe mul cm moveto + Raxe 4 div cm + Raxe A@0 cos 0.2 add mul cm lineto + Raxe 4 div cm neg + Raxe A@0 cos 0.2 add mul cm lineto + Raxe 4 div cm neg + A@0 cos 0.2 sub Raxe mul cm lineto + closepath + } 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 02cfbcd4cfc..cb946557bfe 100644 --- a/Master/texmf-dist/tex/generic/pst-spirograph/pst-spirograph.tex +++ b/Master/texmf-dist/tex/generic/pst-spirograph/pst-spirograph.tex @@ -21,10 +21,14 @@ \csname PSTSPIROGRAPHLoaded\endcsname \let\PSTSPIROGRAPHLoaded\endinput % Requires some packages -\ifx\PSTricksLoaded\endinput\else \input pstricks \fi -\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi -\def\fileversion{0.50} -\def\filedate{2020/03/11} +\ifx\PSTricksLoaded\endinput \else \input pstricks \fi +\ifx\PSTXKeyLoaded\endinput \else \input pst-xkey \fi +\ifx\PSTthreeDLoaded\endinput\else \input pst-3d \fi +\ifx\PSTnodesLoaded\endinput \else \input pst-node \fi +\ifx\PSTplotLoaded\endinput \else \input pst-plot \fi + +\def\fileversion{0.51} +\def\filedate{2020/03/14} \message{`PSTSPIROGRAPH' v\fileversion, \filedate\ (ml,hv)} \edef\PstAtCode{\the\catcode`\@} @@ -45,6 +49,18 @@ \psset[pst-spirograph]{holenumber=1} \define@key[psset]{pst-spirograph}{thetamax}[360]{\def\psk@thetamax{#1 }} \psset[pst-spirograph]{thetamax=360} + +\define@key[psset]{pst-spirograph}{Rarct}{\def\psk@Rarct{#1 }} +\psset[pst-spirograph]{Rarct=0.1} +\define@key[psset]{pst-spirograph}{wheelrotation}{\def\psk@wheelrotation{#1 }} +\psset[pst-spirograph]{wheelrotation=0} + +\define@boolkey[psset]{pst-spirograph}[Pst@spirograph@]{int}[true]{} +\psset[pst-spirograph]{int=false} + +\define@boolkey[psset]{pst-spirograph}[Pst@spirograph@]{notdrawWheel}[true]{} +\psset[pst-spirograph]{notdrawWheel=false} + % \define@key[psset]{pst-spirograph}{color1}[{[rgb]{0.625 0.75 1}}]{\pst@getcolor{#1}\pscolora} \psset[pst-spirograph]{color1={[rgb]{0.625 0.75 1}}} @@ -65,7 +81,6 @@ \define@boolkey[psset]{pst-spirograph}[Pst@spirograph@]{circles}[true]{} \psset[pst-spirograph]{circles=false} - %% hole position \define@key[psset]{pst-spirograph}{HolePos}{\def\psk@HolePos{#1 }} \psset[pst-spirograph]{HolePos=1.5} % 1<HolePos<2 @@ -76,11 +91,20 @@ \define@boolkey[psset]{pst-spirograph}[Pst@spirograph@]{TypeA}[true]{} \psset[pst-spirograph]{TypeA} +\define@boolkey[psset]{pst-spirograph}[Pst@spirograph@]{RubberBand}[true]{} +\psset[pst-spirograph]{RubberBand=false} + +\define@key[psset]{pst-spirograph}{theta1}{\def\psk@thetaA{#1}} +\define@key[psset]{pst-spirograph}{theta2}{\def\psk@thetaB{#1}} +\psset[pst-spirograph]{theta1=-90,theta2=90} \def\psSpirograph{\def\pst@par{}\pst@object{psSpirograph}} \def\psSpirograph@i{\@ifnextchar({\psSpirograph@ii}{\psSpirograph@ii(0,0)}} \def\psSpirograph@ii(#1){% - \begin@ClosedObj + \begin@SpecialObj + \ifPst@spirograph@RubberBand \psSpirograph@iv(#1)\else\psSpirograph@iii(#1)\fi +} +\def\psSpirograph@iii(#1){% \pst@@getcoor{#1}% \addto@pscode{ tx@spirographDict begin @@ -209,15 +233,233 @@ linecolor stroke plaquette + drawHole \ifPst@spirograph@circles Circles \fi grestore + \else + 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@in polarAngle cos mul a@in polarAngle sin mul translate + polarAngle Z1 Z2 sub Z1 div mul rotate + m1 Z1 + Datas2 + Calculs + Beta_ rotate + Beta_ neg rotate + drawHole + grestore \fi \fi end }% - \end@ClosedObj + \end@SpecialObj \ignorespaces} % +\def\psSpirograph@iv(#1){% + \def\RA{\psCalc{\psk@ZA*\psk@m/2}}% + \def\RB{\psCalc{\psk@ZB*\psk@m/2}}% les rayons + \def\OB{\psCalc{\RA+\RB}}% + \def\RAp{\psCalc{(\RA*2-2.5*0.2)/2}}% cercles de pied + \def\RBp{\psCalc{(\RB*2-2.5*0.2)/2}}% + % la vitesse de rotation + \def\OMEGAA{-1}% + \def\OMEGAB{\psCalc{(-\OMEGAA)*\psk@ZA/\psk@ZB}}% + \def\ANGLE{\psCalc{\psk@wheelrotation}}% degrees + \def\ANGLErad{\psCalc{\ANGLE*3.14/180}}% radians + \def\nombrePoints{\psCalc{trunc(2*\ANGLE+5,0)}}% + % positionnement angulaire des 2 points de fixation de l'élastique + \def\thetaA{\psCalc{(\psk@thetaA)*3.14/180}}% + \def\thetaB{\psCalc{(\psk@thetaB)*3.14/180}}% + % les coordonnées des 2 points + \def\xA{\psCalc{0.9*\RAp*cos(\thetaA+\OMEGAA*\ANGLErad)}}% + \def\yA{\psCalc{sin(\thetaA+\OMEGAA*\ANGLErad)*\RAp*0.9}}% + \def\xB{\psCalc{cos(\thetaB+\OMEGAB*\ANGLErad)*\RBp*0.9}}% + \def\yB{\psCalc{sin(\thetaB+\OMEGAB*\ANGLErad)*\RBp*0.9+\OB}}% + % le milieu + \def\xM{\psCalc{(\xA+\xB)/2}}\def\yM{\psCalc{(\yA+\yB)/2}}% + \ThreeDput[normal=0 0 1](0,0,0){% + \psgrid[subgriddiv=0,gridlabels=0pt]%\psframe(-5,-5)(5,7) + \rput(0.05,-0.05){\psSpirographB[circles=false,polarangle=90,fillstyle=solid,color1=black,color2=black]}% + \psSpirographB[circles=false,polarangle=90,fillstyle=solid]% + \parametricplot[linecolor=red,plotpoints=\nombrePoints,algebraic,linewidth=0.1]{0}{\ANGLErad}{ + (\RAp*0.9*cos(\thetaA+\OMEGAA*t)+\RBp*0.9*cos(\thetaB+\OMEGAB*t))/2| + (\RAp*0.9*sin(\thetaA+\OMEGAA*t)+\RBp*0.9*sin(\thetaB+\OMEGAB*t)+\OB)/2}% + \psline{->}(0,0)(0,1)\psline{->}(0,0)(1,0)% + % les cercles de contact + \pscircle[linestyle=dotted](0,0){\RA}\pscircle[linestyle=dotted](0,\OB){\RB}% + % les cercles de pied + %\pscircle[linestyle=dotted](0,0){\RAp} + %\pscircle[linestyle=dotted](0,\OB){\RBp} + }% + % les tiges de fixation des extrémités de l'élastique + \ThreeDput[normal=0 1 0](\xA,\yA,0){\psline[linewidth=0.1]{-*}(0,0)(0,1)\pnode(0,1){P1}}% + \ThreeDput[normal=0 1 0](\xB,\yB,0){\psline[linewidth=0.1]{-*}(0,0)(0,1)\pnode(0,1){P2}}% + % le milieu + \ThreeDput[normal=0 1 0](\xM,\yM,0){\pnodes(0,1){P3}(0,0){P4}}% + \psline[linecolor=blue](P1)(P2)% + \psline[linecolor=red]{->}(P3)(P4)% + \psdot[linecolor=blue](P3)% + \end@SpecialObj + \ignorespaces} +% +\def\psSpirographB{\def\pst@par{}\pst@object{psSpirographB}} +\def\psSpirographB@i{\@ifnextchar({\psSpirographB@ii}{\psSpirographB@ii(0,0)}} +\def\psSpirographB@ii(#1){% + \begin@SpecialObj + \pst@@getcoor{#1}% + \addto@pscode{% + \pst@coor /t@@y ED /t@@x ED + /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 + /facteurRayonRaccord {\psk@Rarct mul} def + /polarAngle \psk@polarangle def + /color1 {\pst@usecolor\pscolora } def + /color2 {\pst@usecolor\pscolorb } def + /colorcircles {\pst@usecolor\pscolorc } def + /curvecolor {\pst@usecolor\pscolord} def + /linecolor {\pst@usecolor\pslinecolor} def + /ni \psk@holenumber def ni 8 gt { /ni 8 def } if + /thetamax \psk@thetamax def + Z1 2 mod 1 eq { /Z1 Z1 1 sub def } if + Z2 2 mod 1 eq { /Z2 Z2 1 sub def } if + /HolePos \psk@HolePos def + HolePos 0 lt HolePos 2 ge or { /HolePos 1.5 def } if + /Fill { \psk@opacityalpha .setopacityalpha fill } def + /R1 Z1 m1 mul 2 div def + /R2 Z2 m1 mul 2 div 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 + % + tx@spirographDict begin + %%%% definition de la roue dentee %%%%%% + /Roue3d { + % arc de développante + /tabArcDev [ 0 1 ThetaTdeg { /i@ exch def [i@ devCercle] } for ] def + /n@ tabArcDev length def + /tabDent [ + % l'arc de developpante initial + 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 + % 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 + % tracé de la dent + /n2@ tabDent length def + newpath + ptC moveto + 0 1 Z@ 1 sub + { /i@ exch AngleDent mul def + \ifPst@spirograph@int + wheel 2 eq { ptA RotDent ptB RotDent Rarct arct ptB RotDent lineto } + { ptA RotDent lineto ptB RotDent lineto } ifelse + \else + Rp Rb eq { ptA RotDent lineto ptB RotDent lineto } + { ptA RotDent ptB RotDent Rarct arct ptB RotDent lineto } ifelse + \fi + 0 1 n2@ 1 sub { /compteur exch def tabDent compteur get aload pop RotDent lineto } for + \ifPst@spirograph@int + 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 + \else + Rp Rb eq { ptA' RotDent lineto ptC' RotDent lineto } + { ptA' RotDent ptC' RotDent Rarct arct ptC' RotDent lineto } ifelse + \fi + } for + } def % Roue3d + % +%%%%%%%%%%%%%%%%%5 + thetamax 0 le { /pas -1 def }{ /pas 1 def } ifelse + /tabSpirograph [ 0 pas thetamax {/i_ exch def [ i_ coorPen3 ] } for ] def +% gsave +% tabSpirograph 0 get aload pop moveto +% 1 1 tabSpirograph length 1 sub {/nP exch def tabSpirograph nP get aload pop lineto } for +% curvecolor +% \pst@number\pscurvewidth SLW +% stroke +% grestore +%%%%%%%%%%%%%%% + /AngleRotation \psk@wheelrotation def + %%% Les dessins de l'engrenage %%%%%% + %%%%%%%%%% Roue N°1 %%%%%%%%%%%%%%%%% + \ifPst@spirograph@notdrawWheel + \else + /wheel 1 def + gsave + t@@x t@@y translate + m1 Z1 + \ifPst@spirograph@int + Datas2 Calculs Beta_ AngleRotation sub rotate Roue3d COURONNE closepath + \ifx\psk@fillstyle\relax\else color1 fill \fi + Roue3d closepath linecolor stroke + COURONNE closepath linecolor stroke + \ifPst@spirograph@circles Circles \fi + \else + Datas1 Calculs Beta_ AngleRotation sub rotate Roue3d AXE closepath + \ifx\psk@fillstyle\relax\else color1 fill \fi + Roue3d closepath linecolor stroke + AXE closepath + \ifx\psk@fillstyle\relax\else 0.8 setgray fill \fi + AXE closepath linecolor stroke + CLAVETTE + \ifx\psk@fillstyle\relax\else 0 0.125 0.25 0.25 setcmykcolor fill \fi + CLAVETTE linecolor stroke + \ifPst@spirograph@circles Circles \fi + \fi + grestore + \fi + %%%%%%%%%% Roue N°2 %%%%%%%%%%%%%%%%% + /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 + \ifPst@spirograph@int + a@in polarAngle cos mul t@@x add a@in polarAngle sin mul t@@y add translate + Beta_ Z1 Z2 div AngleRotation mul sub polarAngle Z1 Z2 sub Z2 div mul sub rotate + \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 Z1 Z2 div AngleRotation mul add polarAngle Z1 Z2 add Z2 div mul add rotate + \fi + Roue3d + AXE + closepath + \ifx\psk@fillstyle\relax\else color2 fill \fi + Roue3d + closepath + linecolor + stroke + AXE + closepath + \ifx\psk@fillstyle\relax\else 0.8 setgray fill \fi + AXE + closepath + linecolor + stroke + CLAVETTE + \ifx\psk@fillstyle\relax\else 0 0.125 0.25 0.25 setcmykcolor fill \fi + CLAVETTE + linecolor + stroke + \ifPst@spirograph@circles Circles \fi + grestore + end + }% + \end@SpecialObj + \ignorespaces +}% % fin de la commande PSTricks +% \catcode`\@=\PstAtCode\relax % \endinput
\ No newline at end of file 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 5ee1f43f9fe..bb2633416cc 100644 --- a/Master/texmf-dist/tex/latex/pst-spirograph/pst-spirograph.sty +++ b/Master/texmf-dist/tex/latex/pst-spirograph/pst-spirograph.sty @@ -15,15 +15,16 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{pst-spirograph} - [2014/08/23 v0.41 LaTeX wrapper for `pst-spirograph' (hv)] + [2020/03/14 v0.51 LaTeX wrapper for `pst-spirograph' (hv)] % -\RequirePackage{pstricks} +\RequirePackage{pstricks,pst-plot,pst-3d,pst-node,pst-calculate} +\let\psCalc\pscalculate \ProvidesPackage{pst-spirograph}[2020/03/11 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} - [2020/03/11 v. 0.50, PostScript prologue file (hv)] + [2020/03/14 v. 0.51, PostScript prologue file (hv)] \@addtofilelist{pst-spirograph.pro}}{}% \endinput |