NetBeans Spirale aus Rechtecken

Herbert93

Mitglied
Hallo,

ich würde gerne eine Spirale aus immer größer werdenden Rechtecken erstellen, das natürlich am besten in einer Schleife. Das drum rum ist kein Problem nur die Schleife macht mir zu schaffen, wie ich es schaffe das ein Rechteck am ende andockt und sich in die gewünschte Richtung dreht als schleife also immer im Uhrzeigersinn + dabei das Rechteck immer um ein "Kästchen" also eine Einheit größer wird.

Danke im vorraus
 
K

kneitzel

Gast
Also ich weiss jetzt nicht, ob ich Dich richtig verstanden habe, aber eigentlich muss Du doch nur immer länger werdende Striche zeichnen. Also Du kannst z.B. mit einem 10 Punkte Strich anfangen. Und dann kommen immer 10 Punkte dazu und die Richtung ändert sich immer.

Also von mir aus vom Startpunkt erst 10 Punkte nach oben malen, dann 20 nach recht, 30 nach unten, 40 nach links, 50 nach oben, 60 nach rechts, u.s.w.

Die Richtung kannst Du ja als int oder so festslegen. Dann hast Du halt ein CalcNewPoint oder so, in dem dann ein neues x und y ausgerechnet wird und in dem Du dann in einem switch je nach Wert der Richtung die Distanz zu x oder y addierst oder subtrahierst.

Richtungsänderung wäre dann immer einfach +1 mit check ob die richtung 5 ist - dann wird sie wieder auf 1 gesetzt.

So hättest Du einen Algorithmus, der so eine Spirale malen würde, oder habe ich Dich missverstanden?

Konrad
 

Herbert93

Mitglied
An sich denke ich funktioniert das bestimmt, das jetzt aber in Code umwandeln ist ja mit das Problem das ich habe das ich die Schleife nicht hinbekomme.... könntest du das vllt als Schleife mal posten?
 
K

kneitzel

Gast
Wo ist das Problem genau? Was hast Du denn ausprobiert? Es wäre eine while Schleife denkbar, die die Länge einer Linie als Abbruchmerkmal nimmt. Also die Schleife könnte sein:
Java:
while (linienLaenge < 500) {
  // Zeichne die Linien
  linienLaenge += 10;
}

Aber da ist immer die Frage, was die eigentliche Anforderung ist.

Konrad
 

Joose

Top Contributor
das jetzt aber in Code umwandeln ist ja mit das Problem das ich habe das ich die Schleife nicht hinbekomme...

Wo liegt genau das Problem das als Schleife um zu setzen?

Also von mir aus vom Startpunkt erst 10 Punkte nach oben malen, dann 20 nach recht, 30 nach unten, 40 nach links, 50 nach oben, 60 nach rechts, u.s.w.

Wenn man das Beispiel hernimmt ist klar zu erkennen:

Bei jeden Durchlauf wird die Länge der gezeichneten Linie um 10 erhöht =>
Und die Richtung in welche du zeichnest bleibt immer gleich ... oben, rechts, unten, links, oben, rechts, unten, links, ....
Ob du den Teil mit der Richtung nun über Strings oder eine int Variable löst (immer hochzählen und mit "x%4" arbeiten ;)) bleibt dir überlassen

Code:
laenge = 0;
richtung = 0;

schleife(abbruchbedingung) {
   laenge += 10;
   rest = richtung%4;
   wenn rest gleich 0 dann nach oben zeichnen
   wenn rest gleich 1 dann noch rechts zeichnen
   ...
   richtung++
}
 

Herbert93

Mitglied
ich bin leider nicht so bewandert was das Programmieren angeht sonst hätte ich ja nicht ein so wahrscheinlich "einfaches" Problem ....
für das bsp. von Joose muss ich ja noch die richtung als variable irgendwo festlegen? und dann was für eine schleife bietet sich an?
 

Joose

Top Contributor
Theoretisch ist es egal welche Schleife du verwendest. Man kann jede Schleife in jede andere umwandeln (for -> (do)while, (do)while-> for).

Eine for-Schleife verwendet man meist dann wenn man weiß das die Schleife eine bestimmte anzahl an Durchläufen hat (Länge der Liste, Zahl X oder sonst was).
Eine while-Schleife wird eher dann verwendet wenn man etwas solange durchführen will bis eine Bedingung nicht mehr zutrifft (Dateisystem durchgehen bis zur letzten Ebene)
 

Neue Themen


Oben