dh-Materialien
Maple   
Übungen

Das Sierpinski-Dreieck

> restart; with(geometry):

Definition des gleichseitigen Dreiecks ABC 
mit A = (0|0); B = (1|0) und C = (0,5|0,5sqrt(3)):

> A:= [0,0]:
B:= [1,0]:
C:= [1/2, 1/2*sqrt(3)]:
ABC:= [A, B, C];

ABC

Definition von drei zentrischen Streckungen f1, f2 und f3:

> f[1]:= (x1,x2) -> 1/2*(x1,x2);
f[2]:= (x1,x2) -> 1/2*(x1,x2) + (1/2, 0);
f[3]:= (x1,x2) -> 1/2*(x1,x2) + (1/4, 1/4*sqrt(3));



Startmenge M der Sierpinski-Mengenfolge:

> M:= {ABC};
n:= nops(M);
m:= 0;


n := 1
m := 0

Iterationsvorschrift zur Erzeugung der Sierpinskifolge M0, M1, M2, ...

> NextSet:= proc ()
  local i, j; global M, n, m;
  m:= m + 1;
  n:= nops(M);  
  for i from 1 to n do Told||i:= op (i, M); od;
  for i from 1 to n do
    for j from 1 to 3 do
      Tnew||i||j:=[[f[j](Told||i[1][1],Told||i[1][2])],
                  [f[j](Told||i[2][1],Told||i[2][2])],
                  [f[j](Told||i[3][1],Told||i[3][2])]];
      M:= M union {Tnew||i||j};
    od:
    M:= M minus {Told||i};
  od;
end:
> CreateTriangles:= proc (M)
  local i, j;
  global n, T, P1, P2, P3, Dreiecke;
  n:= nops(M);
  Dreiecke:= {};
  for i from 1 to n do
    for j from 1 to 3 do
     point(P||i||j,op(j,op(i,M))[1],op(j,op(i,M))[2]);
    od;
    triangle(T||i, [P||i||1, P||i||2, P||i||3]);
    Dreiecke:= Dreiecke union {T||i};
  od;
end:
> opts:= 'axes = none,
    color = black,
    filled = true,
    size = [280, 280]':

Der Start der Sierpinski-Iteration mit dem oben definierten Dreieck ABC:

> CreateTriangles(M);
draw(Dreiecke, opts);
m;

Sierpinski 0
0

Der erste Iterationsschritt:

> NextSet(M);
CreateTriangles(M);
draw(Dreiecke, opts);
m;

sierpinski10
Sierpinski 1

1

Weitere Schritte:

> NextSet(M):
CreateTriangles(M):
draw(Dreiecke, opts);
m;

Sierpinski 2

2

> NextSet(M):
CreateTriangles(M):
draw(Dreiecke, opts);
m;

Sierpinski 3

3

> NextSet(M):
CreateTriangles(M):
draw(Dreiecke, opts);
m;

Sierpinski 4

4

> NextSet(M):
CreateTriangles(M):
draw(Dreiecke, opts);
m;

sierpinski

5