2010-06-18 18 views
7

मैं कैसे निर्धारित करूं कि कोई बिंदु पृथ्वी की सतह पर स्थित बहुभुज के अंदर या बाहर है या नहीं?एक बहुभुज के अंदर या बाहर एक बिंदु है जो एक विश्व की सतह पर है

बहुभुज के अंदर दाएं हाथ के नियम के माध्यम से निर्धारित किया जा सकता है, यानी। जब आप बहुभुज के चारों ओर घूमते हैं तो बहुभुज के अंदर आपके दाहिने हाथ पर होता है।

बहुभुज मई

  1. सर्किल या तो ध्रुव
  2. क्रॉस 180 देशांतर
  3. कवर दुनिया

दुनिया के रूप में की 50% से अधिक एक क्षेत्र सामान्य रे पार है एल्गोरिदम सही ढंग से काम नहीं करते हैं।

+0

आपका प्रश्न वास्तव में स्पष्ट नहीं है का वर्णन करता है, तो क्या करना है तय करना होगा: बहुभुज (परिभाषा के द्वारा) घुमावदार नहीं किया जा सकता है ताकि आप के बजाय पूछ कैसे निर्धारित करने के लिए कर रहे हैं क्या एक बिंदु एक क्षेत्र की सतह पर है? यह वास्तव में आसान है: यदि सतह के केंद्र की दूरी == क्षेत्र की त्रिज्या है तो यह सतह पर है। –

+1

मेरा मानना ​​है कि उनका मतलब है कि यदि आप क्षेत्र पर बिंदुओं की एक श्रृंखला लेते हैं और उनके बीच एक बंद आकार बनाते हैं। बहुभुज बिंदुओं को किनारों से जोड़ने के तरीके के बारे में बेहतर बिंदु अस्पष्ट लगता है (आप उन्हें सीधे क्षेत्र पर परियोजना से कनेक्ट कर सकते हैं, शायद?) – Akusete

+0

सही, मेरी दुनिया में एक बहुभुज क्षेत्र पर बिंदुओं की एक श्रृंखला है और मैं एक बंद आकार का निर्माण करता हूं उनके बीच – richard

उत्तर

2

वास्तव में सामान्य किरण ट्रेसिंग और घुमावदार नियम दृष्टिकोण थोड़ा समायोजन के साथ एक क्षेत्र की सतह पर ठीक काम करता है।

किसी क्षेत्र की सतह पर 'सीधी रेखा' एक महान सर्कल है और दूरी मीटर या इंच की बजाय कोणीय इकाइयों में मापा जाता है। क्षेत्र की सतह पर एक मनमानी बिंदु से एक किरण खींचने के लिए उस मनमानी बिंदु और क्षेत्र की सतह पर किसी भी अन्य बिंदु के माध्यम से बस एक महान सर्कल बनाते हैं। गणित को साफ रखने के लिए उस बिंदु से पीआई/2 दूर एक दूसरे बिंदु का चयन करें जिसका स्थान आप परीक्षण कर रहे हैं। महान सर्कल और आपके परीक्षण बहुभुज के लिए सामान्य भी अजीब नियम लागू करें।

घुमावदार नियम सीधे विमान में सीधी रेखाओं से (क्षेत्रों के) क्षेत्र में सीधे मंडलियों से सीधे अनुवाद करता है।

अब आपको केवल मूल गोलाकार ज्यामिति संचालन के जावा कार्यान्वयन की आवश्यकता है। मेरे पास उस मोर्चे पर कोई सिफारिश नहीं है, लेकिन मुझे लगता है कि इंटरनेट मदद करेगा। गणित के लिए Mathworld से शुरू करें।

एक और दृष्टिकोण आपके बिंदुओं और बहुभुज को क्षेत्र की सतह से विमान तक प्रोजेक्ट करना होगा - जो नक्शा अनुमान है - विद्रोह का स्थलीय संबंध इस तरह के परिवर्तन से प्रभावित नहीं होगा।

ओह, और आप अपने बहुभुज एक महान चक्र

+1

यदि आपका बहुभुज एक महान सर्कल का वर्णन करता है तो आपको कुछ भी तय करने की आवश्यकता नहीं है। अभी भी एक इंटीरियर और बाहरी है। –

2

किरणों के बजाय विमानों का उपयोग करें। दो बिंदुओं द्वारा परिभाषित गोलाकार की सतह पर एक "रेखा" एक महान सर्कल का एक चाप है (सर्कल जिसका केंद्र क्षेत्र का केंद्र है) और यह उस विमान में भी निहित है जिसमें उन दो बिंदुओं और गोलाकार का केंद्र होता है ।

परीक्षण करें कि "पॉलीगॉन" के प्रत्येक किनारे के लिए बिंदु "अधिक" या "कम" है, यह निर्धारित करने के लिए कि "रेखा" का कौन सा पक्ष चालू है।

+0

धन्यवाद, मैं मूल सिद्धांत को समझता हूं। क्या आप जावा एपीआई के बारे में जानते हैं जो ऐसा करता है? या कहीं मुझे एक एल्गोरिदम मिल सकता है? – richard

+1

नासा भू-स्थानिक अनुप्रयोगों के लिए वर्ल्डइंड नामक एक ओपन सोर्स जावा एसडीके प्रदान करता है। आपको जो चाहिए वह आपके लिए अधिक हो सकता है लेकिन यह आपके आवेदन के लिए और अधिक विचार प्रदान कर सकता है। http://worldwind.arc.nasa.gov/java/ – Tansir1

+0

मैं इसे गणित की समस्या की तरह संबोधित करूंगा। विमान पर तीन बिंदुओं से विमान के लिए एक सूत्र खोजें, अपने बिंदु को सूत्र में प्लग करें और देखें कि विमान का कौन सा पक्ष चालू है। लाओ, कुल्ला, दोहराना। मैं बेलनाकार/गोलाकार समन्वय प्रणाली के बजाय xyz निर्देशांक का उपयोग करता हूं, सिर्फ इसलिए कि विमान इस तरह से सरल हैं। चूंकि मैं आपके रे क्रॉसिंग एल्गोरिदम से परिचित नहीं हूं, इसलिए मुझे नहीं पता कि इस दृष्टिकोण को कैसे अनुकूलित किया जाए, लेकिन मुझे संदेह है कि यह करने योग्य है। – Slartibartfast

संबंधित मुद्दे