Quadrate rekursiv zeichnen

virtual12

Aktives Mitglied
Wie der Titel schon sagt, möchte ich Quadrate mithilfe einer rekursiven Funktion zeichnen. Ich habe also am Anfang ein großes Quadrat, welches dann in vier kleinere Quadrate unterteilt wird. Diese vier kleineren Quadrate sollen dann wieder jeweils in vier noch kleinere Quadrate unterteilt werden. Leider habe ich noch keine Idee, wie das gehen soll und ich das in Java darstellen kann. Meine Gedanken dazu sind, dass ich jede Seite halbieren muss. Für den rekursiven Aufruf brauche ich dann so etwas wie n-1. Aber wie kann ich das als Code aufschreiben. Bin für jeden Tipp sehr sehr dankbar. Hier noch mein Quadrat, welches als Ausgangsobjekt dient.
Code:
public class Quadrat {

    public static void main(String[] args) {
        StdDraw.line(0.1, 0.1, 0.1, 0.9);
        StdDraw.line(0.1, 0.9, 0.9, 0.9);
        StdDraw.line(0.9, 0.9, 0.9, 0.1);
        StdDraw.line(0.9, 0.1, 0.1, 0.1);

    }

}
 
Danke für deine Antwort. Leider habe ich trotz der vielen Beispiele noch keine Idee, wie ich das Problem angehen kann. Kannst du mir vielleicht hierzu einen Tipp geben, z.B. wie ich eine Seite des Quadrats halbiere und dann mit StdDraw zeichnen kann.
 
Okay, bin nach einer Pause und etwas nachdenken etwas weiter, aber noch nicht am Ziel. Ich habe nun folgendes:
Code:
public class Quadrat {

        public static void drawQuadrat(double a, double länge, double x, double y) {
                double x0 = x-0.9/2, x1 = x+0.9/2;
                double y0 = y-0.9/2, y1 = y+0.9/2;
                StdDraw.line(x0, y0, x0, y1);
                StdDraw.line(x1, y0, x1, y1);
                StdDraw.line(x0, y1, x1, y1);
                StdDraw.line(x0, y0, x1, y0);
                drawQuadrat(a-1, 0.9, x1, y1);

        }
        public static void main(String[] args) {
                int n = Integer.parseInt(args[0]);
                drawQuadrat(n, .5, .5, .5);
        }

}
 
Ja, habe ich. Ich möchte das große Quadrat in vier kleinere Quadrate unterteilen und dann wiederum die kleineren Quadrate in jeweils vier noch kleinere Quadrate unterteilen. Das Ausgangsquadrat soll mit dem Befehlszeilenargument 1, die erste Unterteilung mit 2 und die nächste mit drei aufgerufen werden usw für n Argumente. Leider weiß ich nicht, wie ich das machen soll und erhoffe mir einen Tipp von dir.
Liebe Grüße
 
Ganz einfach, wenn du eine Methode hast, die ein Quadrat anhand eines punktes und einer länge zeichen kann:
- Nennen wir die Anzahl an Quadraten die du zeichnen willst einfach mal 'a'
- Wenn a == 1, dann musst du einfach nur ein normales Quadrat zeichenn
- Ansonsten musst du einfach nur länge/wurzel(a) teilen, damit du weißt, wie die Länge jedes inneren Quadrates aussieht.
- Dann musst du nur noch a mal Quadrate zeichnen, die länge/wurzel(a) lang sind
- Dabei gibt das dann ein Gitter von wurzel(a) mal wurzel(a) aus Quadraten.
- Zum zeichnen musst du dann eben nur die Methode selbst aufrufen mit dem Startpunkt, der Länge und als Parameter a == 1 übergeben.
 

Neue Themen


Zurück
Oben