नेविगेशन जाल के पार "दृष्टि की रेखा" पथ


9

मैं एक नेविगेशन जाल में दृष्टि की रेखा की गणना करना चाहता हूं।

नीचे दी गई छवि पर विचार करें, पीली लाइन केवल ए * का परिणाम है और लाल रेखा दृष्टि की एक पंक्ति का परिणाम है "एल्गोरिथ्म जो इनपुट के रूप में पीली लाइन का उपयोग करता है। अब यूनिट सीधे" ज़िग-जैगिंग "के बिना आगे बढ़ सकती है।

"दृष्टि की रेखा" की गणना करने के लिए एक एल्गोरिथ्म क्या है?

यहाँ छवि विवरण दर्ज करें

जवाबों:


6

आप एक फ़नल एल्गोरिथ्म की तलाश कर रहे हैं।

यहाँ आप एक साधारण हैं

http://digestingduck.blogspot.com.es/2010/03/simple-stupid-funnel-algorithm.html

मूल रूप से, एल्गोरिथ्म किनारों को पोर्टल्स के रूप में पहचानता है, और एक फ़नल का निर्माण करता है जिसे किनारों के शीर्ष के खिलाफ परीक्षण किया जाता है कि वे फ़नल के अंदर हैं या नहीं।

चरण ए में फ़नल को स्टार्ट पोजीशन के साथ बनाया गया है और पोर्टल पीले रंग की रेखा के पार है।

चरण बी में अगले पोर्टल की जाँच की जाती है, ऊपरी शीर्ष फ़नल के अंदर होता है, इसलिए फ़नल ऊपरी लाइन अब पास हो जाती है। लेकिन निचला शीर्ष फ़नल से बाहर है क्योंकि हरे रंग की रेखा के नीचे लाल रेखा, इसलिए नीचे की रेखा पास नहीं होगी, हालांकि, यह पिछले पोर्टल के निचले शीर्ष से होकर गुजरती रहेगी।

जैसा कि आप देख सकते हैं कि फ़नल छोटा और छोटा होगा, चरण F तक, जहाँ फ़नल का निर्माण संभव नहीं है, क्योंकि लाल रेखा एक खराब फ़नल बनाती है, इसलिए ऊपरी शीर्ष को नए प्रारंभ बिंदु और एक नए फ़नल के रूप में चुना जाता है। अंत बिंदु उस जाल में नहीं है तो निर्माण करें।

यहाँ छवि विवरण दर्ज करें

एहसास करें कि इस तरह के एल्गोरिथ्म मॉडल के आकार की समस्या का एक सरल समाधान भी देता है, क्योंकि आप विचार कर सकते हैं कि पोर्टल आपके मॉडल के 2xradius से छोटे हैं।

यहाँ छवि विवरण दर्ज करें


6

एक सरल तकनीक है जिसे दृष्टि विचार की इस पंक्ति का उपयोग करके उत्पन्न पथों के साथ उपयोग किया जा सकता है। मूल रूप से, आप पथ को चलना चाहते हैं, और प्रत्येक नोड पर, "पीछे देखो" दो नोड को अंतिम से पहले देखें कि क्या यह दिखाई दे रहा है। यदि अंतिम से पहले नोड दिखाई दे रहा है, तो आप अंतिम नोड को हटा सकते हैं (क्योंकि आपके पास अपने वर्तमान नोड और अंतिम से पहले नोड के बीच दृष्टि की रेखा है, अंतिम नोड, एक मध्यवर्ती नोड होने की आवश्यकता नहीं है)।

यहाँ छवि विवरण दर्ज करें

एक गमसुत्र लेख में निम्नलिखित छद्म कोड उदाहरण हैं:

checkPoint = starting point of path
currentPoint = next point in path
while (currentPoint->next != NULL)
if Walkable(checkPoint, currentPoint->next)
// Make a straight path between those points:
temp = currentPoint
currentPoint = currentPoint->next
delete temp from the path
else
checkPoint = currentPoint
currentPoint = currentPoint->next

यह एल्गोरिथ्म आपको जैसा चाहता है, जहां Walkableफ़ंक्शन अनिवार्य रूप से एक लाइन-ऑफ़-विज़न फ़ंक्शन है, लेकिन थोड़ा सुधार भी उन स्थितियों में शामिल है जहां पथ दिखाई दे रहा है, लेकिन चलने योग्य नहीं है (यानी गड्ढे, जाल, प्रतिबंधित क्षेत्र)।


मैं समझता हूं कि आप क्या कह रहे हैं, लेकिन मैं अभी भी नहीं जानता कि दृष्टि की रेखा की गणना कैसे करें। क्या आप बता सकते हैं कि त्रिकोण नेविगेशन जाल का उपयोग करके वॉक करने योग्य फ़ंक्शन में क्या होगा?
यनिक लैंग

यह उत्तर ग्रिड आधारित पाथिंग के बारे में है, और एक नेविगेशन जाल परिदृश्य में बेकार है
ब्लाउ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.