यदि आप जिस प्रोग्रामिंग भाषा का उपयोग कर रहे हैं, वह फ़्लोटिंग पॉइंट नंबरों (जैसे पायथन और रूबी) पर% (mod) ऑपरेटर का समर्थन करती है, तो मैं उसका उपयोग करने की सलाह दूंगा। अन्यथा, कुछ अन्य भाषाएँ (जैसे C और C ++) आपको fmod () का उपयोग करने की अनुमति देती हैं।
(जो भी मॉड ऑपरेटर आप उपयोग करते हैं, समय से पहले सुनिश्चित करें कि यह फ़्लोटिंग-पॉइंट नंबरों पर मॉड संचालन करेगा, और यह कि यह आपको हमेशा गैर-नकारात्मक उत्तर देगा। अन्यथा आप बाद में बहुत आश्चर्यचकित होंगे। lat / lon पॉइंट सही नहीं हैं।)
इसे इस तरह उपयोग करें:
# 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
यदि आप इसे एक पंक्ति में करना पसंद करते हैं:
# Put the longitude in the range of [-180,180):
longitude = (longitude + 180) % 360 - 180
इन तरीकों में कोई छोर नहीं है, इसलिए वे बार-बार जोड़ने या घटाने की आवश्यकता के बिना देशांतर मूल्यों को सामान्य करेंगे, चाहे कितनी बार आपका अवलोकन पृथ्वी के चारों ओर घूम गया हो।
संपादित करें:
हम्मम ... मैंने अभी देखा कि जावास्क्रिप्ट %
नकारात्मक मूल्यों के साथ नहीं लगता है जैसे मैंने सोचा था कि यह होगा।
उस मामले में, यह एक-लाइनर आज़माएँ:
longitude = (longitude + 36180) % 360 - 180
36180
हम जोड़ रहे हैं 36,000 + 180. 36,000 सकारात्मक डोमेन में एक नकारात्मक मूल्य स्थानांतरित करने के लिए है, और 180 से अधिक इतना है कि जब यह द्वारा modded है यह शिफ्ट करने के लिए है 360
की सीमा में है, यह हो जाएगा [0360) । - 180
भाग बदलाव यह [-180,180) की श्रृंखला के लिए वापस।
यहाँ एक और लाइनर है, एक जो 36,000 पर निर्भर नहीं करता है वह काफी बड़ा है:
longitude = (longitude % 360 + 360 + 180) % 360 - 180
longitude % 360 + 360
भाग सकारात्मक डोमेन मूल्य रहता है यह सुनिश्चित करेंगे जब यह बाद में द्वारा modded है 360
। + 180
भाग बदलाव इस पर इतना है कि जब यह बाद में हो जाता है 180 यह (के साथ से घटाया - 180
), यह [-180,180) के वांछित रेंज में हो जाएगा।