Sierpinski Dreieck Problem (leicht verschoben)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Sierpinski Dreieck Problem (leicht verschoben)

    Ich habe für einen Vortrag über Fraktale versucht, ein Programm mit dem Game Maker zu schreiben,
    dass das Sierpinski Dreieck zeichnet.
    Als Erstellungsmethode habe ich das Chaos Spiel gewählt.
    Wenn man das Programm eine Weile laufen lässt (Mit Shift Taste), entsteht ein Gebilde, das an
    das Sierpinski Dreieck erinnert, jedoch ein bisschen verdrückt ist:


    Ich kann mir das nicht so wirklich erklären. Im Anhang ist meine gmk Datei, vielleicht kann mir ja einer
    von euch weiterhelfen.
    Gruß, Spellmaker
    Dateien
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • Ich kann dazu jetztnoch nichts sagen, aber ich denke es ist ziemlich ungeschickt einzelne Punkte zu zeichen! Ich werde mich nochmal melden.

    Hier
    ist ein Java code, den man leicht in GML umsetzen könnte!

    Edit: So, ich bin gleich fertig!

    Edit2: Irgendwie verstehe ich nicht, warum es nicht funktioniert:

    Edit3: Ein Dreieck ist total verschoben, dann ist da eine einzelne Linie...
    Dateien

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von maxda ()

  • Den Code von maxda hab ich mir jetzt noch nicht angeguckt, aber werd ich das noch nachholen.

    Aber bei deinem Code Spellmaker wundert es mich nicht, dass du kein Sierpinski-Dreieck bekommst. Du hast ja selbst gesagt du benutzt das "Chaos-Spiel". Der Algorithmus ist nicht-deterministisch und da man mit Zufällen schlecht mathematisch genau arbeiten kann... naja kommt eben so ein Murks dabei raus. Die Chaos-Spiel Methode ist ein Verfahren um näherungsweise ein Sierpinski-Dreieck zu konstruieren, ist natürlich logisch, dass du damit niemals ein richtiges Dreieck erhälst.

    Edit:
    Ok hab den Algorithmus auch mal implementiert, ich bin mir auch sicher, dass er funktionieren würde... Problem ist nur, dass der Game Maker meine Rekursion nicht so ausführt wie ich es will.
    Ich bin noch nicht dahinter gestiegen wie man mit dem GM anständig rekursiv programmiert. Die Schachtelungstiefe wird immer nur auf einen Ast, also ein Teildreieck übertragen und nicht auf alle 3.
    Ich vermute mal, dass ich keinen Plan habe wie man im GM richtig lokale Variablen einsetzt... kann sein, dass manche Referenzen auf Dreiecksobjekte aus Versehen überschrieben werden und deshalb nicht behandelt werden... ach kA guckts euch an und versucht das mal zu bugfixxen, ich habs nich hinbekommen.


    Je nachdem welches Dreieck ich berechnen lasse kommt so etwas dabei raus... schein eigentlich für jedes Teildreieck zu stimmen nur, irgendwie ist das totaler Murks.

    Wer mir erklären kann wie man richtig programmiert, sagts mir ok -_-"
    Dateien
    • sierpinski.rar

      (2,43 kB, 51 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Thodd ()

  • Der GM hat kein Problem mit Rekursion, man muss nur wissen wie man sie richtig benutzt. Denn gerade bei Rekursion ist es sehr wichtig alle lokalen Variablen im Script auch wirklich als solche zu kennzeichnen. Wenn du mal im Script "scr_dreieck_aufteilen" die erste Zeile ersetzt mit

    GML-Quellcode

    1. var tiefe, dreieck, dreieck1, dreieck2, dreieck3, a_x, a_y, b_x, b_y, c_x, c_y;

    funktioniert es wie es soll. Der Hauptübeltäter waren die Variablen für die Koordinaten. Diese wurden natürlich im ersten rekursiven Aufruf überschrieben.
  • Danke für die schnelle Hilfe, das Beispiel funktioniert perfekt,
    dann werd ich halt doch die rekursive Methode als Beispiel
    benutzen.
    @Thodd: Mir war klar, dass es nur eine Annäherung ist, aber irgendwie
    hatte ich trotz allem eine genauere Näherung erwartet. Man wird halt
    doch immer wieder überrascht :D

    Nochmal Danke für die Hilfe.
    Gruß, Spellmaker
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____