के लिए दिया गया है:सुरुचिपूर्ण "वाम की" परीक्षण पॉलीलाइन
- (एक्स, वाई) के समन्वय, एक वाहन की स्थिति है।
- (एक्स, वाई) के ऐरे, जो पॉलीलाइन में शिखर हैं। ध्यान दें कि पॉलीलाइन में केवल सीधी सेगमेंट होते हैं, कोई चाप नहीं।
मुझे क्या करना चाहते हैं:
- गणना करने के लिए है कि क्या वाहन बाईं ओर या पॉलीलाइन के अधिकार के लिए है (या शीर्ष पर, बिल्कुल)।
मेरे दृष्टिकोण: सभी लाइन खंडों के
- दोहराएं, और प्रत्येक खंड के लिए दूरी की गणना। फिर निकटतम सेगमेंट के लिए आप एक साधारण बाएं-टेस्ट करते हैं (उदाहरण के लिए here समझाया गया है)।
संभावित मुद्दों:
- तीन अंक एक कोण (जैसे छवि झटका में दिखाया गया है) से छोटी 90 डिग्री के रूप में करते हैं, तो एक और अधिक जटिल परिदृश्य पैदा होती है। जब वाहन नीचे दिखाए गए लाल खंड में है, तो निकटतम सेगमेंट दोनों में से एक हो सकता है। हालांकि, बाएं- परीक्षण दाएं उत्पन्न करेगा यदि पहला सेगमेंट निकटतम सेगमेंट के रूप में चुना जाता है, और छोड़ दिया अन्यथा। हम आसानी से देख सकते हैं (कम से कम, मुझे आशा है), कि सही परिणाम यह होना चाहिए कि वाहन पॉलीलाइन के छोड़ दिया गया है।
मेरा प्रश्न:
- मैं कैसे सुंदर ढंग से, लेकिन ज्यादातर कुशलतापूर्वक देखभाल इस विशिष्ट स्थिति के ले जा सकते हैं?
मेरे ठीक अब तक: दोनों खंडों कि खंड पर एक बिंदु, शिखर बिंदु से शुरू करने के लिए
- कंप्यूट।
- यूक्लिडियन दूरी
- का उपयोग करके उस सेगमेंट को रखें, जिसके लिए गणना बिंदु निकटतम है।
मैं इस फिक्स से बहुत खुश नहीं हूं, क्योंकि मुझे लगता है कि मुझे एक और अधिक सुरुचिपूर्ण समाधान याद आ रहा है, मेरा फिक्स "हैकी" लगता है। क्षमता हालांकि महत्वपूर्ण है, क्योंकि इसका उपयोग रीयलटाइम एम्बेडेड सिस्टम पर किया जाता है।
मौजूदा codebase सी ++ में है, इसलिए यदि आप किसी विशिष्ट भाषा में लिखना चाहते हैं, सी ++ मेरी प्राथमिकता है। धन्यवाद!
[संपादित करें] मैं मेरी ठीक, एक सीधा बिंदु से एक समानांतर बात करने के लिए, बदल के रूप में मुझे लगता है कि यह आसान है रेखा खंड की गणना जावक सामान्य से पालन करने के लिए।
मुझे लगता है कि पॉलीलाइन आत्म-अंतर नहीं है, है ना? – dasblinkenlight
@dasblinkenlight nope, यह स्पष्ट रूप से पहले से चेक किया गया है। यदि यह है तो एक पॉलीलाइन खारिज कर दिया जाता है। – Yuri
मुझे लगता है कि मुझे "बायीं तरफ" के लिए बेहतर परिभाषा की आवश्यकता है जब मैं यह नहीं बता सकता कि मामला "बायीं तरफ" या "दाएं ओर" –