Standard-Weise zu normalisieren, die einen Winkel von +/- π Bogenmaß in Java

Gibt es eine library-Funktion oder ein bekannter eine schnelle effiziente Art und Weise in Java zu normalisieren, die einen Winkel von +/- π — z.B. beim hinzufügen von zwei Winkeln?

Was ich haben jetzt (basierend auf diese Antwort) ist im Grunde den code unten...

private static final double TWO_PI = 2 * Math.PI;

double normalize(double theta) {
    double normalized = theta % TWO_PI;
    normalized = (normalized + TWO_PI) % TWO_PI;
    return normalized <= Math.PI ? normalized : normalized - TWO_PI;
}

...aber es scheint ein wenig kompliziert und performance-wise, ich bin nicht begeistert von der modulo-operator. (Beachten Sie, dass ich nicht garantieren kann theta nicht eine relativ große Zahl, so ich glaube nicht, dass es eine Reine addition/Subtraktion Lösung ohne Schleife. Ich weiß wirklich nicht, wie eine hand-gerollte Schleife ist wahrscheinlich, um vergleichen zu %.)

Gibt es eine gut getestet optimierte Bibliothek-Funktion, die ich verwenden kann, oder einen besseren Algorithmus, oder ist das so gut wie es geht?

InformationsquelleAutor David Moles | 2014-06-15
Schreibe einen Kommentar