Java Bäume zeichnen mit verzweigungen

FAN4TIC

Lt. Commander
Dabei seit
Nov. 2007
Beiträge
1.712
Hallo zusammen.

ich hab als aufgabe auf , bäume zu zeichnen.
Diese bäume sollen 2-5 verzweigungen haben

ich hab den quellcode für 2 verzweigungen.
Wir benutzen die Stiftbibliothek aber die befehle sollten sich eig. selbst erklären.
PHP:
       public void zeichneBaum (double pLaenge, int pWinkel)
        {
         hatStift.bewegeBis (300,500);  // bewegt den stift zum Position 300x,500y (pixel)
         hatStift.runter();
         hatStift.dreheBis (90);

            if (pLaenge > 10)
            {
                hatStift.bewegeUm (pLaenge); // Stamm zeichnen
                hatStift.dreheUm (pWinkel);
                this.zeichneBaum (pLaenge*2/3,pWinkel);
                hatStift.dreheUm (-pWinkel*2);
                this.zeichneBaum (pLaenge*2/3,pWinkel);
                hatStift.dreheUm (pWinkel);
                hatStift.bewegeUm (-pLaenge);               
            } 
        }


    public void hatKnopfZeichnenGeklickt()
    {
         hatStift.bewegeBis (300,500);
         hatStift.runter();
         hatStift.dreheBis (90);
         zeichneBaum(hatTextfeldLaenge.inhaltAlsZahl(),hatTextfeldWinkel.inhaltAlsGanzeZahl());
    }
Kurze Erklärung:

PHP:
public void zeichneBaum (double pLaenge, int pWinkel)
zeichnet den Baum.
pLaenge ist die Stammlänge in Pixeln.
pWinkel ist der Winkel der beiden Verzweigungen.

PHP:
public void hatKnopfZeichnenGeklickt()
Richtet den Stift aus und lässt die methode zeichneBaum() ausführen.
drehe bis 90 lässt den Stift nach oben ausrichten.
Drehe um x bewegt


Mein Problem:

Das Programm zeichnet den Baum mit jeweils 2 Ästen.
Wie bekomm ich das mit 3,4,5 Ästen hin?
Ich weiß jetzt nicht genau wie ich in den Quellcode packe?
habt ihr ein paar tips?
 

Anhänge

Zuletzt bearbeitet:

Yuuri

Fleet Admiral
Dabei seit
Okt. 2010
Beiträge
12.738
Das Programm zeichnet den Baum mit jeweils 2 Ästen.
Wie bekomm ich das mit 3,4,5 Ästen hin?
Ich weiß jetzt nicht genau wie ich in den Quellcode packe?
habt ihr ein paar tips?
Bei zwei Ästen drehst du dich wahrscheinlich erst um 45 °, malst den Ersten, gehst zum Ausgangspunkt zurück, drehst dich um 90 ° zurück und malst den Zweiten. Was denkst du nun also, wie man weitere zeichnet? Leg doch einfach einen maximalen Winkel fest (bspw. hier halt 90 °) und nun malst du den ersten Ast, gehst zurück zum Punkt, drehst dich um (90 / AnzahlÄste) °, malst den Zweiten, drehst dich wiederum um (90 / AnzahlÄste) ° und nun den Dritten... Du musst halt bedenken, dass drei Äste bei 90 ° evtl. schon eng werden, deswegen würde ich den maximalen Winkel vllt auf 120 ° o.ä. erhöhen.
 

FAN4TIC

Lt. Commander
Ersteller dieses Themas
Dabei seit
Nov. 2007
Beiträge
1.712
danke dir.
auf die idee bin ich nach etwas frischer luft und bäume in der Natur betrachten auch gekommen :)
trotzdem vielen dank.
 

drdoctor

Cadet 4th Year
Dabei seit
Feb. 2009
Beiträge
114
Die Programmierung von so etwas is lange her, für mich... ;-)

Probiers mal mit Rekursion, also einer Funktion, die sich selbst aufruft.
Je höher die Ordnung (Anzahl der Selbstaufrufe), desto größer wird der Baum.

Als Parameter bekommt sie die Länge des Astes, welcher einfach entsprechend verkleinert wird.
Beim Aufruf können auch noch die Winkel in einem bestimmten Bereich verändert werden, so daß am Ende ein paar unterschiedliche Varianten rauskommen müssten.

Viel Erfolg!

Doc
 
Top