summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/pstricks-examples/14-07-2.ltx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex/pstricks-examples/14-07-2.ltx')
-rw-r--r--Master/texmf-dist/doc/latex/pstricks-examples/14-07-2.ltx177
1 files changed, 177 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/pstricks-examples/14-07-2.ltx b/Master/texmf-dist/doc/latex/pstricks-examples/14-07-2.ltx
new file mode 100644
index 00000000000..0f0cb74d8c8
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pstricks-examples/14-07-2.ltx
@@ -0,0 +1,177 @@
+%%
+%% Ein Beispiel der DANTE-Edition
+%%
+%%
+%% Copyright (C) 2010 Herbert Voss
+%%
+%% It may be distributed and/or modified under the conditions
+%% of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%%
+%% See http://www.latex-project.org/lppl.txt for details.
+%%
+%%
+%% ====
+% Show page(s) 1
+%%
+\documentclass[]{exaarticle}
+\pagestyle{empty}
+\setlength\textwidth{392.64803pt}
+\StartShownPreambleCommands
+\usepackage{pstricks,pst-xkey}
+\SpecialCoor
+\makeatletter
+\pst@addfams{pst-chaos} % eine eigene Familie festlegen
+\newdimen\psk@chaos@xWidth
+\define@key[psset]{pst-chaos}{xWidth}{\pssetlength\psk@chaos@xWidth{#1}}
+\newdimen\psk@chaos@yWidth
+\define@key[psset]{pst-chaos}{yWidth}{\pssetlength\psk@chaos@yWidth{#1}}
+\define@key[psset]{pst-chaos}{dColor}{\def\psk@dColor{#1 }}
+\define@boolkey[psset]{pst-chaos}[Pst@]{Julia}[true]{}
+\psset[pst-chaos]{xWidth=1cm,yWidth=1cm,dColor=1,Julia}
+
+\define@key[psset]{pst-chaos}{plotpoints}{\pst@checknum{#1}\pst@chaos@plotpoints}
+\psset[pst-chaos]{plotpoints=100}
+
+\def\psSier{\pst@object{psSier}}
+\def\psSier@i(#1)(#2)(#3){%
+ \pst@getcoor{#1}\pst@tempA
+ \pst@getcoor{#2}\pst@tempB
+ \pst@getcoor{#3}\pst@tempC
+ \begin@SpecialObj%
+ \addto@pscode{
+ /Koor [ \pst@tempA
+ \pst@tempB
+ \pst@tempC ] def
+ /Sx 0 def /Sy 0 def
+ /setzePixel { % x y auf dem Stack
+0.5 0 360 arc stroke
+ } def
+ /neuePosition { % Punktnummer auf dem Stack
+Koor exch 2 getinterval aload pop
+/y exch def /x exch def
+x Sx sub 2 div Sx add /Sx exch def
+y Sy sub 2 div Sy add /Sy exch def
+Sx Sy setzePixel
+ } def
+ /zeichneRahmen {
+Koor aload pop
+newpath
+moveto
+nKoor 1 sub { % nur noch n-1 mal
+ lineto
+} repeat
+gsave 0.9 setgray fill grestore
+\pst@usecolor\pslinecolor
+closepath
+stroke
+% 0 setgray
+ } def
+ /nKoor Koor length 2 div 0.5 add cvi def % Anzahl Punkte
+ zeichneRahmen
+ \pst@chaos@plotpoints\space cvi {
+rand nKoor mod
+dup add neuePosition
+ } repeat
+ }% end add@pscode
+ \end@SpecialObj%
+}
+\def\pschaos{\pst@object{pschaos}}
+\def\pschaos@i{\@ifnextchar({\pschaos@ii}{\pschaos@ii(-1,-1)}}%
+\def\pschaos@ii(#1,#2){\@ifnextchar({\pschaos@iii(#1,#2)}{\pschaos@ii(#1,#2)(1,1)}}%
+\def\pschaos@iii(#1,#2)(#3,#4){%
+ \begin@SpecialObj%
+ \pspicture(\psk@chaos@xWidth,\psk@chaos@yWidth)%
+ \addto@pscode{
+ /MinX #1 def
+ /MaxX #3 def
+ /MinY #2 def
+ /MaxY #4 def
+ /MaxXPixel \pst@number\psk@chaos@xWidth def
+ /MaxYPixel \pst@number\psk@chaos@yWidth def
+ /PixelDicke 0.5 def
+ /maxIter 100 def
+ /maxR 100 def
+%
+ /dx MaxX MinX sub MaxXPixel div def
+ /dy MaxY MinY sub MaxYPixel div def
+%
+ /convertX {% erwartet x-Wert auf dem Stack
+ MaxX sub dx div % Umrechnung in Pixel
+ } def
+ /convertY {% erwartet x-Wert auf dem Stack
+ MinY sub dy div % Umrechnung in Pixel
+ } def
+ /convertXY {% erwartet x y auf dem Stack
+ convertY exch convertX exch
+ } def
+%
+ /setzePixel {% x y auf dem Stack in Benutzerkoordinaten
+ convertXY
+ PixelDicke 0 360 arc fill
+ } def
+ MinX dx MaxX {
+ /x exch def
+ MinY dy MaxY {
+/y exch def
+/iter 0 def
+ \ifPst@Julia
+ /cx 0 def
+ /cy 0 def
+/zx x def
+/zy y def
+ \else
+ /cx x def
+ /cy y def
+/zx 0 def
+/zy 0 def
+ \fi
+/plot true def
+maxIter {
+ zx dup mul zy dup mul add maxR gt {/plot false def exit}
+{% Calculate next value
+ 2 zx zy mul mul cy add
+ /zx zx dup mul zy dup mul sub cx add def
+ /zy exch def
+ /iter iter \psk@dColor add def
+ } ifelse
+} repeat
+plot{
+ 0 0 0 setrgbcolor
+ x y setzePixel
+}{
+ 1 iter sub 0 1 setrgbcolor
+ iter 1 ge {0 iter 1 sub 2 iter sub setrgbcolor} if
+ iter 2 ge {iter 2 sub 1 0 setrgbcolor} if
+ iter 3 ge {1 4 iter sub .35 mul .65 add 0 setrgbcolor} if
+ iter 4 ge {1 5 iter sub .65 mul 0 setrgbcolor} if
+ x y setzePixel stroke
+}ifelse % Plot point if point is in set
+ } for
+ } for
+ }% end add@pscode
+ \endpspicture% end box
+ \end@SpecialObj%
+}
+\makeatother
+\StopShownPreambleCommands
+\begin{document}
+\begin{center}
+\begin{minipage}{0.45\textwidth}\centering
+Eine Mandelbrotmenge: \\[10pt]
+\begin{pspicture}(6,6)
+\pschaos[xWidth=6cm,yWidth=6cm,dColor=1,Julia=false](-2,-1.25)(0.5,1.25)
+\end{pspicture}
+\end{minipage}~
+\begin{minipage}{0.45\textwidth}\centering
+Ein Sierpinskidreieck: \\[10pt]
+\begin{pspicture}(6,6)
+ \psSier[plotpoints=5000](0,0)(2,6)(6,0)
+\end{pspicture}
+\end{minipage}
+
+\bigskip
+Eine Juliamenge:\\[10pt]
+\pschaos[xWidth=5cm,yWidth=5cm,dColor=0.5](-1.5,-1.5)(1.5,1.5)
+\end{center}
+\end{document}