diff options
author | Norbert Preining <norbert@preining.info> | 2020-03-18 03:01:18 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-03-18 03:01:18 +0000 |
commit | 701be49cc7a592cc192c0f28e45a763a4c745282 (patch) | |
tree | 4e86cf1011b55faeddf0e8da471c2e55324b37fa /graphics/pstricks | |
parent | 35730d4ce115914408c09833060f86cc84fc0d14 (diff) |
CTAN sync 202003180301
Diffstat (limited to 'graphics/pstricks')
22 files changed, 0 insertions, 1720 deletions
diff --git a/graphics/pstricks/contrib/pst-spirograph/Changes b/graphics/pstricks/contrib/pst-spirograph/Changes deleted file mode 100644 index 124518d431..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/Changes +++ /dev/null @@ -1,22 +0,0 @@ ------ 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 -0.40 2014-08-18 - first CTAN version (hv) - - ------ 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/graphics/pstricks/contrib/pst-spirograph/README b/graphics/pstricks/contrib/pst-spirograph/README deleted file mode 100644 index c1968e1db7..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/README +++ /dev/null @@ -1,12 +0,0 @@ -This version of pst-spirograph uses the xkeyval package, the extended -version of keyval. - -pst-spirograph needs pstricks, which should be part of your -local TeX installation, otherwise get it from a CTAN server, f.ex. -http://mirror.ctan.org/graphics/pstricks/ - -%% This program can be redistributed and/or modified under the terms -%% of the LaTeX Project Public License Distributed from CTAN archives -%% in directory CTAN:/macros/latex/base/lppl.txt. - -hvoss@tug.org diff --git a/graphics/pstricks/contrib/pst-spirograph/doc/animation/README.anim b/graphics/pstricks/contrib/pst-spirograph/doc/animation/README.anim deleted file mode 100644 index 36b2f23bde..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/animation/README.anim +++ /dev/null @@ -1,8 +0,0 @@ -run all files with - -latex <file> -dvips <file> -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/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim1.tex b/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim1.tex deleted file mode 100644 index ac4109bc2f..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim1.tex +++ /dev/null @@ -1,21 +0,0 @@ -\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](-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{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/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim2.tex b/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim2.tex deleted file mode 100644 index c334442f70..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim2.tex +++ /dev/null @@ -1,21 +0,0 @@ -\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](-3,-3)(3,3)\psframe*[linecolor=yellow,opacity=0.4](-3,-3)(3,3)}, - end={\end{pspicture}}, - palindrome,controls, -% autoplay -]{5} -\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/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim3.tex b/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim3.tex deleted file mode 100644 index e20fe33493..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim3.tex +++ /dev/null @@ -1,21 +0,0 @@ -\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](-4,-4)(4,4)\psframe*[linecolor=yellow,opacity=0.4](-4,-4)(4,4)}, - end={\end{pspicture}}, - palindrome,controls, -% autoplay -]{5} -\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/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim4.tex b/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim4.tex deleted file mode 100644 index 0b113bdecb..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim4.tex +++ /dev/null @@ -1,21 +0,0 @@ -\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](-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{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/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim5.tex b/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim5.tex deleted file mode 100644 index 0195e722a2..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim5.tex +++ /dev/null @@ -1,22 +0,0 @@ -\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](-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{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/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim6.tex b/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim6.tex deleted file mode 100644 index 7893599526..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim6.tex +++ /dev/null @@ -1,21 +0,0 @@ -\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](-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{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/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim7.tex b/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim7.tex deleted file mode 100644 index b99a5a0ad8..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim7.tex +++ /dev/null @@ -1,20 +0,0 @@ -\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](-7,-7)(7,7)\psframe*[linecolor=yellow,opacity=0.4](-7,-7)(7,7)}, - end={\end{pspicture}}, - palindrome,controls, -% autoplay -]{5} -\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/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim8.tex b/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim8.tex deleted file mode 100644 index 8a274f5adc..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim8.tex +++ /dev/null @@ -1,21 +0,0 @@ -\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](-7,-7)(7,7)\psframe*[linecolor=yellow,opacity=0.4](-7,-7)(7,7)}, - end={\end{pspicture}}, - palindrome,controls, -% autoplay -]{5} -\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/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim9.tex b/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim9.tex deleted file mode 100644 index 9199971860..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/animation/anim9.tex +++ /dev/null @@ -1,24 +0,0 @@ -\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/graphics/pstricks/contrib/pst-spirograph/doc/animation/animA.tex b/graphics/pstricks/contrib/pst-spirograph/doc/animation/animA.tex deleted file mode 100644 index cadac1cd1a..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/animation/animA.tex +++ /dev/null @@ -1,23 +0,0 @@ -\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/graphics/pstricks/contrib/pst-spirograph/doc/animation/animB.tex b/graphics/pstricks/contrib/pst-spirograph/doc/animation/animB.tex deleted file mode 100644 index e568a03965..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/animation/animB.tex +++ /dev/null @@ -1,22 +0,0 @@ -\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/graphics/pstricks/contrib/pst-spirograph/doc/animation/animC.tex b/graphics/pstricks/contrib/pst-spirograph/doc/animation/animC.tex deleted file mode 100644 index f9ccfdd2e8..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/animation/animC.tex +++ /dev/null @@ -1,17 +0,0 @@ -\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/graphics/pstricks/contrib/pst-spirograph/doc/animation/runall.sh b/graphics/pstricks/contrib/pst-spirograph/doc/animation/runall.sh deleted file mode 100755 index 08fa638fb7..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/animation/runall.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -set `dir -R *.tex` -for datei in *.tex -do -# rm -fr *.pdf - echo -n "Runnning file $datei ... " - FILE=`basename $datei .tex` - latex $FILE &> /dev/null - dvips $FILE &> /dev/null - ps2pdf $FILE.ps &> /dev/null - rm -fr $FILE.log $FILE.aux $FILE.ps $FILE.dvi - echo " done" -done diff --git a/graphics/pstricks/contrib/pst-spirograph/doc/pst-spirograph-doc.bib b/graphics/pstricks/contrib/pst-spirograph/doc/pst-spirograph-doc.bib deleted file mode 100644 index 38c466e7d6..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/pst-spirograph-doc.bib +++ /dev/null @@ -1,96 +0,0 @@ -%% -*-bibtex-*- -@STRING{tugboat = {TUGboat} } -@STRING{dtk = {{D}ie {\TeX}nische {K}om{\"o}die} } - -@Book{companion, - author = {Michel Goosens and Frank Mittelbach and Sebastian Rahtz and Dennis Roegel and Herbert Vo\ss}, - title = {The {\LaTeX} {G}raphics {C}ompanion}, - publisher = {{Addison-Wesley Publishing Company}}, - edition = {second}, - year = {2007}, - address = {Boston, Mass.} -} - -@Article{girou:01:, - author = {Denis Girou}, - title = {Pr\'esentation de {PST}ricks}, - journal = {Cahier {GUT}enberg}, - year = 1994, - volume = {16}, - month = apr, - pages = {21-70} -} - -@Article{girou:02:, - author = {{Timothy Van} Zandt and Denis Girou}, - title = {Inside {PST}ricks}, - journal = TUGboat, - year = 1994, - volume = {15}, - month = sep, - pages = {239-246} -} - -@Book{PostScript, - Author = {Kollock, Nikolai G.}, - Title = {Post{S}cript richtig eingesetzt: vom {K}onzept zum - praktischen {E}insatz}, - Publisher = {IWT}, - Address = {Vaterstetten}, - year = 1989, -} - -@Manual{multido, - Title = {\texttt{multido.tex} - a loop macro, that supports fixed-point addition}, - Author = {{Timothy Van} Zandt}, - Organization = {}, - Address = {\url{CTAN:/macros/generic/multido.tex}}, - Note = {}, - year = 1997 -} - -@Book{PSTricks2, - author = {Herbert Vo\ss{}}, - title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX}, - edition = {6}, - publisher = {DANTE -- lehmanns media}, - year = {2010}, - address = {Heidelberg/Berlin} -} - - -@Book{PSTricksE, - author = {Herbert Vo\ss}, - title = {\texttt{PSTricks} -- {G}raphics for \LaTeX}, - edition = {1.}, - publisher = {UIT}, - year = {2011}, - address = {Cambridge/UK} -} - -@Book{LaTeXRef, - author = {Herbert Vo\ss}, - title = {\LaTeX\ Referenz}, - edition = {2.}, - publisher = {DANTE -- lehmanns media}, - year = {2010}, - address = {Heidelberg/Hamburg} -} -@Book{LaTeXRefE, - author = {Herbert Vo\ss}, - title = {\LaTeX\ Quick Reference}, - edition = {1.}, - publisher = {UIT}, - year = {2011}, - address = {Cambridge/UK} -} - -@Book{tbt, - author = {Victor Eijkhout}, - title = {\TeX\ by Topic -- {A} \TeX{}nician Reference}, - edition = {1}, - publisher = {DANTE -- lehmanns media}, - year = {2014}, - address = {Heidelberg/Berlin} -} - diff --git a/graphics/pstricks/contrib/pst-spirograph/doc/pst-spirograph-doc.pdf b/graphics/pstricks/contrib/pst-spirograph/doc/pst-spirograph-doc.pdf Binary files differdeleted file mode 100644 index 95c0731945..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/pst-spirograph-doc.pdf +++ /dev/null diff --git a/graphics/pstricks/contrib/pst-spirograph/doc/pst-spirograph-doc.tex b/graphics/pstricks/contrib/pst-spirograph/doc/pst-spirograph-doc.tex deleted file mode 100644 index 9af23c3350..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/doc/pst-spirograph-doc.tex +++ /dev/null @@ -1,406 +0,0 @@ -%% $Id: pst-spirograph-doc.tex 81 2014-08-23 07:08:21Z herbert $ -\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings - headexclude,footexclude,oneside]{pst-doc} -\errorcontextlines=150 -\usepackage{pst-spirograph} -\let\pstFV\fileversion -\usepackage{pst-node,pst-plot} -\usepackage{animate} - -\def\UrlFont{\small\ttfamily} -\makeatletter -\def\verbatim@font{\small\normalfont\ttfamily} -\makeatother - -\hypersetup{pdfauthor={Manuel Luque, Herbert Voss},pdftitle={Spirograoh}} -% -\def\bgImage{\begin{pspicture}(-4,-4)(4,4) -\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}% -} - -\lstset{basicstyle=\ttfamily\footnotesize} - -\addbibresource{\jobname.bib} - - -\begin{document} -\author{Manuel Luque\\Herbert Vo\ss} -\docauthor{} -\date{\today} -\title{pst-spirograph \\\small v.\pstFV} -\subtitle{A PSTricks package for drawing spirograph curves} -\maketitle% - -\tableofcontents - -\begin{abstract} -\vfill\noindent -Thanks for feedback and contributions to:\\ -Uwe Ziegenhagen; -\end{abstract} - -\clearpage - -\section{Introduction} - - -\LPack{pst-spirograph} is a package to simulate the operation of a spirograph. A spirograph -is a geometric drawing toy that produces mathematical roulette curves that are technically -known as hypotrochoids and epitrochoids. -The mathematician Bruno Abakanowicz invented the spirograph between 1881 and 1900.% -\footnote{\url{http://en.wikipedia.org/wiki/Spirograph}} -It was used to calculate an area delimited by curves. -A hypotrochoid is generated by a fixed point on a circle rolling inside a fixed circle.% -\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. -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 - - -\begin{BDef} -\Lcs{psSpirograph}\OptArgs\Largr{\CAny}\\ -\Lcs{psSpirographB}\OptArgs\Largr{\CAny} -\end{BDef} - - -and can optionally be followed by the coordinates of the point where you wish to place the -Spirograph: \Lcs{psSpirograph}\OptArgs\Largr{x,y} which by default is centered at the origin. -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}: 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=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: - -\begin{compactitem} -\item \Lkeyword{circles}: to draw circles of contact (default is \texttt{false}. -\item \Lkeyword{inner}: the gear rotates inside of the crown (\texttt{true} --- default) or outside (\texttt{false}). -\end{compactitem} - - -In the drawing, the color selection wheel and the line of the curve is made with -the following setting: - - -\begin{compactenum} -\item \LKeyset{color1=\{[rgb]\{0.625 0.75 1\}\}}; -\item \LKeyset{color2=\{[rgb]\{0.75 1 0.75\}\}}; -\item \Lkeyset{curvecolor=red}; -\item \LKeyset{curvewidth=1pt}: linewidth of the hypocycloid; -\item \Lkeyset{circlescolor=red}. -\end{compactenum} - -The origin of the spirograph can be set by the coordinates $(x,y)$. If the they are missing, $(0,0)$ is assumed. -By default, the wheels are not filled with color. The color inside the wheels must be -set by the option \Lkeyset{fillStyle=solid}. - -The choice of color and line thickness contour of the wheels is made with -usual PSTricks options: \Lkeyword{linecolor} and \Lkeyword{linewidth}. -The transparency of the small wheel is adjusted with the \Lkeyword{opacity} option of PSTricks. - -The last parameter is the angle \LKeyset{thetamax=360}, which represents the rotation in degrees -the center of the small wheel around the ring, so it is a parameter to adjust, -depending on the planned route of the hypocycloid. - - -\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](-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] -\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) -\psSpirograph[thetamax=720,Z1=120,Z2=48,m=0.1,ap=10,linewidth=0.025, - fillstyle=solid,polarangle=200,holenumber=0,opacity=0.3] -\psSpirograph[thetamax=720,Z1=120,Z2=48,m=0.1,ap=10,linewidth=0.025, - fillstyle=solid,polarangle=340,holenumber=3,opacity=0.3,curvecolor=blue] -\psSpirograph[thetamax=720,Z1=120,Z2=48,m=0.1,ap=10,linewidth=0.025, - fillstyle=solid,polarangle=90,holenumber=6,opacity=0.3,curvecolor=green] -\end{pspicture} -\end{LTXexample} - -\begin{LTXexample}[pos=t] -\begin{pspicture}[showgrid=top](-7,-7)(7,7) -\psframe*[linecolor=yellow!30](-7,-7)(7,7) -\psSpirograph[thetamax=720,Z1=120,Z2=48,m=0.1,ap=10,linewidth=0.025, - fillstyle=solid,polarangle=200,holenumber=3,opacity=0.75] -\end{pspicture} -\end{LTXexample} - - - -\begin{LTXexample}[pos=t] -\begin{pspicture}[showgrid=top](-7,-7)(7,7) -\psframe*[linecolor=gray!20](-7,-7)(7,7) -\psSpirograph[thetamax=720,Z1=36,Z2=24,m=0.15,linewidth=0.025,ap=20,inner=false, - fillstyle=solid,polarangle=150,linecolor=blue,holenumber=0,opacity=0.8] -\end{pspicture} -\end{LTXexample} - -\begin{LTXexample}[pos=t] -\begin{pspicture}[showgrid=top](-7,-7)(7,7) -\psframe*[linecolor=yellow!30](-7,-7)(7,7) -\psSpirograph[thetamax=1440,Z1=27,Z2=12,m=0.4,linewidth=0.025, - curvecolor={[rgb]{0 0.25 0.5}},circles,fillstyle=solid,polarangle=30, - linecolor=blue,holenumber=0,opacity=0.75] -\end{pspicture} -\end{LTXexample} - - -\begin{LTXexample}[pos=t] -\begin{pspicture}[showgrid=top](-7,-7)(7,7) -\psframe*[linecolor=yellow!30](-7,-7)(7,7) -\psset{unit=0.5} -\psSpirograph[thetamax=-1800,Z1=108,Z2=15,m=0.2,linewidth=0.025,ap=10, - fillstyle=solid,polarangle=54,linecolor=blue,holenumber=0,opacity=0.75] -\end{pspicture} -\end{LTXexample} - - - -\begin{LTXexample}[pos=t] -\begin{pspicture}[showgrid=top](-7,-7)(7,7) -\psframe*[linecolor=gray!20](-7,-7)(7,7) -\psSpirograph[thetamax=1800,Z1=36,Z2=30,m=0.15,linewidth=0.025,ap=20,inner=false, - fillstyle=solid,polarangle=150,linecolor=blue,holenumber=4,opacity=0.8] -\end{pspicture} -\end{LTXexample} - -\clearpage -\section{Animations} - -\begin{sloppypar} -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. To save diskspace the following -examples use a bigger angle step than useful for a single animation. -\end{sloppypar} - - - -%\psset{unit=0.75cm} -\begin{LTXexample}[pos=t] -\begin{animateinline}[ - width=0.9\linewidth, - begin={\begin{pspicture}(-4,-4)(4,4)}, - end={\end{pspicture}}, - palindrome,controls, -% autoplay -]{5} -\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}[ - width=0.9\linewidth, begin={\begin{pspicture}(-11,-11)(11,11)}, end={\end{pspicture}}, palindrome,controls,]{5} -\multiframe{109}{i=0+10}{% -\psgrid[style=gridstyleA](-10,-10)(10,10)% -\ifnum\i=109 \psset{gearwheels=false}\fi -\psSpirograph[Z1=24,Z2=16,m=0.5,ap=22,TypeA=false,linewidth=0.2pt,fillstyle=solid,opacity=0.5, - polarangle=\i,circles=false,thetamax=\i,curvecolor=blue,curvewidth=2pt,HolePos=1.1,color1=magenta]} -\end{animateinline} -\end{LTXexample} - - -\begin{LTXexample}[pos=t] -\psset{unit=0.5cm} -\begin{animateinline}[ - width=0.9\linewidth,begin={\begin{pspicture}(-10,-10)(10,10)},end={\end{pspicture}},palindrome,controls]{5} -\multiframe{721}{i=0+2}{% -\psgrid[subgriddiv=0,gridcolor=red,unit=1.5](-10,-10)(10,10)% -\ifnum\i=721 \psset{gearwheels=false}\fi -\psSpirograph[Z1=24,Z2=18,m=0.5,ap=22,linewidth=0.025,TypeA=false,fillstyle=solid,opacity=0.5,polarangle=\i,circles=false, - thetamax=\i,curvecolor=blue,curvewidth=2pt,HolePos=1.75,color1=magenta]} -\end{animateinline} -\end{LTXexample} -\fi - - - -\begin{LTXexample}[pos=t] -\psset{unit=0.6cm} -\begin{animateinline}[ - width=0.9\linewidth,begin={\begin{pspicture}(-14,-14)(14,14)},end={\end{pspicture}},palindrome,controls]{5} -\multiframe{181}{i=0+10}{% - \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.5]} -\end{animateinline} -\end{LTXexample} - - -\iffalse -\begin{LTXexample}[pos=t] -\psset{unit=0.4cm} -\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]} -\end{animateinline} -\end{LTXexample} - - - -\begin{LTXexample}[pos=t] -\psset{unit=0.25cm} -\begin{animateinline}[ - width=0.9\linewidth,begin={\begin{pspicture}(-20,-20)(20,20)},end={\end{pspicture}},palindrome,controls]{5} -\multiframe{324}{i=0+10}{% -\psgrid[subgriddiv=0,gridcolor=black!20,unit=2](-10,-10)(10,10)% -\ifnum\i=324 \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=3pt, - 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=3pt, -% HolePos=1.5,color1=cyan!10,color2=cyan!10,strokeopacity=0.5] -} -\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} - - - - -%There are some more examples in the documention directory of the package. - -\clearpage - -\section{List of all optional arguments for \texttt{pst-spirograph}} - -\xkvview{family=pst-spirograph,columns={key,type,default}} - - -\bgroup -\nocite{*} -\raggedright -\printbibliography -\egroup - -\printindex - - - -\end{document} - diff --git a/graphics/pstricks/contrib/pst-spirograph/dvips/pst-spirograph.pro b/graphics/pstricks/contrib/pst-spirograph/dvips/pst-spirograph.pro deleted file mode 100644 index 59f31ba302..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/dvips/pst-spirograph.pro +++ /dev/null @@ -1,414 +0,0 @@ -%% $Id: pst-spirograph.pro 1160 2020-03-14 14:08:31Z herbert $ -%% -% PostScript prologue for pst-spirograph.tex. -% -% Version 0.51, 2020/03/14 -% -/tx@spirographDict 50 dict def -tx@spirographDict begin -/coorPen { - 1 dict begin - /t exch def - r2 qi t cos mul ki qi t mul 60 ni mul sub cos mul add mul cm - r2 qi t sin mul ki qi t mul 60 ni mul sub sin mul sub mul cm - end -} def -/coorPen2 { - 1 dict begin - /t exch def - r2 qi2 t cos mul ki qi2 t mul 60 ni mul neg 180 Z2 div sub sub cos mul sub mul cm - r2 qi2 t sin mul ki qi2 t mul 60 ni mul neg 180 Z2 div sub sub sin mul sub mul cm - end -} def -/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 -} 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 -} 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 - /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 - ThetaPdeg cos ThetaP ThetaPdeg sin mul add atan } bind def - /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 -} def -% Le symetrique P' de P par rapport a la l'axe de la dent -% Delta(axe de la dent) y=x*tan(Beta) -% x'=y*sin(2*Beta)+x*cos(2*Beta) -% y'=x*sin(2*Beta)-y*cos(2*Beta) -% x y symAxe -> x' y' -/symAxe { - 2 dict begin - /y exch def - /x exch def - y 2Beta sin mul x 2Beta cos mul add % x' - x 2Beta sin mul y 2Beta cos mul sub % y' - end -} def - % -% Rotation pour amener l'axe de la dent horizontal -% -/RotDent { - 2 dict begin - /y exch def - /x exch def - i@ cos x mul i@ sin y mul sub - i@ sin x mul i@ cos y mul add - end -} 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 - Rb t cos t DegtoRad t sin mul add mul cm % x - Rb t sin t DegtoRad t cos mul sub mul cm % y - end -} def -%% -%%%% 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 -% l'arc de developpante initial - /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 -% 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 -% 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 } - { 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 } - { 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 -% -/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 - 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.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 - /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.12 cm 0 360 arc - } ifelse - closepath - curvecolor - fill - grestore - end -} def - /Roue3 { - % 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 - wheel 2 eq { ptA RotDent ptB RotDent Rarct arct ptB RotDent lineto } - { ptA RotDent lineto ptB RotDent lineto } ifelse - 0 1 n2@ 1 sub { /compteur exch def tabDent compteur get aload pop RotDent lineto } for - 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 - } for - } def - %%%% fin de la definition de la roue dentee %%% - /plaquette { - Beta_ neg rotate - /alpha1 1 R1 2 mul atan 2 div def - /alpha2 1 R1 2 mul 2 m1 mul sub 2 div atan 2 div def - /xR1 R1 2 mul cm def - /yR1 0.5 cm def - /xR2 R1 2 mul cm def - /yR2 -0.5 cm def - /xR3 R1 2 mul 2 m1 mul sub 2 div R1 2 div sub cm def - /yR3 -0.5 cm def - /xR4 R1 2 mul 2 m1 mul sub 2 div R1 2 div sub cm def - /yR4 0.5 cm def - newpath - xR1 yR1 moveto - xR2 yR2 lineto - xR3 yR3 lineto - xR4 yR4 lineto - closepath - iffill { color1 Fill } if - newpath - xR1 yR1 moveto - xR2 yR2 lineto - xR3 yR3 lineto - xR4 yR4 lineto - closepath - linecolor - stroke - } def - /drawHole { - R1 cm HolePos mul 0 GetCurveWidth 1.5 mul 0 360 arc - curvecolor - fill - 0 setgray - R1 cm HolePos mul 0 GetCurveWidth 1.5 mul 0 360 arc - stroke - } def - %% calculs des points de la courbe - /coorPen3 { - 4 dict begin - /t exch def - % r2 qi t cos mul ki qi t mul 60 ni mul sub cos mul add mul cm - % r2 qi t sin mul ki qi t mul 60 ni mul sub sin mul sub mul cm - /beta t R1 R2 sub R1 div mul def - /xC R1 R2 sub t cos mul def - /yC R1 R2 sub t sin mul def - R1 HolePos mul beta cos mul xC add cm - 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/graphics/pstricks/contrib/pst-spirograph/latex/pst-spirograph.sty b/graphics/pstricks/contrib/pst-spirograph/latex/pst-spirograph.sty deleted file mode 100644 index bb2633416c..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/latex/pst-spirograph.sty +++ /dev/null @@ -1,30 +0,0 @@ -% $Id: pst-spirograph.sty 80 2014-08-23 05:50:14Z herbert $ -%% -%% This is file `pst-spirograph.sty'. -%% -%% IMPORTANT NOTICE: -%% -%% pst-spirograph.sty Copyright (C) 2020- -%% Manuel Luque -%% Herbert Voß <hvoss@tug.org> -%% -%% This package may be distributed under the terms of the LaTeX Project -%% Public License, as described in lppl.txt in the base LaTeX distribution. -%% Either version 1.0 or, at your option, any later version. -%% -\NeedsTeXFormat{LaTeX2e} - -\ProvidesPackage{pst-spirograph} - [2020/03/14 v0.51 LaTeX wrapper for `pst-spirograph' (hv)] -% -\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/14 v. 0.51, PostScript prologue file (hv)] - \@addtofilelist{pst-spirograph.pro}}{}% -\endinput diff --git a/graphics/pstricks/contrib/pst-spirograph/tex/pst-spirograph.tex b/graphics/pstricks/contrib/pst-spirograph/tex/pst-spirograph.tex deleted file mode 100644 index cb946557bf..0000000000 --- a/graphics/pstricks/contrib/pst-spirograph/tex/pst-spirograph.tex +++ /dev/null @@ -1,465 +0,0 @@ -%% $Id: pst-spirograph.tex 80 2014-08-23 05:50:14Z herbert $ -%% -%% This is file `pst-spirograph.tex', -%% -%% IMPORTANT NOTICE: -%% -%% Package `pst-spirograph.tex' -%% -%% COPYRIGHT 2020- by -%% Manuel Luque <manuel.luque27@gmail.com> -%% Herbert Voss <hvoss@tug.org> -%% -%% This program can be redistributed and/or modified under the terms -%% of the LaTeX Project Public License Distributed from CTAN archives -%% in directory CTAN:/macros/latex/base/lppl.txt. -%% -%% DESCRIPTION: -%% `pst-spirograph' is a PSTricks package to show spirograph curves -%% -%% -\csname PSTSPIROGRAPHLoaded\endcsname -\let\PSTSPIROGRAPHLoaded\endinput -% Requires some packages -\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`\@} -\catcode`\@=11\relax -\pst@addfams{pst-spirograph} -\pstheader{pst-spirograph.pro} -\define@key[psset]{pst-spirograph}{Z1}[20]{\def\psk@ZA{#1 }} -\psset[pst-spirograph]{Z1=20} -\define@key[psset]{pst-spirograph}{Z2}[10]{\def\psk@ZB{#1 }} -\psset[pst-spirograph]{Z2=10} -\define@key[psset]{pst-spirograph}{m}[0.5]{\def\psk@m{#1 }} -\psset[pst-spirograph]{m=0.5} -\define@key[psset]{pst-spirograph}{ap}[20]{\def\psk@ap{#1 }} -\psset[pst-spirograph]{ap=20} -\define@key[psset]{pst-spirograph}{polarangle}[0]{\def\psk@polarangle{#1 }} -\psset[pst-spirograph]{polarangle=0} -\define@key[psset]{pst-spirograph}{holenumber}[1]{\def\psk@holenumber{#1 }} -\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}}} -\define@key[psset]{pst-spirograph}{color2}[{[rgb]{0.75 1 0.75}}]{\pst@getcolor{#1}\pscolorb} -\psset[pst-spirograph]{color2={[rgb]{0.75 1 0.75}}} -\define@key[psset]{pst-spirograph}{circlescolor}[red]{\pst@getcolor{#1}\pscolorc} -\psset[pst-spirograph]{circlescolor=red} -\define@key[psset]{pst-spirograph}{curvecolor}[red]{\pst@getcolor{#1}\pscolord} -\psset[pst-spirograph]{curvecolor=red} -% -\newdimen\pscurvewidth -\define@key[psset]{pst-spirograph}{curvewidth}[1pt]{\pssetlength\pscurvewidth{#1}} -\psset[pst-spirograph]{curvewidth=1pt} -%% === Option pour dessiner le type d'engrenage --------------------- -\define@boolkey[psset]{pst-spirograph}[Pst@spirograph@]{inner}[true]{} -\psset[pst-spirograph]{inner} -%% === pour dessiner cercle de base et cercle primitif -\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 - -\define@boolkey[psset]{pst-spirograph}[Pst@spirograph@]{gearwheels}[true]{} -\psset[pst-spirograph]{gearwheels} - -\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@SpecialObj - \ifPst@spirograph@RubberBand \psSpirograph@iv(#1)\else\psSpirograph@iii(#1)\fi -} -\def\psSpirograph@iii(#1){% - \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 ni 8 gt { /ni 8 def } if - /thetamax \psk@thetamax def -% - /ifinner \ifPst@spirograph@inner true \else false \fi def - /ifcircles \ifPst@spirograph@circles true \else false \fi def - /iffill \ifx\psk@fillstyle\psfs@none false \else true \fi def - /Fill { \tx@setTransparency fill stroke } def - % on teste si le nombre de dents est pair - 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 - 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 - /GetCurveWidth { \pst@number\pscurvewidth } def - /SetCurveWidth { \pst@number\pscurvewidth SLW } def -% - \ifPst@spirograph@TypeA - Roue1 - Roue2 - \else - %%%% definition de la roue dentee %%%%%% - thetamax 0 le { /pas -1 def }{ /pas 1 def } ifelse - /tabSpirograph [ 0 pas thetamax {/i_ exch def [ i_ coorPen3 ] } for ] def - %%% Les dessins de l'engrenage %%%%%% - %%%%%%%%%% Roue N°2 %%%%%%%%%%% - %%%%%%%%%% roue fixe %%%%%%%%%% - \ifPst@spirograph@gearwheels - /wheel 2 def - gsave - m2 Z2 Datas1 - Calculs - Beta_ rotate - Roue3 - closepath -% \ifx\psk@fillstyle\empty\else color2 Fill \fi - iffill { color2 Fill } if - Roue3 - closepath - linecolor - stroke - grestore - gsave - %% la vis de fixation de la roue sur la feuille - 0 0 0.5 cm 0 360 arc - 0.8 0.8 0 setrgbcolor - fill - 0 setgray - 0 0 0.5 cm 0 360 arc - stroke - 1 setlinewidth - -0.5 cm 0 moveto 0.5 cm 0 lineto - 0 -0.5 cm moveto 0 0.5 cm lineto - stroke - grestore - \ifPst@spirograph@circles Circles \fi - \fi - 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 - %%%%%%%%%% Roue N°1 %%%%%%%%%%%%%%%%% - %%%%%%%%%% roue tournante %%%%%%%%%% - \ifPst@spirograph@gearwheels - /wheel 1 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@in polarAngle cos mul a@in polarAngle sin mul translate - polarAngle Z1 Z2 sub Z1 div mul rotate - m1 Z1 - Datas2 - Calculs - Beta_ rotate - Roue3 - COURONNE - closepath - iffill { color1 Fill } if -% \ifx\psk@fillstyle\@empty\else color1 Fill \fi - Roue3 - closepath - linecolor - stroke - COURONNE - closepath - linecolor - stroke - Roue3 - closepath - 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@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 |