From e72d523402a19a7e892e5bb851b7ef858956aff3 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 3 Dec 2017 22:18:59 +0000 Subject: pst-fractal (3dec17) git-svn-id: svn://tug.org/texlive/trunk@45977 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/generic/pst-fractal/Changes | 4 +- Master/texmf-dist/doc/generic/pst-fractal/README | 2 +- .../doc/generic/pst-fractal/pst-fractal-doc.bib | 7 + .../doc/generic/pst-fractal/pst-fractal-doc.pdf | Bin 7201737 -> 11285757 bytes .../doc/generic/pst-fractal/pst-fractal-doc.tex | 894 ++++++++++++++++++++- .../texmf-dist/dvips/pst-fractal/pst-fractal.pro | 433 +++++++++- .../tex/generic/pst-fractal/pst-fractal.tex | 278 +++++-- .../tex/latex/pst-fractal/pst-fractal.sty | 2 +- 8 files changed, 1514 insertions(+), 106 deletions(-) (limited to 'Master') diff --git a/Master/texmf-dist/doc/generic/pst-fractal/Changes b/Master/texmf-dist/doc/generic/pst-fractal/Changes index e297cdd6b27..9452a519d83 100644 --- a/Master/texmf-dist/doc/generic/pst-fractal/Changes +++ b/Master/texmf-dist/doc/generic/pst-fractal/Changes @@ -1,4 +1,5 @@ pst-fractal.pro -------- +0.05 2017-12-02 added fibinacci curves 0.04 2017-11-26 add sierpinski curve 0.03 2011-02-10 cometic changes 0.02 2010-02-10 fix bug in tx@fern @@ -6,7 +7,8 @@ pst-fractal.pro -------- pst-fractal.tex -------- -0.08 2017-11-26 - add sierpinski curve +0.09 2017-12-02 - added fibinacci curves +0.08 2017-11-26 - added sierpinski curve 0.07 2013-06-17 - allow level 0 for sierpinski 0.06 2010-02-10 - add another type of a Sierpinski triangle 0.05 2007-09-25 - allow unbalanced trees with option 0dvips->ps2pdf. -To gett he documentation of this document you have to run +To get the documentation of this document you have to run pst2pdf pst-fractal-doc --Iext=.jpg %% This program can be redistributed and/or modified under the terms diff --git a/Master/texmf-dist/doc/generic/pst-fractal/pst-fractal-doc.bib b/Master/texmf-dist/doc/generic/pst-fractal/pst-fractal-doc.bib index 038d2b36a0a..a1400940514 100644 --- a/Master/texmf-dist/doc/generic/pst-fractal/pst-fractal-doc.bib +++ b/Master/texmf-dist/doc/generic/pst-fractal/pst-fractal-doc.bib @@ -123,3 +123,10 @@ year = {2012}, url = {/graphics/pstricks/contrib/pst-tools} } + +@online{ramirez, +title= {Properties and Generalizations of the Fibonacci Word Fractal Exploring Fractal Curves}, +url = {http://www.mathematica-journal.com/2014/02/properties-and-generalizations-of-the-fibonacci-word-fractal/}, +author= {José L. Ramírez and Gustavo N. Rubiano}, +} + \ No newline at end of file diff --git a/Master/texmf-dist/doc/generic/pst-fractal/pst-fractal-doc.pdf b/Master/texmf-dist/doc/generic/pst-fractal/pst-fractal-doc.pdf index c9909824bbb..df9353720e4 100644 Binary files a/Master/texmf-dist/doc/generic/pst-fractal/pst-fractal-doc.pdf and b/Master/texmf-dist/doc/generic/pst-fractal/pst-fractal-doc.pdf differ diff --git a/Master/texmf-dist/doc/generic/pst-fractal/pst-fractal-doc.tex b/Master/texmf-dist/doc/generic/pst-fractal/pst-fractal-doc.tex index 8bcd020028c..3016fa2987b 100644 --- a/Master/texmf-dist/doc/generic/pst-fractal/pst-fractal-doc.tex +++ b/Master/texmf-dist/doc/generic/pst-fractal/pst-fractal-doc.tex @@ -1,6 +1,6 @@ -%% $Id: pst-fractal-doc.tex 658 2017-11-26 16:55:41Z herbert $ -\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false, - smallheadings, headexclude,footexclude,oneside]{pst-doc} +%% $Id: pst-fractal-doc.tex 677 2017-12-03 09:51:54Z herbert $ +\documentclass[fontsize=11pt,english,BCOR=10mm,DIV=13,toc=bibliography,parskip=false, + headings=small, headinclude=false,footinclude=false,oneside]{pst-doc} \usepackage[utf8]{inputenc} \usepackage{pst-fractal} \let\pstFV\fileversion @@ -8,6 +8,37 @@ \def\PSLenv{\Lenv{pspicture}} \usepackage{animate} + +\def\pSTilingsFibonacci#1#2#3{% #1=n #2=nbre de lignes #3=type 1 ou 2 + \pstFPDiv\Nbr{#2}{2}% + \psset[pst-fractal]{n=#1}% + \pstVerb{/n0 #1 def /tabPell [0 1 2 5 12 29 70 169 408] def + /Type #3 def + Type 2 gt {/Type 1 def} if + Type 2 eq { +% (-1)^2P(n),(P(n+1) + /Y1 tabPell n0 1 add get def + /X1 -1 n0 exp tabPell n0 get mul def + }{ +% (P(n+1),(-1)^2P(n) + /X1 tabPell n0 1 add get def + /Y1 -1 n0 exp tabPell n0 get mul def + } ifelse + % le déplacement perpendiculaire + /X2 Y1 neg def + /Y2 X1 def +}% +\pstVerb{/ListColors [0 0 1] def}% +\multido{\I=-\Nbr+1}{#2}{5 \rput(!X2 \I\space mul Y2 \I\space mul){% + \multido{\i=-\Nbr+1}{#2}{% +%\definecolor[ps]{Couleur}{rgb}{ListColors aload pop}% + \definecolor[ps]{Couleur}{cmyk}{ListColors aload pop 0}% + \rput(!X1 \i\space mul Y1 \i\space mul){\psFibonacciPolyominoes[fillcolor=Couleur]}% + \pstVerb{/ListColors [ListColors aload pop 3 1 roll] def}% +}}}}% + + + %\usepackage{auto-pst-pdf} \addbibresource{\jobname.bib} @@ -24,7 +55,8 @@ \tableofcontents -\clearpage +\vspace{3cm} + \begin{abstract} \noindent @@ -48,16 +80,18 @@ resolution. Run the examples as single documents to see how it will be in high quality. -\section{Sierpinski triangle} +\section{Sierpinski triangle and curve} The triangle must be given by three mandatory arguments. Depending to the kind of arguments it is one of the two possible versions: \begin{BDef} \Lcs{psSier}\OptArgs\coord0\coord1\coord2\\ -\Lcs{psSier}\OptArgs\coord0\Largb{Base}\Largb{Recursion} +\Lcs{psSier}\OptArgs\coord0\Largb{Base}\Largb{Recursion}\\ +\Lcs{psSier}\OptArgs \end{BDef} +\subsection{Triangle} In difference to \Lcs{psfractal} it doesn't reserve any space, this is the reason why it should be part of a \PSLenv{} environment. @@ -76,8 +110,7 @@ reason why it should be part of a \PSLenv{} environment. \end{pspicture} } \end{LTXexample} - -\section{Sierpinski curve} +\subsection{Curve} There are four special optional arguments for the Siepinski curve: \begin{itemize} @@ -115,9 +148,6 @@ There are four special optional arguments for the Siepinski curve: \end{LTXexample} - -\iffalse - \begin{animateinline}[controls,% palindrome, begin={\begin{pspicture}(-4,-4)(4,4)}, end={\end{pspicture}}]{5}% 5 image/s @@ -141,7 +171,7 @@ There are four special optional arguments for the Siepinski curve: \end{animateinline} \end{verbatim} -\fi + \section{Julia and Mandelbrot sets} @@ -214,7 +244,7 @@ $(x_0;y_0)$ is the starting value. \begin{LTXexample}[pos=l] -\psfractal +\psfractal \qquad \psfractal[type=Mandel] \end{LTXexample} @@ -222,7 +252,7 @@ $(x_0;y_0)$ is the starting value. The color for the convergent part is set by \Lkeyword{baseColor}. \begin{LTXexample} -\psfractal[xWidth=4cm,yWidth=4cm,dIter=30](-2,-2)(2,2) +\psfractal[xWidth=4cm,yWidth=4cm,dIter=30](-2,-2)(2,2) \qquad \psfractal[xWidth=4cm,yWidth=4cm,baseColor=yellow,dIter=30](-2,-2)(2,2) \end{LTXexample} @@ -235,12 +265,16 @@ The color for the convergent part is set by \Lkeyword{baseColor}. \psfractal[type=Mandel,xWidth=12.8cm,yWidth=10.8cm,dIter=5](-2.5,-1.3)(0.7,1.3) \end{LTXexample} + +\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%% + + \subsection{\texttt{cx} and \texttt{cy}}\xLkeyword{cx}\xLkeyword{cy} Define the starting value for the complex constant number $C$. \begin{LTXexample} \psset{xWidth=5cm,yWidth=5cm} -\psfractal[dIter=2](-2,-2)(2,2) +\psfractal[dIter=2](-2,-2)(2,2) \qquad \psfractal[dIter=2,cx=-1.3,cy=0](-2,-2)(2,2) \end{LTXexample} @@ -252,17 +286,21 @@ the value of \Lps{iter} added by 400. \begin{LTXexample} \psset{xWidth=5cm,yWidth=5cm} -\psfractal[dIter=30](-2,-2)(2,2) +\psfractal[dIter=30](-2,-2)(2,2) \qquad \psfractal[dIter=10,cx=-1.3,cy=0](-2,-2)(2,2) \end{LTXexample} + +\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%% + + \subsection{\texttt{maxIter}} \Lkeyword{maxIter} is the number of the maximum iteration until it leaves the loop. It is predefined by 255, but internally multiplied by \Lkeyword{dIter}. \begin{LTXexample} \psset{xWidth=5cm,yWidth=5cm} -\psfractal[maxIter=50,dIter=3](-2,-2)(2,2) +\psfractal[maxIter=50,dIter=3](-2,-2)(2,2) \qquad \psfractal[maxIter=30,cx=-1.3,cy=0](-2,-2)(2,2) \end{LTXexample} @@ -274,17 +312,20 @@ value, it is preset by 100. \begin{LTXexample} \psset{xWidth=5cm,yWidth=5cm} -\psfractal[maxRadius=30,dIter=10](-2,-2)(2,2) +\psfractal[maxRadius=30,dIter=10](-2,-2)(2,2) \qquad \psfractal[maxRadius=30,dIter=30,cx=-1.3,cy=0](-2,-2)(2,2) \end{LTXexample} + +\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%% + \subsection{\texttt{plotpoints}}\xLkeyword{plotpoints} This option is only valid for the Sierpinski triangle and preset by 2000. \begin{LTXexample} \begin{pspicture}(5,5) \psSier(0,0)(2.5,5)(5,0) -\end{pspicture} +\end{pspicture} \quad \begin{pspicture}(5,5) \psSier[plotpoints=10000](0,0)(2.5,5)(5,0) \end{pspicture} @@ -332,6 +373,10 @@ is assumed. \end{pspicture}} \end{LTXexample} + +\clearpage%%%%%%%%%%%%%%%%%%%%%%%% + + \subsection{\texttt{c}}\xLkeyword{c} This is the length of one element in the unit pt. @@ -349,6 +394,9 @@ This is the length of one element in the unit pt. \end{pspicture}} \end{LTXexample} +\clearpage%%%%%%%%%%%%%%%%%%%%%%%% + + \subsection{\texttt{maxIter}}\xLkeyword{maxIter} This is the number for the iterations. @@ -392,6 +440,9 @@ is assumed. The default \Lkeyword{scale} is set to 10. \end{LTXexample} +\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%% + + \section{Koch flake} \begin{BDef} @@ -423,6 +474,8 @@ Optional arguments are \Lkeyword{scale}, \Lkeyword{maxIter} (iteration depth) an for the first rotation angle. +\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%% + \section{Apollonius circles} \begin{BDef} @@ -461,12 +514,12 @@ and the depth by \Lkeyword{maxIter}. Valid optional arguments are \medskip \begin{center} -\begin{tabular}{@{}>{\ttfamily}lll@{}} +\begin{tabular}{@{}>{\ttfamily}lll@{}}\hline \emph{Name} & \emph{Meaning} & \emph{default}\\\hline \Lkeyword{xWidth} & first base width & 1cm\\ \Lkeyword{minWidth} & last base width & 1pt\\ \Lkeyword{c} & factor for unbalanced trees (0}(4.8,2)(3,2) +\psline[arrowinset=0.1,arrowsize=0.2]{->}(5,2.5)(5,4) +\end{pspicture} +\hfill +\begin{pspicture}[showgrid](0,0)(7,7) +\psFibonacci[unit=0.1,linecolor=blue,n=16,linewidth=0.04cm] +\rput(5,2){$F_{16}$} +\end{pspicture} +\end{LTXexample} + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](0,0)(8,5) +\psFibonacci[unit=0.05,linecolor=blue,n=17,linewidth=0.02cm,juxtaposition] +\rput(2.5,4){\blue$F_{17}$} +\rput(6,4){\red$F_{16}$} +\end{pspicture} +\hfill +\begin{pspicture}[showgrid](0,0)(8,5) +\psFibonacci[unit=0.05,n=18,linewidth=0.02cm] +\rput(4,4){$F_{18}$} +\end{pspicture} +\end{LTXexample} + + + + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](0,0)(10,7) +\psFibonacci[unit=0.1,linecolor=blue,n=16,linewidth=0.03cm,juxtaposition] +\rput(5,2){\blue$F_{16}$} +\rput(9,2){\red$F_{15}$} +\end{pspicture} +\end{LTXexample} + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](0,0)(10,7) +\psFibonacci[unit=0.1,n=17,linewidth=0.03cm] +\rput(5,2){$F_{17}$} +\end{pspicture} +\end{LTXexample} + + + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](0,0)(13,12) +\psFibonacci[unit=0.03,linecolor=blue,n=21,linewidth=0.02cm,juxtaposition] +\rput(1.5,3.5){\blue$F_{21}$} +\rput(8.5,10.5){\red$F_{20}$} +\end{pspicture} +\end{LTXexample} + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](0,0)(13,12) +\psFibonacci[unit=0.03,n=22,linewidth=0.025cm] +\rput(9,4){$F_{22}$} +\end{pspicture} +\end{LTXexample} + + + + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](0,0)(14,6) +\psFibonacci[unit=0.015,linecolor=blue,n=23,linewidth=0.01cm,juxtaposition] +\rput(4,2){\blue$F_{23}$} +\rput(10.5,4){\red$F_{22}$} +\end{pspicture} +\end{LTXexample} + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](0,0)(14,6) +\psFibonacci[unit=0.015,n=24,linewidth=0.01cm] +\rput(7,6.5){$F_{24}$} +\end{pspicture} +\end{LTXexample} + + + +\subsection{Curves with a big number of iterations} +With \texttt{n=30} it takes a long time and the number is not readable. + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](0,0)(14,6) +\psFibonacci[unit=0.0025,n=30,linewidth=0.001cm] +\end{pspicture} +\end{LTXexample} + + + +\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\subsection{Double color curves} + +Superposition of two curves are possible by choosing diffrent color and line thickness. + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}(-1,-1)(15,12) +\psgrid[style=gridstyleA] +\psFibonacci[unit=0.4,linecolor=blue,n=13,linewidth=0.2cm]% +\psFibonacci[unit=0.4,linecolor=red,n=13,linewidth=0.05cm]% +\end{pspicture} +\end{LTXexample} + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](-1,-1)(14,6) +\psFibonacci[unit=0.5,linecolor=red,n=12,linewidth=0.2cm]% +\psFibonacci[unit=0.5,linecolor=yellow,n=12,linewidth=0.05cm]% +\end{pspicture} +\end{LTXexample} + + + + +\section{``Dense Fibonacci Word'' and the command \Lcs{psNewFibonacci}}\label{dfw} + +In the chapter ``The dense Fibonacci word: a whole family of curves'', Alexis Monnerot-Dumaine +wrote: + +\begin{quote} +The odd-even design rule is not easy to manage and we can change to +a more practical rule. As Jean-Paul Allouche suggested, we can create a word of 3 +letters with \{0; 1; 2\} that can draw the Fibonacci fractal with the simplest drawing rules +following: + +\begin{itemize} +\item 0, draw a segment in line with the previous one +\item 1, draw a segment by turning to the right +\item 2, draw a segment by turning to the left +\end{itemize} +\end{quote} + + +By replacing in the Fibonacci word 00$\rightarrow$0, 01$\rightarrow$1 and 10$\rightarrow$2. Alexis Monnerot-Dumaine +defines the ``Dense Fibonacci Word'' (DFW). +From the DFW, we get a whole family of curves by doing, for example, substitutions +following: + +\begin{itemize} + \item $\mu_1$ : $1 \longrightarrow 10$ ; $0 \longrightarrow 12$ ; $2 \longrightarrow 02$ + \item $\mu_2$ : $1 \longrightarrow 010$ ; $0 \longrightarrow 0102$ ; $2 \longrightarrow 002$ + \item $\mu_3$ : $1 \longrightarrow 02$ ; $0 \longrightarrow 21$ ; $2 \longrightarrow 10$ + \item $\mu_4$ : $1 \longrightarrow 02$ ; $0 \longrightarrow 00$ ; $2 \longrightarrow 10$ +\end{itemize} + +We will find all these families of curves with explanations and references in the article +Alexis Monnerot-Dumaine. These are just brief explanations for using the commands +PSTricks to draw these families of curves. In their article "Properties and Gener- +Fractal Exploring Fractal Curves ``alizations of the Fibonacci'' \cite{ramirez} illustrate this +family of curves with Mathematica by designating them under the name of +New-Fibonacci. This name seems to me sensible the PSTricks command will be called \Lcs{psNewFibonacci}. + + +\subsection{``Dense Fibonacci Word''} + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid=false](-1,-0.2)(10,2) +\uput[r](-0.5,1){FW=}% +\psFibonacciWord[n=10,fontscale=12](0.5,0.9) +\uput[r](-0.75,0){DFW=}% +\psFibonacciWord[n=10,DFW,fontscale=12](0.5,-0.1) +\end{pspicture} +\end{LTXexample} + + + +\subsection{Fractal of ``\textit{Dense Fibonacci Word}''} + +The curve can be created with \verb+\psNewFibonacci+ + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](-3,0)(10,11) +\psNewFibonacci[unit=0.2,linecolor={[rgb]{0.5 0 0}},n=17,linewidth=0.03cm] +\rput(4,4){n=17} +\end{pspicture} +\end{LTXexample} + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](-4,0)(6,10) +\psNewFibonacci[unit=0.2,linecolor={[rgb]{0.5 0 0}},n=17,linewidth=0.03cm,morphism=() (1) (2)] +\rput(2,4){n=17} +\end{pspicture} +\end{LTXexample} + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](-1,0)(15,6) +\psNewFibonacci[unit=0.2,linecolor={[rgb]{0.5 0 0}},n=18,linewidth=0.03cm,morphism=(12) (1) (2)] +\rput(4,2){n=18} +\end{pspicture} +\end{LTXexample} + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](-7,0)(5,10) +\psNewFibonacci[unit=0.1,linecolor={[rgb]{0.5 0 0}},n=17,linewidth=0.03cm,morphism=(102) (2) (1)] +\rput(-2,4){n=17} +\end{pspicture} +\end{LTXexample} + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](-7,0)(4,10) +\psNewFibonacci[unit=0.1,linecolor={[rgb]{0.5 0 0}},n=17,linewidth=0.03cm,morphism=(210) (02) (10)] +\rput(-2,4){n=17} +\end{pspicture} +\end{LTXexample} + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](-5,0)(4,9) +\psNewFibonacci[unit=0.1,linecolor={[rgb]{0.5 0 0}},n=17,linewidth=0.03cm,morphism=(21) (02) (10)] +\rput(-1,4){n=17} +\end{pspicture} +\end{LTXexample} + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](-10,0)(4,12) +\psNewFibonacci[unit=0.1,linecolor={[rgb]{0.5 0 0}},n=17,linewidth=0.03cm,morphism=(210) (020) (10)] +\rput(-4,4){n=17} +\end{pspicture} +\end{LTXexample} + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](-10,0)(4,11) +\psNewFibonacci[unit=0.075,linecolor={[rgb]{0.5 0 0}},n=18,linewidth=0.025cm,morphism=(102) (2) (1)] +\rput(-4,2){n=18} +\end{pspicture} +\end{LTXexample} + + + + +\section{The command \Lcs{psiFibonacci}} + +\subsection{How it works} +Briefly, (read the article \cite{ramirez} for more details) more +``I-Fibonacci Word'' depends on the parameter i and the number of iterations n with the following rules, +according to the authors' notations: + +\begin{itemize} + \item $f_0^{[i]}$ =0 + \item $f_1^{[i]} =0^{i-1}1$ : this notation means that it is necessary to put (i-1) 0 before the 1 + \item $f_n^{[i]}= f_{n -1}^{[i]} f_{n -2}^{[i]}$ pour $n\geq 2$ et $i \geq 1$. +\end{itemize} + +The construction of the associated fractal curves follows the ``even-odd'' rule as for the fractal +of the word Fibonacci. + + + +\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + +\subsection{Examples} + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](-7,0)(3,9) +\psiFibonacci[unit=0.2,linecolor={[rgb]{0.5 0 0}},n=10,linewidth=0.025cm,i=3] +\end{pspicture} +\end{LTXexample} + + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](0,0)(9,9.5) +\psiFibonacci[unit=0.2,linecolor={[rgb]{0.5 0 0}},n=10,linewidth=0.025cm,i=4] +\end{pspicture} +\end{LTXexample} + + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](-7,0)(3,9) +\psiFibonacci[unit=0.15,linecolor={[rgb]{0.5 0 0}},n=10,linewidth=0.025cm,i=5] +\end{pspicture} +\end{LTXexample} + + + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](0,0)(9,9.5) +\psiFibonacci[unit=0.15,linecolor={[rgb]{0.5 0 0}},n=10,linewidth=0.025cm,i=6] +\end{pspicture} +\end{LTXexample} + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](-6,0)(3,8) +\psiFibonacci[unit=0.1,linecolor={[rgb]{0.5 0 0}},n=10,linewidth=0.025cm,i=7] +\end{pspicture} +\end{LTXexample} + + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](-8,0)(3,12) +\psiFibonacci[unit=0.1,linecolor={[rgb]{0.5 0 0}},n=10,linewidth=0.025cm,i=11] +\end{pspicture} +\end{LTXexample} + + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](0,0)(6,14) +\psiFibonacci[unit=0.05,linecolor={[rgb]{0.5 0 0}},n=12,linewidth=0.025cm,i=12] +\end{pspicture} +\end{LTXexample} + + +\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\section{The command \Lcs{pskFibonacci}} +The 2 mandatory parameters are n and k. The following coordinates are optional but +put, possibly, to center the curve at the origin of the mark. + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}(-4,-4)(4,4) +\psgrid[gridlabels=0pt,subgriddiv=0,gridcolor=red,griddots=10] +\pskFibonacci[unit=0.02,linecolor={[rgb]{0 0 0.5}},linewidth=0.02cm,n=6,k=5](-2.3,-3.2) +\end{pspicture} +\end{LTXexample} + + + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}(-4,-4)(4,4) +\psgrid[gridlabels=0pt,subgriddiv=0,gridcolor=red,griddots=10] +\pskFibonacci[unit=0.4,linecolor={[rgb]{0 0 0.5}},n=3,k=5](2.8,-3.6) +\end{pspicture} +\end{LTXexample} + + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}(-4,-4)(4,4) +\psgrid[gridlabels=0pt,subgriddiv=0,gridcolor=red,griddots=10] +\pskFibonacci[unit=0.025,linecolor={[rgb]{0 0 0.5}},linewidth=0.02cm,n=6,k=6](3,0.5) +\end{pspicture} +\end{LTXexample} + + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}(-4,-4)(4,4) +\psgrid[gridlabels=0pt,subgriddiv=0,gridcolor={[rgb]{0 0 0.5}},griddots=10] +\pskFibonacci[unit=0.2,linecolor={[rgb]{0 0 0.5}},n=4,k=6,angle=60](-2,0) +\end{pspicture} +\end{LTXexample} + + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}(-4,-4)(2,1) +\psgrid[gridlabels=0pt,subgriddiv=0,gridcolor=red,griddots=10] +\pskFibonacci[unit=0.1,linecolor={[rgb]{0 0 0.5}},n=4,k=4,angle=60](0,0) +\end{pspicture} +\end{LTXexample} + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}(-8,-8)(8,8) +\psgrid[gridlabels=0pt,subgriddiv=0,gridcolor={[rgb]{0 0 0.5}},griddots=10] +\pskFibonacci[unit=0.02,linecolor={[rgb]{0.5 0 0}},linewidth=0.02cm,n=6,k=7](6,-4) +\end{pspicture} +\end{LTXexample} + + + + +\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{The command \Lcs{psBiperiodicFibonacci}} +The 3 mandatory parameters are n, a and b. As for the previous command, the coordinates +following are optional but allow, eventually, to center the curve at the origin of the +mark. + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid=false](-4,-4)(4,4) +\psgrid[gridlabels=0pt,subgriddiv=0,gridcolor=red,griddots=10] +\psBiperiodicFibonacci[unit=0.2,linecolor={[rgb]{0 0.5 0}},linewidth=0.1cm,n=5,a=6,b=6,angle=60](0,2.1) +\psBiperiodicFibonacci[unit=0.2,linecolor=white,n=5,a=6,b=6,angle=60](0,2.1) +\end{pspicture} +\end{LTXexample} + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid=false](-4,-4)(4,4) +\psgrid[gridlabels=0pt,subgriddiv=0,gridcolor=red,griddots=10] +\psBiperiodicFibonacci[unit=0.5,linecolor={[rgb]{0 0.5 0}},n=5,a=3,b=4,angle=120](-1.5,3.5) +\end{pspicture} +\end{LTXexample} + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid=false](-4,-4)(4,4) +\psgrid[gridlabels=0pt,subgriddiv=0,gridcolor=red,griddots=10] +\psBiperiodicFibonacci[unit=0.2,linecolor=black,linewidth=0.1cm,n=7,a=2,b=6,angle=72](2.62,2) +\psBiperiodicFibonacci[unit=0.2,linecolor=yellow,n=7,a=2,b=6,angle=72](2.62,2) +\end{pspicture} +\end{LTXexample} + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid=false](-5,-4)(5,4) +\psgrid[gridlabels=0pt,subgriddiv=0,gridcolor=red,griddots=10] +\psBiperiodicFibonacci[unit=0.1,linecolor=red,linewidth=0.1cm,n=10,a=2,b=5](3.5,-1.5) +\psBiperiodicFibonacci[unit=0.1,linecolor=yellow,n=10,a=2,b=5](3.5,-1.5) +\end{pspicture} +\end{LTXexample} + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}(-5,-5)(5,5) +\psgrid[gridlabels=0pt,subgriddiv=0,gridcolor=red,griddots=10] +\psBiperiodicFibonacci[unit=0.15,linecolor={[rgb]{0 0.5 0}},n=9,a=2,b=5](3.15,-1.35) +\end{pspicture} +\end{LTXexample} + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}(-5,-5)(5,5) +\psBiperiodicFibonacci[unit=0.8,linecolor=black,linewidth=0.1cm,,n=8,a=2,b=3,angle=120](-1,1) +\psBiperiodicFibonacci[unit=0.8,linecolor=white,n=8,a=2,b=3,angle=120](-1,1) +\end{pspicture} +\end{LTXexample} + + + +\section{The command \Lcs{psFibonacciPolyominoes}} + + +The only mandatory parameter is the order of the tile: n. Coordinates are optional, but +they will be used for paving the plan. + + + +\subsection{The order 0, 1, 2, 3, and 4} + +\psset{unit=1cm} +\begin{LTXexample} +\psset{linecolor={[rgb]{0 0.5 0}},fillstyle=solid,fillcolor=red} +\begin{pspicture}[showgrid](0,-1)(1,4) +\psFibonacciPolyominoes[n=0,unit=0.5] +\end{pspicture} +\quad +\begin{pspicture}[showgrid](-2,-1)(1,4) +\psFibonacciPolyominoes[n=1,unit=0.5] +\end{pspicture} +\quad +\begin{pspicture}[showgrid](-3,-1)(2,4) +\psFibonacciPolyominoes[unit=0.5,n=2] +\end{pspicture} +\quad +\begin{pspicture}[showgrid](-3,-1)(2,4) +\psFibonacciPolyominoes[unit=0.2cm,n=3] +\end{pspicture} +\end{LTXexample} + + + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}[showgrid](-7,-2)(4,10) +\psFibonacciPolyominoes[unit=0.2,n=4,fillcolor=cyan,linecolor=blue,fillstyle=solid] +\end{pspicture} +\end{LTXexample} + + + +\iffalse + + +\subsection{Paving the plan with Fibonacci tiles} +This tiling is done with the \Lcs{pSTilingsFibonacci}\Largb{n}\Largb{N}\Largb{T} command which has 3 arguments: the +first is the order of the tile (n = 0, 1, 2 etc.), the second the number of tiles per side of the square, +preferably it must be odd and T = 1 or 2 defines the type of paving. For tiles to be +colored, activate the \texttt{fillstyle=solid} option in a pre-command. + + +\begin{verbatim} +\def\pSTilingsFibonacci#1#2#3{% #1=n #2=nbre de lignes #3=type 1 ou 2 + \pstFPDiv\Nbr{#2}{2}% + \psset[pst-fractal]{n=#1}% + \pstVerb{/n0 #1 def /tabPell [0 1 2 5 12 29 70 169 408] def + /Type #3 def + Type 2 gt {/Type 1 def} if + Type 2 eq { + % (-1)^2P(n),(P(n+1) + /Y1 tabPell n0 1 add get def + /X1 -1 n0 exp tabPell n0 get mul def + }{ + % (P(n+1),(-1)^2P(n) + /X1 tabPell n0 1 add get def + /Y1 -1 n0 exp tabPell n0 get mul def + } ifelse + % le déplacement perpendiculaire + /X2 Y1 neg def + /Y2 X1 def +}% +\pstVerb{/ListColors [0 0 1] def}% +\multido{\I=-\Nbr+1}{#2}{5 + \rput(!X2 \I\space mul Y2 \I\space mul){% + \multido{\i=-\Nbr+1}{#2}{% +%\definecolor[ps]{Couleur}{rgb}{ListColors aload pop}% + \definecolor[ps]{Couleur}{cmyk}{ListColors aload pop 0}% + \rput(!X1 \i\space mul Y1 \i\space mul){\psFibonacciPolyominoes[fillcolor=Couleur]} + \pstVerb{/ListColors [ListColors aload pop 3 1 roll] def}% +}}}}% +\end{verbatim} + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture*}(-9,-7)(8,9) +\psset{unit=0.125,linestyle=solid} +\pSTilingsFibonacci{3}{13}{1}% +\psset{fillstyle=solid,linecolor=blue}% +\pSTilingsFibonacci{3}{7}{1}% +\end{pspicture*} +\end{LTXexample} + + + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture*}(-9,-7)(8,9) +\psset{unit=0.125,linestyle=solid} +\pSTilingsFibonacci{3}{13}{2}% +\psset{fillstyle=solid,linecolor=blue}% +\pSTilingsFibonacci{3}{7}{2}% +\end{pspicture*} +\end{LTXexample} + + +\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\fi + + +\section{The command \Lcs{psFibonacciWord}} + +\psset{unit=1cm} +\begin{LTXexample} +\begin{pspicture}(-1,0)(10,5) +\rput(0.15,5){\small$F_{1}=1$} +\rput(0.15,4.5){\small$F_{2}=0$} +\multido{\i=3+1,\I=3+1,\n=4.0+-0.5}{8}{% + \psFibonacciWord[n=\i](0.5,\n) + \rput(0,\n){$F_{\I}=$}} +\end{pspicture} +\end{LTXexample} + + +\begin{LTXexample} +\begin{pspicture}(-1,0)(10,6) +\psset{n=5} +\multido{\i=1+1,\I=1+1,\n=3.5+-0.5}{6}{% +\psFibonacciWord[i=\i,iFibonacci](0.5,\n\space 0.1 sub) +\rput(0,\n){$F_{5}^{[\i]}=$} +} +\end{pspicture} +\end{LTXexample} + + \section{List of all optional arguments for \texttt{pst-fractal}} + \xkvview{family=pst-fractal,columns={key,type,default}} -\bgroup \nocite{*} \printbibliography -\egroup \printindex diff --git a/Master/texmf-dist/dvips/pst-fractal/pst-fractal.pro b/Master/texmf-dist/dvips/pst-fractal/pst-fractal.pro index 5493d734a73..f0f0de007e9 100644 --- a/Master/texmf-dist/dvips/pst-fractal/pst-fractal.pro +++ b/Master/texmf-dist/dvips/pst-fractal/pst-fractal.pro @@ -1,4 +1,4 @@ -%% $Id: pst-fractal.pro 659 2017-11-26 16:58:16Z herbert $ +%% $Id: pst-fractal.pro 673 2017-12-02 22:04:41Z herbert $ %% %% This is file `pst-fractal.pro', %% @@ -16,7 +16,7 @@ %% `pst-fractal' is a PSTricks package to draw fractal objects %% %% -%% version 0.04 / 2017-11-26 Herbert Voss +%% version 0.05 / 2017-12-02 Herbert Voss % /tx@fractalDict 100 dict def tx@fractalDict begin @@ -130,16 +130,6 @@ tx@fractalDict begin } repeat } def % -/append { -% macro de Jean-Paul Vignault -% extraite de pst-solides3d.pro - 3 dict begin - /tab2 exch def - /tab1 exch def - [ tab1 aload pop tab2 aload pop ] - end -} def -% /Rot-90 { 2 dict begin /y exch def /x exch def @@ -148,12 +138,11 @@ tx@fractalDict begin end } def % -/makeSierVariables { - /Pi [1.5 unit 1 unit - 1 unit 0.5 unit - 1 unit -0.5 unit - 1.5 unit -1 unit - ] def +/tx@SierpinskiCurve { %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + /Pi [1.5 cmunit 1 cmunit + 1 cmunit 0.5 cmunit + 1 cmunit -0.5 cmunit + 1.5 cmunit -1 cmunit ] def % /P0 Pi def /coefficient 1 def @@ -164,40 +153,77 @@ tx@fractalDict begin Pi i get Pi i 1 add get Rot-90 } for ] /Pi exch def - P0 Pi append /P0 exch def - } repeat + P0 Pi concatarray /P0 exch def + } repeat % /P1 {[ 0 2 P0 length 2 sub {/i exch def P0 i get P0 i 1 add get % Rot-90 - -2 unit coefficient mul add exch - -2 unit coefficient mul add exch + -2 cmunit coefficient mul add exch + -2 cmunit coefficient mul add exch } for ] } def % /P2 {[ -0 2 P0 length 2 sub {/i exch def -P0 i get P0 i 1 add get Rot-90 - 2 unit coefficient mul add exch --2 unit coefficient mul add exch -} for -] }def + 0 2 P0 length 2 sub { + /i exch def + P0 i get P0 i 1 add get Rot-90 + 2 cmunit coefficient mul add exch + -2 cmunit coefficient mul add exch + } for ] +} def % /P3 {[ -0 2 P0 length 2 sub {/i exch def -P0 i get P0 i 1 add get Rot-90 Rot-90 - 2 unit coefficient mul add exch -2 unit coefficient mul add exch -} for + 0 2 P0 length 2 sub { + /i exch def + P0 i get P0 i 1 add get Rot-90 Rot-90 + 2 cmunit coefficient mul add exch + 2 cmunit coefficient mul add exch + } for ] } def % /P4 {[ 0 2 P0 length 2 sub {/i exch def P0 i get P0 i 1 add get Rot-90 Rot-90 Rot-90 - -2 unit coefficient mul add exch - 2 unit coefficient mul add exch + -2 cmunit coefficient mul add exch + 2 cmunit coefficient mul add exch } for ] } def + n@ 1 eq {/Sierpinsky P0 def}{ + n@ 1 sub { + /Sierpinsky P1 P2 concatarray P3 concatarray P4 concatarray def + /Tab1 [ + 0 2 Sierpinsky length 2 sub {/i exch def + Sierpinsky i 2 getinterval + } for + ] def + /i@ Sierpinsky length 8 div 2.5 mul cvi def % + /Sierpinsky2 [ + Tab1 length { + Tab1 i@ get + /i@ i@ 1 add def + i@ Tab1 length ge {/i@ 0 def} if + }repeat + ] def + /P0 [ + 0 1 Sierpinsky2 length 1 sub {/i exch def + Sierpinsky2 i get aload pop + } for + ] def + /coefficient coefficient 2 mul def + } repeat + } ifelse +% + newpath + Sierpinsky 0 get Sierpinsky 1 get moveto + 0 2 Sierpinsky length 2 sub {/i exch def + i 2 div Npts ge {exit} if + Sierpinsky i get Sierpinsky i 1 add get lineto + } for + Npts 4 n@ 1 add exp cvi ge { closepath } if + useFill { gsave fillColor fill grestore } if +% + useLineStyle } def % /tx@Phyllotaxis { %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -518,4 +544,341 @@ realtime srand drawfractal } def % end of /tx@Hugo % +/FibonacciFractal { + 20 dict begin + n@ 2 sub { + /Fi F2 F1 concatstrings def + /F1 F2 def + /F2 Fi def + } repeat + /S Fi def + /nS S length def % nombre de lettres + 0 1 nS 2 sub {/j exch def + x1 y1 translate + /x0 0 def /y0 0 def + /k S j 1 getinterval cvi def + k 0 eq { + j 2 mod 0 eq { + angle neg rotate + tx ty lineto + currentpoint /y1 exch def /x1 exch def + /flag 0 def + }{ + angle rotate + tx ty lineto + currentpoint /y1 exch def /x1 exch def + /flag 1 def + } ifelse + }{ + tx ty lineto + currentpoint /y1 exch def /x1 exch def + /flag 2 def + } ifelse + } for + setLineColor + stroke + Pst@juxtaposition { + x1 y1 translate + flag 1 eq {-1 1 scale} if + flag 2 eq {90 rotate 1 -1 scale } if + 0 0 moveto + /x0 0 def /y0 0 def + /F1 (1) def + /F2 (0) def + /x1 0 def /y1 1 cmunit def + x1 y1 lineto + n@ 3 sub{ + /Fi F2 F1 concatstrings def + /F1 F2 def + /F2 Fi def + } repeat + /S Fi def + /nS S length def % nombre de lettres + 0 1 nS 2 sub {/j exch def + x1 y1 translate + /x0 0 def /y0 0 def + /k S j 1 getinterval cvi def + k 0 eq { + j 2 mod 0 eq { + -90 rotate + tx ty lineto + currentpoint /y1 exch def /x1 exch def + }{ + 90 rotate + tx ty lineto + currentpoint /y1 exch def /x1 exch def + } ifelse + }{ + tx ty lineto + currentpoint /y1 exch def /x1 exch def + } ifelse + } for + ColorF + stroke + } if % end Pst@juxtaposition + end +} def +% +/newFibonacciFractal { + 20 dict begin + n@ 2 sub { + /Fi F2 F1 concatstrings def + /F1 F2 def + /F2 Fi def + } repeat + % The Dense Fibonacci Word + /DFW () def + 0 2 F2 length 2 sub { + /i exch def + /I F2 i 2 getinterval def + I (00) eq {DFW (0) concatstrings /DFW exch def } if + I (01) eq {DFW (1) concatstrings /DFW exch def } if + I (10) eq {DFW (2) concatstrings /DFW exch def } if + } for +% morphismes +% newFibonacci +% 0->"", 1->1, 2->2 + /F2 DFW def + /Fi () def + 0 1 F2 length 1 sub { + /i exch def + /I F2 i 1 getinterval def + I (0) eq {Fi m@0 concatstrings /Fi exch def} if + I (1) eq {Fi m@1 concatstrings /Fi exch def} if + I (2) eq {Fi m@2 concatstrings /Fi exch def} if + } for + /S Fi def + /nS S length def % nombre de lettres + 0 1 nS 1 sub { + /j exch def + x1 y1 translate + /x0 0 def /y0 0 def + /k S j 1 getinterval cvi def + k 1 eq {angle neg rotate + tx ty lineto + currentpoint /y1 exch def /x1 exch def + } if + k 2 eq { angle rotate + tx ty lineto + currentpoint /y1 exch def /x1 exch def + } if + k 0 eq { + tx ty lineto + currentpoint /y1 exch def /x1 exch def + } if + } for + setLineColor + stroke + end +} def +% +/i-FibonacciFractal { + 20 dict begin + /F0 (0) def + /Fi () def + i@ 1 sub { + Fi (0) concatstrings /Fi exch def + } repeat + Fi (1) concatstrings + /F1 exch def + n@ { + F1 F0 concatstrings + /Fi exch def + /F0 F1 def + /F1 Fi def + } repeat + /S Fi def + 0 0 translate + 0 0 moveto + currentpoint /y0 exch def /x0 exch def + 0 1 cmunit lineto + currentpoint /y1 exch def /x1 exch def + /tx {x1 x0 sub} def + /ty {y1 y0 sub} def +% + /nS S length def % nombre de lettres + 0 1 nS 2 sub { + /j exch def + x1 y1 translate + /x0 0 def /y0 0 def + /k S j 1 getinterval cvi def + k 0 eq { + j 2 mod 0 eq { + angle neg rotate + tx ty lineto + currentpoint /y1 exch def /x1 exch def + }{ + angle rotate + tx ty lineto + currentpoint /y1 exch def /x1 exch def + } ifelse + }{ + tx ty lineto + currentpoint /y1 exch def /x1 exch def + } ifelse + } for + setLineColor + stroke + end +} def +% +/k-FibonacciFractal { + 20 dict begin + /f0 (0) def + /fi (0) def + k@ 2 sub { + fi (0) concatstrings /fi exch def + } repeat + fi (1) concatstrings + /f1 exch def + /fi f1 def + n@ 1 sub { + k@ 1 sub { f1 fi concatstrings /f1 exch def } repeat + f1 f0 concatstrings /f1 exch def + /f0 fi def + /fi f1 def + } repeat + /S f1 def + t@x cmunit_1 28.45 mul t@y cmunit_1 28.45 mul translate + 0 0 moveto + currentpoint /y0 exch def /x0 exch def + 0 1 cmunit lineto + currentpoint /y1 exch def /x1 exch def + /tx {x1 x0 sub} def + /ty {y1 y0 sub} def + /nS S length def % nombre de lettres + 0 1 nS 1 sub {/j exch def + x1 y1 translate + /x0 0 def /y0 0 def + /k S j 1 getinterval cvi def + k 0 eq { + j 2 mod 0 eq { + angle neg rotate + tx ty lineto + currentpoint /y1 exch def /x1 exch def + } + { + angle rotate + tx ty lineto + currentpoint /y1 exch def /x1 exch def + } + ifelse +} { + tx ty lineto + currentpoint /y1 exch def /x1 exch def + } ifelse + } for + setLineColor + stroke + end +} def +% +/Biperiodic-FibonacciWords { + 20 dict begin +/f0 () def +/f1 (0) def +/f2 a@ 1 sub {(0) f0 concatstrings /f0 exch def} repeat f0 (1) concatstrings def +3 1 n@ {/i exch def +/fi () def +i 2 mod 0 eq { + a@ { fi f2 concatstrings /fi exch def } repeat + }{ + b@ { fi f2 concatstrings /fi exch def } repeat + } ifelse + fi f1 concatstrings /fi exch def + /f1 f2 def + /f2 fi def +} for +/S f2 def +t@x cmunit_1 28.45 mul t@y cmunit_1 28.45 mul translate +0 0 moveto +currentpoint /y0 exch def /x0 exch def +1 cmunit 0 cmunit lineto +currentpoint /y1 exch def /x1 exch def +/tx {x1 x0 sub} def +/ty {y1 y0 sub} def +/nS S length def % nombre de lettres +0 1 nS 1 sub {/j exch def +x1 y1 translate +/x0 0 def /y0 0 def +/k S j 1 getinterval cvi def +k 0 eq { +j 2 mod 0 eq { + angle neg rotate + tx ty lineto + currentpoint /y1 exch def /x1 exch def + } + { + angle rotate + tx ty lineto + currentpoint /y1 exch def /x1 exch def + } + ifelse +} { +tx ty lineto +currentpoint /y1 exch def /x1 exch def +} ifelse +} for + setLineColor +stroke end + }def +% +/InverseLR { + 1 dict begin + /str exch def + 0 1 str length 1 sub {/i exch def + str i 1 getinterval (L) eq {str i (R) putinterval }{str i (L) putinterval }ifelse + } for + str + end +} def +% +/FibonacciPolyominoes { + 20 dict begin + gsave + t@x t@y translate + /q0 () def + /q1 (R) def + /N n@ 3 mul 1 add def + 2 1 N { + /n exch def + n 3 mod 2 eq {/qi q1 q0 concatstrings def} + {/qi q1 q0 InverseLR concatstrings def} ifelse + /q0 q1 def + /q1 qi def + } for + /q_1 q1 reversestring def + /qii () def + /Q 3 {qii q1 concatstrings /qii exch def } repeat + qii q_1 reversestring concatstrings def +% remarque +% identique /Q 4{qii q1 concatstrings /qii exch def} repeat qii def + /tx {x1 x0 sub} def + /ty {y1 y0 sub} def + /y0 0 def /x0 0 def + /x1 x0 0 cmunit add def /y1 y0 1 cmunit add def + newpath + x0 y0 moveto + x1 y1 lineto + 0 1 Q length 1 sub {/i exch def + x1 y1 translate + Q i 1 getinterval (L) eq { + 90 rotate + tx ty lineto + currentpoint /y1 exch def /x1 exch def + }{ + 90 neg rotate + tx ty lineto + currentpoint /y1 exch def /x1 exch def + }ifelse + } for + closepath + setFillColor + setLineColor + grestore + end +} def + +% +end \ No newline at end of file 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 2c43333f82d..926173f4f10 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 659 2017-11-26 16:58:16Z herbert $ +%% $Id: pst-fractal.tex 673 2017-12-02 22:04:41Z 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.08} -\def\filedate{2017/11/26} +\def\fileversion{0.09} +\def\filedate{2017/12/02} \message{`PST-fractal' v\fileversion, \filedate\space (hv)} % \edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax @@ -73,7 +73,220 @@ \define@key[psset]{pst-fractal}{dotcolor}{\pst@getcolor{#1}\psdotcolor} \define@key[psset]{pst-fractal}{N}{\def\pst@fractal@N{#1}} \psset[pst-fractal]{n=3,N=all,dotcolor=red} + +\define@key[psset]{pst-fractal}{i}{\def\pst@fractal@i{#1 }} % i-Fibonacci +\define@key[psset]{pst-fractal}{morphism}{\def\pst@fractal@morphism{#1}} % les substitutions +\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\psFibonacci{\pst@object{psFibonacci}} +\def\psFibonacci@i{% + \addbefore@par{n=10, angle=90}% + \begin@SpecialObj + \addto@pscode{ + /cmunit {\pst@number\psunit mul} bind def % mise à l'échelle + /angle \pst@fractal@angle def + /n@ \pst@fractal@n def + n@ 3 le {/n@ 3 def} if + /ColorF { \pst@usecolor\pscolorF } def + /setLineColor { \pst@usecolor\pslinecolor } def + /Pst@juxtaposition \ifPst@juxtaposition true \else false \fi def + /F1 (1) def + /F2 (0) def + /tx { x1 x0 sub } def + /ty { y1 y0 sub } def + /x0 0 def /y0 0 def + x0 y0 moveto + /x1 0 def /y1 1 cmunit def + x1 y1 lineto + tx@fractalDict begin FibonacciFractal end + }% + \showpointsfalse + \end@SpecialObj + \ignorespaces} +% +% +\def\psNewFibonacci{\def\pst@par{}\pst@object{psNewFibonacci}} +\def\psNewFibonacci@i{% + \addbefore@par{n=10, angle=90}% + \begin@SpecialObj + \addto@pscode{ + /cmunit {\pst@number\psunit mul} bind def % mise à l'échelle + /angle \pst@fractal@angle def + /n@ \pst@fractal@n def + n@ 3 le {/n@ 3 def} if + /morhism [\pst@fractal@morphism] def + /setLineColor { \pst@usecolor\pslinecolor } def + /m@0 morhism 0 get def + /m@1 morhism 1 get def + /m@2 morhism 2 get def + /F1 (1) def + /F2 (0) def + /tx {x1 x0 sub} def + /ty {y1 y0 sub} def + /x0 0 def /y0 0 def + x0 y0 moveto + /x1 0 def /y1 1 cmunit def + x1 y1 lineto + tx@fractalDict begin newFibonacciFractal end + }% + \showpointsfalse + \end@SpecialObj + \ignorespaces} +% +% i-Fibonacci +\def\psiFibonacci{\def\pst@par{}\pst@object{psiFibonacci}} +\def\psiFibonacci@i{% + \addbefore@par{angle=90}% + \begin@SpecialObj + \addto@pscode{ + /cmunit {\pst@number\psunit mul} def + /angle \pst@fractal@angle def + /n@ \pst@fractal@n def + n@ 3 le {/n@ 3 def} if + /i@ \pst@fractal@i def + /setLineColor { \pst@usecolor\pslinecolor } bind def + tx@fractalDict begin i-FibonacciFractal end + }% + \showpointsfalse + \end@SpecialObj + \ignorespaces} +% +% 30 septembre 2017 +% k-Fibonacci +\define@key[psset]{pst-fractal}{k}{\def\pst@fractal@k{#1 }} % k +\psset[pst-fractal]{k=5} +% +\def\pskFibonacci{\def\pst@par{}\pst@object{pskFibonacci}} +\def\pskFibonacci@i{\@ifnextchar({\pskFibonacci@ii}{\pskFibonacci@ii(0,0)}} +\def\pskFibonacci@ii(#1){% + \addbefore@par{k=5,angle=90}% + \begin@SpecialObj + \pst@@getcoor{#1}% + \addto@pscode{ + \pst@coor /t@y ED /t@x ED + /cmunit {\pst@number\psunit mul} bind def % mise à l'échelle + /cmunit_1 {\pst@number\psunit div} bind def % mise à l'échelle + /angle \pst@fractal@angle def + /n@ \pst@fractal@n def + /k@ \pst@fractal@k def + /setLineColor { \pst@usecolor\pslinecolor } def + tx@fractalDict begin k-FibonacciFractal end + }% + \showpointsfalse + \end@SpecialObj + \ignorespaces} +% +% 1 octobre 2017 +% Biperiodic-Fibonacci-Words +\define@key[psset]{pst-fractal}{a}{\def\pst@fractal@a{#1 }} % k +\psset[pst-fractal]{a=5} +\define@key[psset]{pst-fractal}{b}{\def\pst@fractal@b{#1 }} % k +\psset[pst-fractal]{b=5} +% +\def\psBiperiodicFibonacci{\def\pst@par{}\pst@object{psBiperiodicFibonacci}} +\def\psBiperiodicFibonacci@i{\@ifnextchar({\psBiperiodicFibonacci@ii}{\psBiperiodicFibonacci@ii(0,0)}} +\def\psBiperiodicFibonacci@ii(#1){% + \addbefore@par{a=5,b=5,angle=90,n=3,k=5} + \begin@SpecialObj + \pst@@getcoor{#1}% + \addto@pscode{ + \pst@coor /t@y ED /t@x ED + /cmunit {\pst@number\psunit mul} bind def + /cmunit_1 {\pst@number\psunit div} bind def + /a@ \pst@fractal@a def + /b@ \pst@fractal@b def + /angle \pst@fractal@angle def + /n@ \pst@fractal@n def + /k@ \pst@fractal@k def + /setLineColor { \pst@usecolor\pslinecolor } def + tx@fractalDict begin Biperiodic-FibonacciWords end + }% + \showpointsfalse + \end@SpecialObj + \ignorespaces} +% +% 3 octobre 2017 +% +\def\psFibonacciPolyominoes{\pst@object{psFibonacciPolyominoes}} +\def\psFibonacciPolyominoes@i{\@ifnextchar({\psFibonacciPolyominoes@ii}{\psFibonacciPolyominoes@ii(0,0)}} +\def\psFibonacciPolyominoes@ii(#1){% + \addbefore@par{n=3} + \begin@SpecialObj + \pst@@getcoor{#1}% + \addto@pscode{ + \pst@coor /t@y ED /t@x ED + /cmunit {\pst@number\psunit mul} bind def % mise à l'échelle + /n@ \pst@fractal@n def + /setFillColor { + \ifx\psk@fillstyle\relax\else + gsave \pst@usecolor\psfillcolor fill grestore + \fi } def + /setLineColor{ \ifx\pslinestyle\@none\else stroke \fi } def + tx@fractalDict begin FibonacciPolyominoes end + }% + \showpointsfalse + \end@SpecialObj + \ignorespaces} +% +% type de fonte et taille +\define@boolkey[psset]{pst-fractal}[Pst@]{DFW}[true]{} % +\define@boolkey[psset]{pst-fractal}[Pst@]{iFibonacci}[true]{} % +\psset[pst-fractal]{DFW=false,iFibonacci=false} % +% +\def\psFibonacciWord{\pst@object{psFibonacciWord}} +\def\psFibonacciWord@i{\@ifnextchar({\psFibonacciWord@ii}{\psFibonacciWord@ii(0,0)}} +\def\psFibonacciWord@ii(#1,#2){% + \addbefore@par{%PSfont=Times-Roman, + fontscale=8} + \begin@SpecialObj + \addto@pscode{ + /n@ \pst@fractal@n def + /i@ \pst@fractal@i def + n@ 3 le {/n@ 3 def} if + /cmunit {\pst@number\psunit mul} bind def % mise à l'échelle + /PSfont {\psk@PSfont} def + PSfont findfont \psk@fontscale scalefont setfont + /F1 (1) def + /F2 (0) def + n@ 2 sub{ + /Fi F2 F1 concatstrings def + /F1 F2 def + /F2 Fi def + } repeat + \ifPst@DFW + /Fi () def + 0 2 F2 length 2 sub {/i exch def + /I F2 i 2 getinterval def + I (00) eq {Fi (0) concatstrings /Fi exch def} if + I (01) eq {Fi (1) concatstrings /Fi exch def} if + I (10) eq {Fi (2) concatstrings /Fi exch def} if + } for + \fi + \ifPst@iFibonacci + /F0 (0) def + /Fi () def + i@ 1 sub { + Fi (0) concatstrings /Fi exch def + } repeat + Fi (1) concatstrings + /F1 exch def + n@ { + F1 F0 concatstrings + /Fi exch def + /F0 F1 def + /F1 Fi def + } repeat + \fi + #1 cmunit #2 cmunit moveto Fi show + }% + \showpointsfalse + \end@SpecialObj + \ignorespaces} + % \def\psfractal{\pst@object{psfractal}} \def\psfractal@i{\@ifnextchar({\psfractal@ii}{\psfractal@ii(-1,-1)}}% @@ -146,54 +359,29 @@ \end@OpenObj% } % -\def\psSier@vi{% Siepinski curve +\def\psSier@vi{% Sierpinski curve + \addbefore@par{n=3,N=all,dotcolor=red}% \begin@SpecialObj \addto@pscode{ + /useFill \ifx\psk@fillstylename\@none false \else true \fi def + /fillColor { \pst@usecolor\psfillcolor } def +% \else +% /useFillColor {  +% \ifx\psk@fillstylename\@none +% \else +% gsave \pst@usecolor\psfillcolor fill grestore +% \fi +% } def + /useLineStyle { \ifx\pslinestyle\@none\else \psls@solid stroke \fi } def /n@ \pst@fractal@n def /NbrePts (\pst@fractal@N) def + /dotcolor { \pst@usecolor\psdotcolor } def + /cmunit { \pst@number\psunit mul } 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 - /unit { \pst@number\psunit mul } def - tx@fractalDict begin - makeSierVariables -% - n@ 1 eq {/Sierpinsky P0 def}{ - n@ 1 sub { - /Sierpinsky P1 P2 append P3 append P4 append def -% - /Tab1 [ - 0 2 Sierpinsky length 2 sub {/i exch def - Sierpinsky i 2 getinterval - } for - ] def - /i@ Sierpinsky length 8 div 2.5 mul cvi def % - /Sierpinsky2 [ - Tab1 length { - Tab1 i@ get - /i@ i@ 1 add def - i@ Tab1 length ge {/i@ 0 def} if - }repeat - ] def -% - /P0 [ - 0 1 Sierpinsky2 length 1 sub {/i exch def - Sierpinsky2 i get aload pop - } for - ] def - /coefficient coefficient 2 mul def - } repeat } ifelse -% - newpath - Sierpinsky 0 get Sierpinsky 1 get moveto - 0 2 Sierpinsky length 2 sub {/i exch def - i 2 div Npts ge {exit} if - Sierpinsky i get Sierpinsky i 1 add get lineto - } for - Npts 4 n@ 1 add exp cvi ge {closepath} if - \ifx\psk@fillstyle\relax\else gsave \pst@usecolor\psfillcolor fill grestore\fi - \ifx\pslinestyle\@none\else \psls@solid stroke \fi + tx@fractalDict begin tx@SierpinskiCurve \ifshowpoints - 0 2 Sierpinsky length 2 sub {/i exch def + 0 2 Sierpinsky length 2 sub { + /i exch def i 2 div Npts ge {exit} if Sierpinsky i get Sierpinsky i 1 add get diff --git a/Master/texmf-dist/tex/latex/pst-fractal/pst-fractal.sty b/Master/texmf-dist/tex/latex/pst-fractal/pst-fractal.sty index 24f45c6acaf..bddc0e2c169 100644 --- a/Master/texmf-dist/tex/latex/pst-fractal/pst-fractal.sty +++ b/Master/texmf-dist/tex/latex/pst-fractal/pst-fractal.sty @@ -5,7 +5,7 @@ \input{pst-fractal.tex} \IfFileExists{pst-fractal.pro}{% \ProvidesFile{pst-fractal.pro} - [2017/11/26 v. 0.04, PostScript prologue file (hv)] + [2017/12/02 v. 0.05, PostScript prologue file (hv)] \@addtofilelist{pst-fractal.pro}}{}% \ProvidesFile{pst-fractal.tex} [\filedate\space v\fileversion\space `PST-fractal' (hv)] -- cgit v1.2.3