Sierpinski Dreieck

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

diceman

Betreff: Sierpinski Dreieck

BeitragDo, Jul 28, 2005 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß nicht, wer von euch mit dem Prinzip des Sierpinski Dreiecks vertraut ist, daher hier erstmal eine kurze Erläuterung:
Man zeichne ein beliebiges Dreieck und setze den Stift irgendwo außerhalb des Dreiecks auf die Fläche. Dann zieht man eine imaginäre Linie zu einem der drei beliebigen Eckpunkte des Dreiecks und setzt genau auf der Hälfte der Strecke einen Punkt. Von diesem neuen Ausgangspunkt sucht man sich wieder zufällig einen der drei Eckpunkte aus, zieht eine Line, setzt einen Punkt auf der Hälfte usw. Man wiederhole dieses 1000 mal, oder öfters, und erhält so nach und die Figur, die allgemein als das Sierpinski Dreieck bekannt ist.

Der Effekt ist ziemlich eindrucksvoll, daher war es mir wert, das ganze mal als Computerprogramm zu simulieren (Das Anfangs-Dreieck sollte groß genug sein, damit der Effekt schön zur Geltung kommt, also bei nicht gefallen einfach beenden und neustarten, um ein neues Dreieck zu kreieren):

Und hier der Quellcode:

BlitzBasic: [AUSKLAPPEN]
x_max=1024	;Auflösung festlegen
y_max=768

Dim x_start(3),y_start(3) ;Platz freihalten für die 3
;Eckpunkte des Anfangs-Dreiecks
Graphics x_max,y_max
SetBuffer DesktopBuffer()
SeedRnd MilliSecs()

For lauf=0 To 2 ;Koordinaten für das Startdreieck festlegen

x_start(lauf)=Rnd(0,x_max-1) ;-1, um sicher zu gehen, das der Startpunkt
;wirklich außerhalb des Dreiecks liegt
y_start(lauf)=Rnd(0,y_max-1)
Plot x_start(lauf),y_start(lauf)
Next

; Die folgenden Zeilen aktivieren, wenn man das Startdreieck angezeigt bekommen möchte
; Line x_start(0),y_start(0),x_start(1),y_start(1)
; Line x_start(1),y_start(1),x_start(2),y_start(2)
; Line x_start(2),y_start(2),x_start(0),y_start(0)

det_start=Rnd(0,3) ;Der Startpunkt befindet sich an einer der 4 Randseiten

Select det_start
Case 0
x=Rnd(0,x_max)
y=0
Case 1
x=0
y=Rnd(0,y_max)
Case 2
x=Rnd(0,x_max)
y=600
Case 3
x=800
y=Rnd(0,y_max)
End Select



; Die eigentliche Berechnung

Repeat

Color Rnd(255),Rnd(255),Rnd(255) ;Zufällige Farben benutzen
Plot x,y ;Einen Punkt an der aktuellen Stelle zeichnen

newdir=Rnd(0,2) ;Eine zufällige Richtung festlegen zu einem der 3 Eckpunkte

x=(x+x_start(newdir))/2 ;Exakt auf der Hälfte der Strecke
y=(y+y_start(newdir))/2 ;liegt der neue Ausgangspunkt

Until KeyHit(1) ;Wiederholen, bis ESCAPE gedrückt wird
  • Zuletzt bearbeitet von diceman am Do, Jul 28, 2005 23:25, insgesamt 2-mal bearbeitet
 

Absoluter Beginner

BeitragDo, Jul 28, 2005 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Diese Figur ist wohl eher als Sierpinski Dreieck bekannt!
Pascalsches Dreieck ist was anderes...
Error Inside!

diceman

BeitragDo, Jul 28, 2005 23:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry, bin ich blöd. Embarassed
Das Pascal'sche Dreieck war das mit der Zahlenpyramide, meinte natürlich das Sierpinski-Dreieck, wußte nur nicht mehr, daß es so heißt. Also, vielen Dank für die Korrektur . . . Smile

Triton

BeitragFr, Jul 29, 2005 1:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht gut aus, obgleich ich Desktopbuffer durch Fromtbuffer ersetzen musste. Dies ist ein B+ Befehl und sollte, wie gesagt, einfach durch Frontbuffer ersetzt werden.
Coding: silizium-net.de | Portfolio: Triton.ch.vu

diceman

BeitragFr, Jul 29, 2005 6:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich bei mir einfach DestopBuffer() durch FrontBuffer() ersetze, tut sich gar nix auf dem Bildschirm . . . Confused

Crono

BeitragFr, Jul 29, 2005 9:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem hatte ich auch... Ich habs gefunden und ersetzt, aber dann passiert nix (bei mir erschein ein komisch angedeutetes Dreieck am rechten Bildschirmrand)

Cu Crono
User posted image

Triton

BeitragFr, Jul 29, 2005 16:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann müsst ihr es wohl mehrfach starten, da die Eckpunkte des Dreiecks zufällig gewählt sind.
Coding: silizium-net.de | Portfolio: Triton.ch.vu
 

BlackTermi

BeitragFr, Jul 29, 2005 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
mhh ganz schön...
ach ja noch was, sowas ähnliches gab es schon mal:

Dreieck

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group