Polygon Koordinaten richtig sortieren

chrisil97

Mitglied
Hallo zusammen,

ich habe folgendes Problem: Ich versuche ein Polygon über awt.Graphics und die Methode drawPolygon() zu zeichnen.
Dafür habe ich zwei Arrays mit der x und der y-Koordinate erstellt (int [] x, und int [] y). Nun sind die Punkte der Koordinaten nicht in der richtigen Reihenfolge,
sodass meine Grafik wie angefügt aussieht. Gibt es eine Möglichkeit das Array int[] x so zu sortieren, dass die zugehörigen Y-Werte auf den selben Indexplatz verschoben werden, wie im Array int [] x?

Vielen Dank für eure Hilfe

1607351464265.png
 
K

kneitzel

Gast
Erst einmal sprichst Du in Rätzeln. Was genau ist Dein Problem?
- Passen die X Koordinaten nicht zu den Y-Koordinaten? ==> Da wäre die Frage, wie Du die punkte aufstellst. Das ist generell ein Ergebnis von ganz schlechten Design, den du trennst, was zusammen gehört (Die Koordinaten sind aufgeteilt) ...
- Oder sind die punkte schon richtig (also in jedem Array gehören die Elemente mit Index i zusammen x[0]/y[0]; x[1]/y[1];... Nur eben hättest Du die Punkte gerne anders verbunden? (Also in diesem Beispiel die beiden unteren Punkte in der Reihenfolge vertauscht, so dass die Linien sich nicht kreuzen?

Wenn Du das mit dem Kreuzen der Linien nicht möchtest:
a) Wie kannst Du prüfen, ob sich zwei Linien kreuzen oder nicht? Hast Du da eine Idee?
b) Wenn Du a) gelöst hast: Was würdest Du mit diesem Wissen anfangen?
 

chrisil97

Mitglied
Meine Punkte sind schon richtig sortiert, sodass x und y zusammengehören. Die Punkte müssen nur anders verbunden werden.
Ich müsste hierfür meine Punkte anhand der Größe der x-Koordinate sortieren (Arrays.sort(x)). Mein Problem ist, dass die zugehörige y-Koordinate nicht mitsortiert werden kann.
 
K

kneitzel

Gast
Meine Punkte sind schon richtig sortiert, sodass x und y zusammengehören. Die Punkte müssen nur anders verbunden werden.
Ich müsste hierfür meine Punkte anhand der Größe der x-Koordinate sortieren (Arrays.sort(x)). Mein Problem ist, dass die zugehörige y-Koordinate nicht mitsortiert werden kann.
Da sind wir bei dem Punkt, dass zusammenhängende Dinge getrennt gespeichert werden. Das bringt solche Probleme mit sich...

Also eine vernünftige Lösung wäre ein vernünftiges Design - dann hättest Du Koordinaten in einem Array und dieses Array könntest Du nach der X-Koordinate sortieren.

Eine andere Möglichkeit wäre, dass man einfach ein eigenen Sortieralgorithmus entwickelt, der zwei Arrays entgegen nimmt und immer, wenn er im ersten Array tauscht, diesen Tausch auch im zweiten Array durchführt. Aber hier erkennt man die Probleme bei schlechtem Design: Es wird einfach nur unnötig komplex.

Und wenn Du verhindern möchtest, dass Linien sich kreuzen: Ein Sortieren nach X-Achse dürfte da nicht ausreichend sein.
(0,0), (1,2), (2,0), (3,2) -> Kannst diese 4 Punkte ja mal auf einen Zettel mit Kästchen einzeichnen und dann die Punkte verbinden in der Reihenfolge, in der sie hier sortiert sind.
 

LimDul

Top Contributor
Die einfachste Lösung - anstelle ein Array für die x-koordinaten und ein Array für die x-koordinaten zu nutzen, eine Klasse Punkt bauen, die x und y als Member hat und die Comparable ist. Dann kann man das Array von diesen Koordinaten sortieren und es klappt.
 

chrisil97

Mitglied
Da sind wir bei dem Punkt, dass zusammenhängende Dinge getrennt gespeichert werden. Das bringt solche Probleme mit sich...

