Java: Zeichnen einer kreisförmigen Spirale mit drawArc
Arbeite ich an einem java-Programmierung, wo wir zum zeichnen einer kreisförmigen Spirale über die drawArc-Methode, so dass das Ergebnis etwa so aussieht:
Ich habe mit diesem für eine Weile und das ist, was ich habe, so weit:
import java.awt.Graphics;
import javax.swing.JPanel;
import javax.swing.JFrame;
public class CircSpiral extends JPanel {
public void paintComponent(Graphics g) {
int x = 100;
int y = 120;
int width = 40;
int height = 60;
int startAngle = 20;
int arcAngle = 80;
for (int i = 0; i < 5; i++) {
g.drawArc(x, y, width, height, startAngle, arcAngle);
g.drawArc(x + 10, y + 10, width, height, startAngle + 10, arcAngle);
x = x + 5;
y = y + 5;
startAngle = startAngle - 10;
arcAngle = arcAngle + 10;
}
}
public static void main(String[] args) {
CircSpiral panel = new CircSpiral();
JFrame application = new JFrame();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.add(panel);
application.setSize(300, 300);
application.setVisible(true);
}
}
Mein code gibt mir dieses Ergebnis:
Ich weiß, das problem liegt in meinen Argumenten für die drawArc-Methode, da die zahlen nicht richtig sind, aber ich weiß nicht, wie zu gehen über die zahlen gehen in einer kreisförmigen Weise. Jede Hilfe ist willkommen. Danke!
- Frage bearbeitet: "Swing" - tag Hinzugefügt. Code formatiert zu verbessern Einzug und die überflüssige Leerzeilen. Original-Plakat, in Zukunft darauf zu achten und die Mühe zu post code, das ist gut formatiert. Code, der leicht zu Lesen ist code, der leichter zu verstehen ist. Vielen Dank für Ihre Kooperation in dieser.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Deine Idee ist fast richtig. Ich habe einige änderungen. Sie müssen inverse der Winkel zu zeichnen, die andere Seite der Spirale, und verwenden Sie festen Punkt zu
startAngle
.Wenn das mein Projekt, ja, ich würde zeichnen meine Bögen in einer Schleife, aber innerhalb der Schleife ist, würde ich versuchen, den Bogen bounding box größer, aber immer noch zentriert über der gleichen Stelle. Um dies zu tun, würde ich Dekrementieren x-und y durch einige kleine Konstante, sagen DELTA (was ich eingestellt == 1), und ich würde Schrittweite Breite und Höhe von
2 * DELTA
. Würd ich auch lassen mein arcAngle unverändert, sondern würde sich ändern, meine startAngle in der Schleife, etwa so:startAngle = startAngle - arcAngle;
.Beispielsweise diese:
Würde zu diesem Ergebnis führen:
Dem folgenden code wird die Ausgabe dieses Bild:
Die Idee ist sehr einfach, ziehen Sie einfach die Obere Hälfte eines Kreises, etwa so:
Dann erhöht sich der Bogen der Größe um einen Konstanten Faktor, und zeichnen Sie die untere Hälfte des Kreises, sondern dass der Endpunkt dieses Kreises und dem oberen Kreis passen, für ihn, nur Substrat der
arcGrowDelta
aus den unteren Kreis Breite:Wiederholt werden.
Dies ist meine Lösung:
Ich bin ein Anfänger mit java und schaffte es schließlich, wie die Spirale.
Hier ist mein code:
Wenn Sie bereit sind, lassen Sie uns einige der guten alten Trigonometrie die Arbeit zu tun, könnten Sie es so: