Differenz zwischen zwei Winkeln auf einem Kreis in Java berechnen?
Hallo!
Ich möchte, wie unten auf dem Bild dargestellt, den kleinsten Winkel (also nicht einmal aussenherum, wenn man nur 10° in die andere Richtung gehen müsste) zwischen zwei Winkeln berechnen. Der Kreis ist von -180° bis 180° eingeteilt. Für Winkeldifferenzen, die nicht den Punkt von -180° nach 180° überschreiten ist es einfach, nur winkel 2 minus winkel 1. Aber wie kann ich das bei genau diesem Fall machen? Wie finde ich heraus, dass es der kürzere Weg wäre und wie berechne ich dann die Differenz?
Danke schon mal im Vorraus!
2 Antworten
In dem unteren Fall würde ich erst die Differenz zwischen -180° und -140° bilden. Diese kann mit 180° summiert werden, so kommst du auf 220°. Die Differenz zwischen 220° und 110° ist 110.
∆aß = ((180 - Math.abs(a)) + 180) - ß
Im Zweifel könntest du das Ergebnis nochmals nutzen, um die andere Differenz zu berechnen (360 - ∆aß). Mit Math.min lässt sich dann der kleinste Wert bestimmen.
Nun müsste nur noch geprüft werden, inwiefern die obige Formel für andere Fälle eingesetzt werden kann.
Es gibt immer zwei mögliche Differenzen und beide zusammen ergeben 360°, das sollte klar sein. (natürlich die Beträge der Differenzen).
Wenn die erste Differenz dann größer 180° ist, muss die andere zwangsläufig kleiner sein, nämliche 360° minus die erste Differenz.