Also eine vernünftige Lösung wäre ein vernünftiges Design - dann hättest Du Koordinaten in einem Array und dieses Array könntest Du nach der X-Koordinate sortieren.

Eine andere Möglichkeit wäre, dass man einfach ein eigenen Sortieralgorithmus entwickelt, der zwei Arrays entgegen nimmt und immer, wenn er im ersten Array tauscht, diesen Tausch auch im zweiten Array durchführt. Aber hier erkennt man die Probleme bei schlechtem Design: Es wird einfach nur unnötig komplex.

Und wenn Du verhindern möchtest, dass Linien sich kreuzen: Ein Sortieren nach X-Achse dürfte da nicht ausreichend sein.
(0,0), (1,2), (2,0), (3,2) -> Kannst diese 4 Punkte ja mal auf einen Zettel mit Kästchen einzeichnen und dann die Punkte verbinden in der Reihenfolge, in der sie hier sortiert sind.
Im ursprünglichen Mehrdimensionalen Array sind meine Punkte zusammenhängend gespeichert. Der Konstruktor der Methode drawPolygon erwartet nur zwei getrennte, eindimensionale Arrays. Könntest du das mit dem vernünftigen Design einmal konkretisieren?
 

Blender3D

Top Contributor
Ich müsste hierfür meine Punkte anhand der Größe der x-Koordinate sortieren (Arrays.sort(x)). Mein Problem ist, dass die zugehörige y-Koordinate nicht mitsortiert werden kann.
Das sortieren der x- koordinaten verhindert nicht, dass sich Linien kreuzen.
z.B.
[CODE lang="java" title="Polygon" highlight="1"]
int x[] = { 0, 0, 70, 100, 100 };
int y[] = { 0, 200, 80, 0, 100 };
Polygon polygon = new Polygon(x, y, x.length);[/CODE]
Ergibt das Polygon.
polygon.png
 
K

kneitzel

Gast
Wenn etwas zusammen hängt, dann wird das auch entsprechend im Modell berücksichtigt.

So hast Du Koordinaten. Diese bestehen aus x und y Koordinate. Daher macht es Sinn, eine entsprechende Klasse Koordinate zu haben. Oder man nimmt, was schon da ist - Point gäbe da z.B. schon.

