Thema: Delphi Sierpinski-dreieck

Einzelnen Beitrag anzeigen

Schauer

Registriert seit: 28. Okt 2009
4 Beiträge
 
#1

Sierpinski-dreieck

  Alt 28. Okt 2009, 21:23
Guten Abend

Ich habe ein Problem.

Im Unterricht sollen wir das Sierpinsky-Dreieck programmieren.
( http://www.bjoernmuenstermann.de/Fra...ki_dreieck.gif )

Genauer: Wir sollen eine Stufe eingeben, die besagt wie tief die Dreiecke reichen.
( bsp:
Stufe= 0 --> nur das äußere Dreieck
Stufe= 1 --> ein Dreieck hineingezeichnet
usw. )

Ich hatte mir nun erstmal nur die Dreiecke einige Stufen mit "move to" und "line to" gezeichnet. Um einen möglichen Rhytmus in der Änderung der Werte zu finden.

Folgendermaßen sieht es dann aus:

a= image1.widht
b= image1.height

moveto(a,2/3b)
lineto(1/2a,0)
lineto(0,2/3b)
lineto(a,2/3b)___
moveto(1/4a,1/3b)
lineto(2/4a,2/3b)
lineto(3/4a,1/3b)
lineto(1/4a,1/3b)___
moveto(1/8a,3/6b)
lineto(2/8a,4/6b)
lineto(3/8a,3/6b)
lineto(1/8a,3/6b)___
moveto(1/16a,7/12b)
lineto(2/16a,8/12b)
lineto(3/16a,7/12b)
lineto(1/12a,7/12b)___

und so geht es weiter.
( ___ bedeutet, dass dort ein Dreieck fertig gezeichnet ist )

die Werte verändern sich, pro Dreieck, immer auf folgende Weise:

für a:

Zähler:
1
2
3
1
Nenner:
multipliziert sich bei jeder neuen Tiefe mit 2

für b

Zähler:
2*Zähler der vorherigen Stufe
2*Zähler der vorherigen Stufe+1
2*Zähler der vorherigen Stufe
2*Zähler der vorherigen Stufe

Nenner:
multipliziert sich bei jeder neuen Tiefe mit 2


Ich hoffe ihr versteht wie ich es meine.

Leider passt sich das äußerste Dreieck nicht in dieses System ein.
Darum dachte, ich schreibe es so:

if tiefe=0
then
moveto(a,2/3b)
lineto(1/2a,0)
lineto(0,2/3b)
lineto(a,2/3b)
else
// jetzt kommt das Problem : WIE SCHREIBE ICH DIESEN ALGORYTHMUS???


Also. Ich hoffe ihr könnt mir helfen. Vielleicht seht ihr auch einen Fehler in meiner Überlegung und sagt mir wie ich es besser machen kann. Vielleicht kennt ihr auch einen einfacheren Ansatz.
Ein anderes Problem, ist auch, dass sich diese Dreiecke die gezeichnet werden immer nur weiter in die linke Ecke zeichen. Kennt ihr eine Möglichkeit, dass sich das in jede freie Stelle zeichnen lässt?

Ich hoffe auf schnelle Antwort :/

MfG Schauer
  Mit Zitat antworten Zitat