Application Center - Maplesoft

# Superfractal forms

You can switch back to the summary page by clicking here.

Superfractal forms

Wieslaw Kotarski (kotarski@math.us.edu.pl) & Agnieszka Lisowska (alisow@ux2.math.us.edu.pl

Institute of Computer Science

Silesian University

Bedzinska 39

41-200 Sosnowiec, Poland

(Abstract)

The aim of this worksheet is to present Maple users some experiments related to superfractals which are a new kind of fractal objects recently discovered by M. Barnsley [4]. Classical fractals are self-similar objects that are uniquelly determined by their IFSs whereas in case of superfractals some probabilistic mechanism is implemented.

1. Introduction

The notion of superfractals can be explained on the example [3]  given below. Take two IFSs F={f1,f2} and G={g1,g2},

where

Attractors generated by the above IFSs take the form presented in Fig. 1, where the upper part of the fractal is generated by F, whereas the lower part by G..

Fig. 1. Two attractors (upper F and lower G).

Let us carry out the following experiment. In two buffers the left L and the right R arbitrary initial sets are put. Next, the contents of both buffers are modified using the following probabilistic mechanism [3]:

1. Select an IFS (F or  G). Then select a buffer (L or  R) and draw its content changed by first transformation. Again, select a buffer (it may be the one used earlier) and draw it changed by second transformation. Finally, sum up the results (union of sets) of both transformations obtaining a new buffer L'.

2. Select an IFS (it may be the one used earlier). Then select a buffer (again L or R) and draw its content changed by first transformation. Select another buffer and draw it changed by second transformation. Finally, sum up the results of both transformations obtaining a new buffer R'.

3. Let L:=L' and  R:=R' Go to step 1.

After performing these steps new contents of buffers L and R are obtained. That process is repeated in such a way that probabilities of IFS and buffer choosing are equal to 1/2. After several iterations obtained contents of both buffers are independent on initial sets, at the very beginning stored in both buffers. Obtained attractors are probabilistic variations of input objects. They form a collection of fractal forms called superfractal. Some elements of superfractal collection, resembling necklases, are presented in Fig. 2.

Fig. 2. Some elements of superfractal collection obtained using F and G attractors.

The experiment described above can be performed  with  larger number of IFSs and buffers and with different probabilities of choosing IFSs and buffers.  Because of probabilistic character of  superfractal algorithm in every run of the program one can obtain different fascinating fractal forms. So then, it is suggested to recalculate the worksheet several times!

2. Maple Program

 > restart;

 > with(linalg):

 > with(plots):

 > with(plottools):

Given two IFSs

 > f1:=transform((x, y)->evalf([1/2*x+3/8*y-1/16, 1/2*x-3/8*y+9/16])):

 > f2:=transform((x, y)->evalf([1/2*x-3/8*y+9/16, -1/2*x-3/8*y+17/16])):

 > g1:=transform((x, y)->evalf([1/2*x+3/8*y-1/16, -1/2*x+3/8*y+7/16])):

 > g2:=transform((x, y)->evalf([1/2*x-3/8*y+9/16, 1/2*x+3/8*y-1/16])):

Procedure n - number of iterations, p=0 for buffer L, p=1 for buffer R

 > supfrac:=proc(L,R,p,n)  local L0,R0,d1,d2,d3,d4,h;       d1:=rand(0..1):  ## IFS drawing    if d1()=0 then       h:=[f1,f2];    else       h:=[g1,g2];    fi;    d2:=rand(0..3); ## Buffer drawing and contents modification of L          if d2()=0 then    L0:=display({h[1](L),h[2](L)});    elif d2()=1 then    L0:=display({h[1](L),h[2](R)});    elif d2()=2 then    L0:=display({h[1](R),h[2](L)});    else    L0:=display({h[1](R),h[2](R)});    fi;    d3:=rand(0..1); ## IFS drawing            if d3()=0 then       h:=[f1,f2];    else       h:=[g1,g2];    fi;    d4:=rand(0..3); ## Buffer drawing and contents modification of R    if d4()=0 then    R0:=display({h[1](L),h[2](L)});    elif d4()=1 then    R0:=display({h[1](L),h[2](R)});    elif d4()=2 then    R0:=display({h[1](R),h[2](L)});    else    R0:=display({h[1](R),h[2](R)});    fi; ## Buffer choice for displaying its contents (p=0 for L and p=1 for R)    if n = 0 then    if p=0 then display(L);    else display(R);    fi;    else supfrac(L0,R0,p,n-1); ## Recurrence        fi: end:

 >

3. Examples

3.1. Contents of one buffer is displayed.

 > display(supfrac(polygonplot([[0,0],[1,0],[1,1]]),polygonplot([[0,0],[1,0],[1,1]]),1,10),axes=none,color=yellow,scaling=constrained);

 > dis1:=display(seq(supfrac(polygonplot([[0,0],[1,0],[1,1]]),polygonplot([[0,0],[1,0],[1,1]]),0,i),i=0..8),scaling=constrained,insequence=true,axes=none,color=yellow):

 > display(dis1);

 > dis2:=display(seq(supfrac(polygonplot([[0,0],[1,0],[1,1]]),polygonplot([[0,0],[1,0],[1,1]]),1,i),i=0..8),scaling=constrained,insequence=true,axes=none,color=yellow):

 > display(dis2);

 > dis1:=display(seq(supfrac(polygonplot([[0,0],[1,0],[1,1]]),polygonplot([[0,0],[1,0],[1,1]]),0,8),i=0..8),scaling=constrained,insequence=true,axes=none,color=yellow):

 > dis2:=display(seq(supfrac(polygonplot([[0,0],[1,0],[1,1]]),polygonplot([[0,0],[1,0],[1,1]]),1,8),i=0..8),scaling=constrained,insequence=true,axes=none,color=yellow):

 > display(dis1);

 > display(dis2);

3.2. Joined contents of both buffers is displayed. Observe, that one can obtain nice fractal forms. Some of them may even inspire motifs for jewellery!

 > display(supfrac(polygonplot([[0,0],[1,0],[1,1]]),polygonplot([[0,0],[1,0],[1,1]]),1,10),supfrac(polygonplot([[0,0],[1,0],[1,1]]),polygonplot([[0,0],[1,0],[1,1]]),1,10),axes=none,color=yellow);

 > dis1:=display(seq(display(supfrac(polygonplot([[0,0],[1,0],[1,1]]),polygonplot([[0,0],[1,0],[1,1]]),0,i),supfrac(polygonplot([[0,0],[1,0],[1,1]]),polygonplot([[0,0],[1,0],[1,1]]),1,i)),i=0..8),scaling=constrained,insequence=true,axes=none,color=yellow):

 > display(dis1);

 > dis2:=display(seq(display(supfrac(polygonplot([[0,0],[1,0],[1,1]]),polygonplot([[0,0],[1,0],[1,1]]),0,i),supfrac(polygonplot([[0,0],[1,0],[1,1]]),polygonplot([[0,0],[1,0],[1,1]]),1,i)),i=0..8),scaling=constrained,insequence=true,axes=none,color=yellow):

 > display(dis2);

 > dis1:=display(seq(display(supfrac(polygonplot([[0,0],[1,0],[1,1]]),polygonplot([[0,0],[1,0],[1,1]]),0,i),supfrac(polygonplot([[0,0],[1,0],[1,1]]),polygonplot([[0,0],[1,0],[1,1]]),1,i)),i=0..8),scaling=constrained,insequence=true,axes=none,color=yellow):

 > dis2:=display(seq(display(supfrac(polygonplot([[0,0],[1,0],[1,1]]),polygonplot([[0,0],[1,0],[1,1]]),0,i),supfrac(polygonplot([[0,0],[1,0],[1,1]]),polygonplot([[0,0],[1,0],[1,1]]),1,i)),i=0..8),scaling=constrained,insequence=true,axes=none,color=yellow):

 > display(dis1);

 > display(dis2);

 >

 >

4. Further experiments

It is suggested to replace IFSs from the begining of this worksheet by the following given below. IFS F={f1,f2} generates the upper part, whereas IFS G={g1,g2} generates the lower part of the fractals presented in figures below. Some of generated superfractal objects present nice aesthetic art forms that can be used in creation of ornaments or talismans.

4.1. Example 1

 > f1:=transform((x, y)->evalf([1/2*x-3/28*y, 1/2*x+11/20*y])):

 > f2:=transform((x, y)->evalf([1/2*x+3/28*y+1/2, -1/2*x+11/20*y+1/2])):

 > g1:=transform((x, y)->evalf([1/2*x-7/44*y, -1/2*x-11/20*y])):

 > g2:=transform((x, y)->evalf([1/2*x+7/44*y+1/2, 1/2*x-11/20*y-1/2])):

 >

 >

4.2. Example 2

 > f1:=transform((x, y)->evalf([1/2*x+3/28*y, 1/2*x-11/20*y])):

 > f2:=transform((x, y)->evalf([1/2*x-3/28*y+1/2, -1/2*x-11/20*y+1/2])):

 > g1:=transform((x, y)->evalf([1/2*x-7/44*y, -1/2*x-11/20*y])):

 > g2:=transform((x, y)->evalf([1/2*x+7/44*y+1/2, 1/2*x-11/20*y-1/2])):

 >

 >

 >

4.3. Example 3

 > f1:=transform((x, y)->evalf([1/2*x-3/28*y, 1/2*x+11/20*y])):

 > f2:=transform((x, y)->evalf([1/2*x+3/28*y+1/2, -1/2*x+11/20*y+1/2])):

 > g1:=transform((x, y)->evalf([1/2*x+7/44*y, -1/2*x+11/20*y])):

 > g2:=transform((x, y)->evalf([1/2*x-7/44*y+1/2, 1/2*x+11/20*y-1/2])):

 >

 >

4.4. Example 4

 > f1:=transform((x, y)->evalf([1/2*x+3/28*y, 1/2*x-11/20*y])):

 > f2:=transform((x, y)->evalf([1/2*x-3/28*y+1/2, -1/2*x-11/20*y+1/2])):

 > g1:=transform((x, y)->evalf([1/2*x+6/25*y, -1/2*x+11/20*y])):

 > g2:=transform((x, y)->evalf([1/2*x-6/25*y+1/2, 1/2*x+11/20*y-1/2])):

 >

 >

 >

5. Final Remarks

Classical fractals [1], [2] , that are self-similar deterministic objects, are described by IFSs. Their shapes are entirely determined by coefficients of affine transformations. In Nature such ideal fractal objects cannot be found. Usually, natural fractal forms are not ideally self-similar and they are charaterized by some diversity in shapes. Superfractal mechanism implements randomless to deterministic fractals. So then,  any superfractal collection  resembles natural objects much better than classical deterministic fractals. Superfractal forms inherit feature shapes from parent fractals defined by their IFSs. It is worth to mention that probabilistic mechanism can be joined with deterministic factor inserted by control points of fractals. Such approach, presented in [5], assures further possibilities to generate a great variety of fractal forms.

It should be pointed out that all superfractal forms generated in this worksheet represent connected sets. Such connected forms can be obtained under some restrictions imposed on IFSs. Namely, IFSs must have comman fixed points to produce "continuous" superfractal forms.

6. References

[1] Mandelbrot B., The Fractal Geometry of Nature, Freeman and Company, San Francisco, 1983.
[2] Barnsley M., Fractals Everywhere, Academic Press, New York, 1988.
[3] Barnsley M., Hutchinson J., Stenflo ?., V-variable Fractals and Superfractals, 2003,

http://wwwmaths.anu.edu au/~barnsley/pdfs/V-var_super_fractals.pdf.
[4 ]Barnsley M., Superfractals, Cambridge University Press, New York, Melbourne, 2006.
[5] Kotarski W., Lisowska A., Domider R., Superfractals in Graphical Object Modelling, Proceedings of Conference Computer Methods and Systems, Krak?w, Poland,  2007, 329-334.

Legal Notice: The copyright for this application is owned by the author(s). Neither Maplesoft nor the author are responsible for any errors contained within and are not liable for any damages resulting from the use of this material. This application is intended for non-commercial, non-profit use only. Contact the author for permission if you wish to use this application in for-profit activities.