Kullandığınız programlama dili kayan nokta numaralarında (Python ve Ruby gibi)% (mod) operatörünü destekliyorsa, bunu kullanmanızı öneririm. Aksi takdirde, diğer bazı diller (C ve C ++ gibi) fmod () kullanmanıza izin verir.
(Hangi mod operatörünü kullanırsanız kullanın, kayan noktalı sayılarda mod işlemleri yapacağından ve size her zaman olumsuz olmayan cevaplar vereceğinden emin olun. Aksi takdirde, birçoğunuz enlem / boylam noktaları doğru değil.)
Şöyle kullanın:
# Put the longitude in the range of [0,360):
longitude %= 360
# Put the longitude in the range of [-180,180):
if longitude >= 180:
longitude -= 360
Hepsini tek bir satırda yapmayı tercih ediyorsanız:
# Put the longitude in the range of [-180,180):
longitude = (longitude + 180) % 360 - 180
Bu yaklaşımların döngüleri yoktur, bu nedenle gözleminiz dünyanın etrafında kaç kez dönmüş olursa olsun, boylam değerlerini tekrar tekrar eklemeye veya çıkarmaya gerek kalmadan normalleştirirler.
Düzenle:
Hmmm ... Javascript'in %
düşündüğüm gibi negatif değerlerle başa çıkmadığını fark ettim .
Bu durumda, bu tek astarı deneyin:
longitude = (longitude + 36180) % 360 - 180
36180
De, eklediğimiz 36.000 + 180. 36.000 pozitif etki alanına negatif bir değer taşımaktır olduğunu ve 180'den fazla yüzden modded zaman bu kadar kaydırmaya olduğu 360
aralığında, bu olacak [0360) . - 180
Parça değişimleri bu [-180,180) aralığında geri.
İşte 36.000'in yeterince büyük olmasına dayanmayan başka bir tek astar:
longitude = (longitude % 360 + 360 + 180) % 360 - 180
longitude % 360 + 360
Daha sonra modded ne zaman parçası pozitif etki alanındaki değeri kalır sağlayacaktır 360
. + 180
Bu daha sonra (ile çıkarılır 180 alır parça değişimleri bu fazla böylece - 180
), bu [-180,180) arasında arzu edilen aralık içinde olacak.