summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pst-fractal
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-12-01 22:47:30 +0000
committerKarl Berry <karl@freefriends.org>2018-12-01 22:47:30 +0000
commit33a1fed6bf16c61516dd7ef7ecc7598f30ccd689 (patch)
tree7e3b173f85769f763ac002187d7a88f1219b69a0 /Master/texmf-dist/tex/generic/pst-fractal
parent608fb06f9098a25c854017f05d2a20192083baf8 (diff)
pst-fractal (1dec18)
git-svn-id: svn://tug.org/texlive/trunk@49295 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/pst-fractal')
-rw-r--r--Master/texmf-dist/tex/generic/pst-fractal/pst-fractal.tex137
1 files changed, 133 insertions, 4 deletions
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
%