De manière Standard de normaliser un angle de +/- π radians en Java

Est-il une fonction de la bibliothèque ou bien connu, rapide efficace en Java afin de régulariser un angle de +/- π — par exemple lors de l'ajout de deux angles?

Ce que j'ai maintenant (basé sur cette réponse) est fondamentalement le code ci-dessous...

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;
}

...mais il semble un peu compliqué et en terme de performance, je ne suis pas enthousiaste à propos de l'opérateur modulo. (Notez que je ne peux pas garantir theta n'est pas un nombre relativement important, donc je ne pense pas qu'il y est une pure addition/soustraction solution sans boucle. Je ne sais pas vraiment comment un roulé à la main boucle est susceptible de le comparer à d' %.)

Est-il bien testé optimisé en fonction de la bibliothèque je peux l'utiliser, ou d'un meilleur algorithme, ou est-ce aussi bon qu'il obtient?

Vous essayez d'arrondir au plus proche de 90 degrés (la moitié pi) ou la plus proche de 180 degrés (plein pi)?
180 degrés / full pi.
double possible de moyen Facile de garder les angles entre -179 et 180 degrés
J'ai lu que la réponse, mais étant donné que la plupart de Java mathématiques / géométrie bibliothèques sont en radians il semble plausible qu'il y a une meilleure solution de travail en radians que dans les degrés.
...et en fait @CupawnTae a fourni un bibliothèque de la fonction de réponse.

OriginalL'auteur David Moles | 2014-06-15