Dann hättest Du nur noch ein Array oder eine Liste mit diesen Koordinaten. Und schon kannst Du da auch die vorhandenen Methoden nutzen z.B. zum sortieren. Es braucht dann lediglich noch einen Comparator, sprich etwas das klar sagt, wie denn zwei Punkte vergleichen werden sollen. Das wäre also in Deinem Fall ein vergleich der X Koordinaten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Polygon mit double-Koordinaten AWT, Swing, JavaFX & SWT 2
U Wie funktioniert Polygon? AWT, Swing, JavaFX & SWT 1
M Polygon per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 26
S GeneralPath in Polygon umwandeln..? AWT, Swing, JavaFX & SWT 5
Q AWT Path2D Polygon mit "Loch" AWT, Swing, JavaFX & SWT 0
S AWT Skalieren von Polygon über Area klappt nicht AWT, Swing, JavaFX & SWT 4
R Polygon-Animation mit Darstellungsfehlern AWT, Swing, JavaFX & SWT 5
S Swing Polygon-Button AWT, Swing, JavaFX & SWT 21
C Clipping funktioniert mit eigenem Polygon nicht AWT, Swing, JavaFX & SWT 8
B Polygon mit contains() nutzen AWT, Swing, JavaFX & SWT 4
F polygon object "stirbt" vor Ausführung in paint() AWT, Swing, JavaFX & SWT 4
U offenes Polygon AWT, Swing, JavaFX & SWT 2
D Polygon mit der Maus zeichnen AWT, Swing, JavaFX & SWT 2
K Polygon in image variable? AWT, Swing, JavaFX & SWT 2
C Kleineres Bild an bestimmte Koordinaten setzen AWT, Swing, JavaFX & SWT 6
S JButtons an Koordinaten setzen AWT, Swing, JavaFX & SWT 3
J Java FX Koordinaten NACH Animation setzen, wie? AWT, Swing, JavaFX & SWT 9
F Swing Rotation eines Bildes mit beliebigen Koordinaten um den Mittelpunkt AWT, Swing, JavaFX & SWT 3
B Transformation und Darstellung von Koordinaten AWT, Swing, JavaFX & SWT 5
J in actionPerformed() Koordinaten ändern AWT, Swing, JavaFX & SWT 9
P JavaFX Szenegraph - Koordinaten von Children einer Group AWT, Swing, JavaFX & SWT 0
C Bild Koordinaten AWT, Swing, JavaFX & SWT 6
K 3D-Grafik 2 "Boxen" auf unterschiedlichen Koordinaten AWT, Swing, JavaFX & SWT 2
Luk10 Fragen zum Koordinaten System AWT, Swing, JavaFX & SWT 3
K LayoutManager Buttons auf bestimmte x und y Koordinaten AWT, Swing, JavaFX & SWT 2
W 2D-Grafik Koordinaten nicht immer die selben AWT, Swing, JavaFX & SWT 9
J Koordinaten von JButton AWT, Swing, JavaFX & SWT 2
C Caret Position mit X-Y-Koordinaten ermitteln AWT, Swing, JavaFX & SWT 2
D Swing JTable, Zellen-Farbe über Koordinaten ändern AWT, Swing, JavaFX & SWT 9
Y AWT Maus Koordinaten abspeichern in eine Textfile AWT, Swing, JavaFX & SWT 3
D Swing JViewPort, Absolut Koordinaten berechnen. AWT, Swing, JavaFX & SWT 2
C permanente aktualisierung der Koordinaten der Maus auf einem Panel AWT, Swing, JavaFX & SWT 8
T SWT Canvas Koordinaten per MouseMove auslesen AWT, Swing, JavaFX & SWT 1
S Koordinaten aus Array verwenden zum zeichnen auf JPanel?! AWT, Swing, JavaFX & SWT 3
S Swing Text -> HTML: Caret-Koordinaten verschoben AWT, Swing, JavaFX & SWT 6
aze SwingConstants.Center Koordinaten für JLabel herausfinden AWT, Swing, JavaFX & SWT 6
T Choice "gezielt" darstellen aber wie - mit Koordinaten aber wie? AWT, Swing, JavaFX & SWT 6
D Koordinaten von einem Kreissegment berechnen AWT, Swing, JavaFX & SWT 6
D Mouse Koordinaten AWT, Swing, JavaFX & SWT 2
R drawString mit double Koordinaten AWT, Swing, JavaFX & SWT 5
M Grafik flexibel an berechneten Koordinaten positionieren AWT, Swing, JavaFX & SWT 4
N Alle Pixel-Koordinaten von z.B. g.drawLine(.) speichern AWT, Swing, JavaFX & SWT 7
N Koordinaten erfassen AWT, Swing, JavaFX & SWT 5
S Koordinaten/Raster (ähnlich Schachbrett) anzeigen/ausblenden AWT, Swing, JavaFX & SWT 10
F Ermittlung der X- und Y- Koordinaten im Tree bei Tastaturst. AWT, Swing, JavaFX & SWT 5
D Koordinaten der Bildschirmposition auslesen (MouseListener?) AWT, Swing, JavaFX & SWT 7
Juelin if Abfrage funktioniert nicht richtig AWT, Swing, JavaFX & SWT 10
P AWT Programm funktioniert nicht richtig AWT, Swing, JavaFX & SWT 35
G Button auswerten und ausgeben ob richtig oder falsch AWT, Swing, JavaFX & SWT 1
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
MouseEvent richtig initialisieren AWT, Swing, JavaFX & SWT 1
T ScrollEvent richtig(er) abfangen? AWT, Swing, JavaFX & SWT 0
B Output GUI funktioniert nur beim ersten Mal richtig. AWT, Swing, JavaFX & SWT 4
princess_sara1997 .jar Datei führt den Code nicht richtig aus AWT, Swing, JavaFX & SWT 19
M JavaFX kann man da noch was am code vereinfachen design technisch sieht nicht richtig aus... AWT, Swing, JavaFX & SWT 15
S Swing Coding richtig einfügen AWT, Swing, JavaFX & SWT 3
F Swing Adapt Row Height funktioniert nicht richtig :( AWT, Swing, JavaFX & SWT 7
W JavaFX Ich kann keinen Kreis richtig zeichnen AWT, Swing, JavaFX & SWT 8
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
coolian ActionListener funktonirt nicht richtig auf JMenuItem AWT, Swing, JavaFX & SWT 4
J Parallele Aktionen in Java FX richtig durchführen. AWT, Swing, JavaFX & SWT 5
zhermann FX Label text wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 12
D JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 1
Joker4632 JavaFX GridPane richtig implementieren AWT, Swing, JavaFX & SWT 7
K Swing GUI aktualisiert nicht richtig AWT, Swing, JavaFX & SWT 5
X JavaFX AreaChart area höhe wird nicht richtig dargestellt AWT, Swing, JavaFX & SWT 2
A Swing Zeichnung wird nicht richtig dargestellt AWT, Swing, JavaFX & SWT 4
I Neues JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 5
R Swing Bewegung eines Graphics Objektes innerhalb eines JPanels funktioniert nicht richtig AWT, Swing, JavaFX & SWT 2
D Swing Warum erhalte ich keine Ausgabe? Funktioniert der equals-vergleich in actionPeformed nicht richtig? AWT, Swing, JavaFX & SWT 3
V JFrame wird nicht richtig angezeigt! AWT, Swing, JavaFX & SWT 2
H UpdatePolicy wird nicht richtig gesetzt / funktioniert nicht AWT, Swing, JavaFX & SWT 5
C Swing GUI extrem langsam - GUI-Code richtig ausführen AWT, Swing, JavaFX & SWT 1
M JavaFX TextArea richtig formatieren AWT, Swing, JavaFX & SWT 4
A SWT Wie legt man ein UI vom Programmcode her richtig an? AWT, Swing, JavaFX & SWT 3
C KeyPressed funktioniert auf iOS nicht richtig? AWT, Swing, JavaFX & SWT 4
M "ImageIO.read()" liest Bild nicht richtig ein AWT, Swing, JavaFX & SWT 3
A Swing Frames richtig erstellen AWT, Swing, JavaFX & SWT 3
W SWT Dialog richtig schließen? AWT, Swing, JavaFX & SWT 0
F AWT Grafik wird nicht richtig aktualisiert AWT, Swing, JavaFX & SWT 2
B mouseOnEntered ( Controller richtig implementieren) AWT, Swing, JavaFX & SWT 4
M Repaint mittels Button richtig aufrufen klappt nicht AWT, Swing, JavaFX & SWT 1
K Initialisierung von Oberfläche Richtig? AWT, Swing, JavaFX & SWT 5
TheSorm Swing JScroolBar richtig benutzen AWT, Swing, JavaFX & SWT 0
D Panel in Panel zentriert nicht richtig AWT, Swing, JavaFX & SWT 3
K Swing JList - Element richtig hinzufügen AWT, Swing, JavaFX & SWT 4
D Swing fullscreen switch geht nicht richtig AWT, Swing, JavaFX & SWT 8
F Swing Wie verwalte ich meine Panels richtig? AWT, Swing, JavaFX & SWT 2
X LayoutManager gridBagLayout wird nicht richtig Dargestellt AWT, Swing, JavaFX & SWT 5
M KeyListener richtig implementieren AWT, Swing, JavaFX & SWT 3
M BorderLayout JPanel liegt nicht richtig an AWT, Swing, JavaFX & SWT 12
J Swing Window-Builder-Projekt richtig übertragen AWT, Swing, JavaFX & SWT 2
M AWT Java-Taschenrechner, wie Stack richtig verwenden? AWT, Swing, JavaFX & SWT 14
B Navigation funkt nicht richtig AWT, Swing, JavaFX & SWT 3
propra Doppelklick von Einzelklick unterscheiden, aber richtig ... AWT, Swing, JavaFX & SWT 10
S Applet funktioniert nach Browserreload nicht richtig AWT, Swing, JavaFX & SWT 2
W LayoutManager GridBag richtig nutzen - Komponenten richtig anordnen und automatisch vergrößern AWT, Swing, JavaFX & SWT 5
T SWINGX richtig nutzen AWT, Swing, JavaFX & SWT 7
1 CellEditor mit ComboBox richtig beenden AWT, Swing, JavaFX & SWT 4
F SWT Button listener richtig erstellen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben