Czy istnieje funkcja biblioteczna lub znana, szybka i wydajna metoda w języku Java w celu znormalizowania kąta do +/- π - np. podczas dodawania dwóch kątów?Standardowy sposób normalizowania kąta do +/- π radianów w Javie
Co mam teraz (na podstawie this answer) jest w zasadzie poniżej kod ...
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;
}
... ale wydaje się nieco skomplikowany i wydajność mądry nie jestem podekscytowani operator modulo. (Zauważ, że nie mogę zagwarantować, że theta
nie jest dość dużą liczbą, więc nie sądzę, że istnieje czyste rozwiązanie dodawania/odejmowania bez pętli.Nie wiem dokładnie, w jaki sposób pętla ręcznie zwijana może być porównywana z %
.)
Czy istnieje dobrze przetestowana zoptymalizowana funkcja biblioteki, której mogę użyć, lub lepszy algorytm, czy jest tak dobry, jak to tylko możliwe?
Próbujesz zaokrąglić do najbliższego 90 stopni (połowa pi) lub najbliższego 180 stopni (pełne pi)? – Kon
@Kon 180 stopni/pełne pi. –
możliwy duplikat [Łatwy sposób na zachowanie kątów pomiędzy -179 a 180 stopniami] (http://stackoverflow.com/questions/2320986/easy-way-to-keeping-angles-między 179- i -180-degrees) –