Fractal erstellen

paul9

Mitglied
Hallo 🙂
Ich durchschaue es leider noch nicht so ganz, wie ich ein "Sierpiński arrowhead curve" erstellen kann. Die Methode zur Visualisierung habe ich bereits, es geht NUR darum, die Recursion zu implementieren.
Das gesuchte Fractal hat diese Rec.vorschrift:

T -> X (Anfang)
X -> LYRXRYL
Y -> RXLYLXR

Wobei eben X und Y bis zur Rekursionstiefe durch die Rec.vorschrift ersetzt werden (ist die gewünschte Tiefe erreicht, werden X und Y durch Leere ersetzt.
Java:
public class Arrowhead {
    /**
     * generates the n-th Arrowhead code sequence
     * @param n the dimension of the Arrowhead code
     * @return the n-th Arrowhead code sequence
     */
    public String getSequence(int n) {
        
        return X(0, n);
    }

    private String X(int iterations, int n) {
        
        if(n == iterations) {
            return " ";
        }
        return "L"+Y(iterations,n)+"R"+X(iterations,n)+"R"+Y(iterations,n)+"L";
        
        
    }

    private String Y(int iterations, int n) {
        
        if(n == iterations) {
            return " ";
        }
        return "R"+X(iterations,n)+"L"+Y(iterations,n)+"L"+X(iterations,n)+"R";
        
    }
}
Das wäre meine Idee..

Jetzt will ich, dass sich die Methode so gegenseitig aufrufen, dass einen aus den Symbolen R und L bestehenden String erzeugt wird, der als Instruktionskette für das Zeichnen des Fractals dient. Wenn n = iteration, so soll ein leerer String zurück gegeben werden. Wie gesagt: Die Visualisierung wird an anderer Stelle gemacht.

LG!
 
Zuletzt bearbeitet:
Du musst in den Aufrufen von X und Y die Iterationen hochzählen, sonst ändert sich der Parameter iterations nie und Du landest in einer Endlosrekursion.
 
Du musst in den Aufrufen von X und Y die Iterationen hochzählen, sonst ändert sich der Parameter iterations nie und Du landest in einer Endlosrekursion.
Ahh ja sowas hab ich mir schon gedacht... meinst du so?
Java:
    public String getSequence(int n) {
        
        return X(0, n);
    }

    private String X(int iterations, int n) {
        
        if(n == iterations) {
            return " ";
        }
        iterations++;
        return "L"+Y(iterations,n)+"R"+X(iterations,n)+"R"+Y(iterations,n)+"L";

        
    }

    private String Y(int iterations, int n) {
        
        if(n == iterations) {
            return " ";
        }
        iterations++;
        return "R"+X(iterations,n)+"L"+Y(iterations,n)+"L"+X(iterations,n)+"R";   
    }
 
Ahh ja sowas hab ich mir schon gedacht... meinst du so?
Java:
    public String getSequence(int n) {
       
        return X(0, n);
    }

    private String X(int iterations, int n) {
       
        if(n == iterations) {
            return " ";
        }
        iterations++;
        return "L"+Y(iterations,n)+"R"+X(iterations,n)+"R"+Y(iterations,n)+"L";

       
    }

    private String Y(int iterations, int n) {
       
        if(n == iterations) {
            return " ";
        }
        iterations++;
        return "R"+X(iterations,n)+"L"+Y(iterations,n)+"L"+X(iterations,n)+"R";  
    }
Ohhh ja ich habs! Mein Fehler lag daran, dass ich anstatt ein leeren String "" einen LEERzeichen-String " " zurückgegeben hab.. woow
 

Neue Themen


Zurück
Oben