2016-05-04 4 views
-1

Ich arbeite an einem Spiel zeigt eine Route von einem bestimmten Startpunkt bis zum Cursor. Da das aktuelle System sehr alt ist (wahrscheinlich etwa 10 Jahre oder so ...) und teilweise kaputt ist, möchte ich diesen Code von Grund auf neu schreiben. Nehmen wir an, ich habe eine Reihe von Punkten auf meinem Bildschirm - der letzte Punkt ist mein Cursor -, und ein Graphics2D-Objekt. Wie würde ich eine Linie zeichnen, die auf dem kürzesten Weg durch all diese Punkte verläuft?Zeichnen Sie eine glatte Kurve durch eine Reihe von n Punkten

Antwort

1

Wie würde ich eine Linie zeichnen den kürzesten Weg möglich

Diese Anforderung ein bisschen widersprüchlich geht glatt durch alle diese Punkte verwenden. Die kürzeste Kurve durch eine Liste von Punkten ist ein Polygon, aber ein Polygon ist im Allgemeinen nicht glatt.

Was Sie suchen, ist jedoch wahrscheinlich Spline-Interpolation. Dies ist nicht in den Standard-Java-Paketen verfügbar, aber Sie könnten SplineInterpolator in Apache Commons Math verwenden.

+0

Ja, Spline-Interpolation ist, was ich suche ... Nein, der Spline-Interpolator benötigt einen steigenden x-Wert, damit es funktioniert. Da diese Linie eine Route auf einer Karte ist, könnte x mit der Option – RoiEX

+0

@RoiEX erhöht und verringert werden: Sie können den Punktindex als steigenden X-Wert (Kurvenparameter) verwenden und dann zwei separate 'SplineInterpolator's für das aktuelle X und Y verwenden Koordinaten. –

+0

Aber wie würde ich eine Kurve aus diesen beiden bekommen? – RoiEX

Verwandte Themen