Java: Berechnung der Winkel zwischen zwei Punkten in Grad
Muss ich berechnen Sie den Winkel in Grad zwischen zwei Punkte für meine eigene Point-Klasse, Punkt a ist der Mittelpunkt.
Methode:
public float getAngle(Point target) {
return (float) Math.toDegrees(Math.atan2(target.x - x, target.y - y));
}
Test 1: //Rückgabe 45
Point a = new Point(0, 0);
System.out.println(a.getAngle(new Point(1, 1)));
Test 2: //zurück -90, erwartet: 270
Point a = new Point(0, 0);
System.out.println(a.getAngle(new Point(-1, 0)));
Wie kann ich die konvertieren das Ergebnis in eine Zahl zwischen 0 und 359?
InformationsquelleAutor der Frage Aich | 2012-04-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
könnte man hinzufügen, die folgenden:
übrigens, warum wollen Sie nicht mit einem doppelt hier?
InformationsquelleAutor der Antwort John Ericksen
Begann ich mit johncarls Lösung, aber musste es anpassen, um genau das bekommen, was ich brauchte.
Vor allem, ich brauchte es zum drehen im Uhrzeigersinn, wenn der Winkel erhöht. Ich musste auch die 0 Grad nach NORDEN zeigen. Seine Lösung kam mir nahe, aber ich beschloss, die post meine Lösung, falls es hilft jemand anderes.
Habe ich Hinzugefügt einige zusätzliche Kommentare, die zu erklären helfen, mein Verständnis der Funktion, wenn Sie brauchen, um einfache änderungen vornehmen.
InformationsquelleAutor der Antwort Joseph Snow
Basierend auf Saad Ahmed ' s Antworthier ist eine Methode, die verwendet werden kann für zwei beliebige Punkte.
InformationsquelleAutor der Antwort Steven Vascellaro
In der javadoc für Math.atan(double) ist ziemlich klar, dass die Rückgabe-Wert kann im Bereich von -pi/2 bis pi/2. So müssen Sie zum Ausgleich für die Rückgabe Wert.
InformationsquelleAutor der Antwort Spencer Kormos
nun für die Ausrichtung der kreisförmigen Werte zu halten Winkel zwischen 0 und 359 werden kann:
InformationsquelleAutor der Antwort Saad Ahmed
Was über so etwas wie :
InformationsquelleAutor der Antwort Julian