From 33a1fed6bf16c61516dd7ef7ecc7598f30ccd689 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 1 Dec 2018 22:47:30 +0000 Subject: pst-fractal (1dec18) git-svn-id: svn://tug.org/texlive/trunk@49295 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/generic/pst-fractal/pst-fractal.tex | 137 ++++++++++++++++++++- 1 file changed, 133 insertions(+), 4 deletions(-) (limited to 'Master/texmf-dist/tex/generic/pst-fractal') diff --git a/Master/texmf-dist/tex/generic/pst-fractal/pst-fractal.tex b/Master/texmf-dist/tex/generic/pst-fractal/pst-fractal.tex index 926173f4f10..b60dcaf3dae 100644 --- a/Master/texmf-dist/tex/generic/pst-fractal/pst-fractal.tex +++ b/Master/texmf-dist/tex/generic/pst-fractal/pst-fractal.tex @@ -1,4 +1,4 @@ -%% $Id: pst-fractal.tex 673 2017-12-02 22:04:41Z herbert $ +%% $Id: pst-fractal.tex 846 2018-11-30 21:44:45Z herbert $ %% %% This is file `pst-fractal.tex', %% @@ -22,8 +22,8 @@ \ifx\PSTricksAddLoaded\endinput\else\input pstricks-add.tex\fi \ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi % -\def\fileversion{0.09} -\def\filedate{2017/12/02} +\def\fileversion{0.10} +\def\filedate{2018/11/30} \message{`PST-fractal' v\fileversion, \filedate\space (hv)} % \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax @@ -79,9 +79,67 @@ \define@boolkey[psset]{pst-fractal}[Pst@]{juxtaposition}[true]{} % \define@key[psset]{pst-fractal}{colorF}{\pst@getcolor{#1}\pscolorF} \psset[pst-fractal]{morphism=(0) (1) (2),juxtaposition=false,colorF=red,i=6} - +% %=========================================================== % +\def\psCantor{\pst@object{psCantor}} +\def\psCantor@i{% + \addbefore@par{n=5,xWidth=10cm,yWidth=5mm,linewidth=2mm} + \begin@SpecialObj + \addto@pscode{ + /N@ \pst@fractal@n def +% \pst@number\psunit dup scale + /v 0 def + /deltaV \pst@number\pst@fractal@yWidth def + 0 0 moveto + /cantor_set { % x0 x1 v n + 4 dict begin + /n exch def + /v exch def + /x1 exch def + /x0 exch def + x0 v moveto + x1 v lineto \pst@usecolor\pslinecolor \pst@number\pslinewidth stroke + n 1 gt { + x0 dup dup add x1 add 3 div v deltaV sub n 1 sub cantor_set + x0 x1 dup add add 3 div x1 v deltaV sub n 1 sub cantor_set + } if + end + } def + 0 \pst@number\pst@fractal@xWidth 0 N@ cantor_set + }% + \showpointsfalse + \end@SpecialObj + \ignorespaces} +% +\def\psHilbert{\pst@object{psHilbert}} +\def\psHilbert@i{% + \addbefore@par{n=4,N=all,dotcolor=red} + \begin@SpecialObj + \addto@pscode{ + /N@ \pst@fractal@n def + /NbrePts (\pst@fractal@N) def + NbrePts (all) eq {/Npts 4 N@ 1 add exp cvi def}{/Npts NbrePts cvi def Npts 4 N@ 1 add exp gt {/Npts 4 N@ 1 add exp cvi def} if } ifelse + /dotcolor {\pst@usecolor\psdotcolor } def + /cmunit {\pst@number\psunit mul} bind def + tx@fractalDict begin HilbertFractal + \psls@solid + \ifshowpoints + 0 2 HilbertCurve length 2 sub { + /i exch def + i 2 div Npts ge {exit} if + HilbertCurve i get + HilbertCurve i 1 add get + \psk@dotsize DS + 0 360 arc dotcolor fill + } for + \fi + end + }% + \showpointsfalse + \end@SpecialObj + \ignorespaces} +% \def\psFibonacci{\pst@object{psFibonacci}} \def\psFibonacci@i{% \addbefore@par{n=10, angle=90}% @@ -601,6 +659,77 @@ \end@SpecialObj% }} % +\define@key[psset]{pst-fractal}{NbrIter}{\def\pst@fractal@NbrIter{#1 }} % nombre d'itérations +\define@key[psset]{pst-fractal}{tabPts}{\def\pst@fractal@tabPts{#1 }} % tableau de points +\define@key[psset]{pst-fractal}{angleH}{\def\pst@fractal@angleH{#1 }} % angle en radians +\define@key[psset]{pst-fractal}{zoom}{\def\pst@fractal@zoom{#1 }} % grossissement +\psset[pst-fractal]{NbrIter=500,angleH=1.32837,zoom=5,tabPts=0.05 0.05 +0.1 0.1 +0.2 0.2 +0.3 0.2 +0.3 0.3 +0.4 0.3 +0.4 0.324 +0.4 0.326 +0.4 0.5 +0.5 0.3 +0.5 0.5 +0.6 0.5 +0.6 0.6 +0.57 0.575 +0.7 0.7 +0.7 0.9} +\define@boolkey[psset]{pst-fractal}[Pst@]{pixelscolor}[true]{} +\psset[pst-fractal]{pixelscolor=true} % pixels en couleurs + +\def\psHenon{\pst@object{psHenon}} +\def\psHenon@i{% + \addbefore@par{dotsize=0.75pt}% + \begin@SpecialObj + \addto@pscode{ +% échelle 2=> 10 cm pour zoom=5 + /zoom \pst@fractal@zoom def + /cm {\pst@number\psunit mul zoom mul} bind def + /NbreIter \pst@fractal@NbrIter def + /Angle \pst@fractal@angleH RadtoDeg def + /CosA Angle cos def + /SinA Angle sin def + /TabPts [\pst@fractal@tabPts] def + \ifPst@pixelscolor /pixelscolor true def \else /pixelscolor false def \fi + /AttracteurHenon { + 5 dict begin + /Y exch def /X exch def /Aux X def + NbreIter { + /Aux X def + /X X CosA mul Y X X mul sub SinA mul sub def + /Y Aux SinA mul Y Aux Aux mul sub CosA mul add def + X abs 1e12 ge Y abs 1e10 ge or { exit }{ + newpath + X cm \psk@@dotsize sub Y cm \psk@@dotsize sub moveto + \psk@@dotsize 0 rlineto % bottom of square + 0 \psk@@dotsize rlineto % right side of square + -\psk@@dotsize 0 rlineto % top of square + closepath + fill + }ifelse + } repeat + end + } def + /Hsb 0 def + 0 2 TabPts length 2 sub { + /i exch def + % 0 setgray + %TabPts i get TabPts i 1 add get 2 copy + %exch 200 mul exch 200 mul 2 0 360 arc fill + pixelscolor {Hsb 1 1 sethsbcolor}{0 setgray}ifelse + TabPts i get TabPts i 1 add get + AttracteurHenon + /Hsb i TabPts length div def + } for + }% + \showpointsfalse + \end@SpecialObj + \ignorespaces} % \catcode`\@=\PstAtCode\relax % -- cgit v1.2.3