Muszę wybrać zakres od 0 do 359,9 stopni w bazie danych SQL.Najlepszy sposób obsługi zakresu 360 stopni
Mój wkład jest w formie kąta środka i zakresu. Na przykład środek = 100 zakres = 50 dałby mi zakres kąta> 75 kąt < 125. Jednak jeśli środek = 0, wówczas zakres byłby kątowy < 25 i kąt> 335.
Zatem mój obecny algorytm działa tak:
minangle = center-range/2
maxangle = center+range/2
if minangle<0, then minangle += 360
if maxangle>0, then maxangle -=360
potem w moim zapytaniu
if minangle<maxangle, I query angle>minangle AND angle<maxangle
if minangle>maxangle, I query angle>minangle OR angle<maxangle
Takie podejście wydaje się być nieco zagmatwana. Czy istnieje lepsze podejście?
użyć matematyki modulo. '(kąt + zakres)% 360'. reszta będzie prawidłowym kątem 0-> 360. –
http://stackoverflow.com/questions/9138790/cant-use-modulus-on-doubles. W przypadku pływających i podwójnych użyć fmod. –
Pomaga to w logice +360 -360. Naprawdę miałem nadzieję, że będę miał jakiś sposób na uniknięcie (minangle> maxangle) i zmienianie zi na logikę. – eng3