Punkte des Kreises ausgeben (Java2D)

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo,

Ich hab folgendes Problem, ich will einen Kreis zeichnen und in diesem Kreis eine Linie von Mittelpunkt bis zum Ende des Kreises Zeichnen. Diese Linie soll sich dann bewegen können und zwar am Kreisrand entlang (ähnlich wie die Zeiger einer Uhr).
Nun erstell ich mir meinen Kreis mit:

Code:
Ellipse2D elli = new Ellipse2D.Float();
elli.setFrame(0,0,width,heigh);
big.draw(elli);

Den Mittelpunkt des Kreises krieg ich mit "elli.getCenterX()"....

Und nun meine Frage, kann ich mir irgendwie alle Punkte des Kreis-Randes ausgeben lassen in nen Array oder so ? Hab da bisher leider keine Funktion zu gefungen...
 

Kerberus

Bekanntes Mitglied
Per Definition besteht ein Kreis aus unendlich vielen Punkten. Wird also schwer ein Array zu erstellen :)

Schau dir mal diesen Link an:
http://www.galileocomputing.de/op...40006.htm#Rxxjavainsel_140006282NEckezeichnen

Da gibt es eine Methode wie man regelmässige N-Ecke zeichnen kann. Du kannst auch sehen, wie die Punkte berechnet werden.

Mathematisch gilt: Wenn die Anzahl der Ecken gegen Unendlich strebt, dann ist das N-Eck ein Kreis. Dies lässt sich so natürlich nicht realisieren. Aber du kannst zum Beispiel n = 1000 Wählen und es sieht auch aus wie ein Kreis. (Hängt auch vom Radius ab)

Dies ist die einzige Lösung die mir im Moment dazu einfällt.
 

Isaac

Bekanntes Mitglied
Sag doch mal was du machen willst. Es besteht doch garkein Grund sich alle Punkte des Kreises in einem Array zeichen zu lassen. Über den Mittelpunkt, Radius und die Winkelfunktionen kann man doch alle in beliebiger Genauigkeit berechnen.
 
G

Guest

Gast
Ich wollte eine Linie die vom Mittelpunkt ausgeht und bis zum kreisrand geht, in diesem kreis rotieren (wie ein zeiger in einer Uhr).
Deswegen dachte ich zeichne ich ne linie vom Mittelpunkt zum Kreisrand, dann ein Pixel weiter im Kreisrand usw.

Das mit dem Winkel hab ich nicht bedacht, werd ich mal ausprobieren, danke für den Tipp.
 
G

Gast

Gast
Mit der Methode elli.contains(Point p) kannst Du herausfinden, ob ein Punkt p im Kreis liegt. Wenn du das für alle Punkte im Umrechteck durchführst und die ausschließt, die in einem um X/Y je 1 Pixel verschobenen, X/Y je 2 Pixel kleineren Kreis liegen, hast du alle Punkte auf der Kreislinie von elli.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben