मुझे एक विशेष लाइन-टक्कर एल्गोरिदम बनाने में मदद की ज़रूरत है जो कुछ कोणों पर "कोनों को काटने" की अनुमति देता है।एक गेम (भाषा अज्ञेयवादी) के लिए ट्रिकी लाइन एल्गोरिदम
निम्नलिखित चित्रों में, नीले वर्ग को खिलाड़ी का प्रतिनिधित्व करने दें और काला वर्ग दीवार का प्रतिनिधित्व करता है। सफेद वर्ग है, तो, का प्रतिनिधित्व एक खिलाड़ी की (मान्य वर्ग) "दृष्टि की रेखा" में वर्गों, और ग्रे वर्गों (अवैध वर्ग) एक खिलाड़ी की "दृष्टि की रेखा" बाहर वर्गों हैं:
:की इस पंक्ति जो दीवार के कोने पर गुजर के बावजूद अनुमति दी है को करीब से देख लेते हैं: दूसरी छवि जहां चीजें अधिक दिलचस्प के रूप में हम काटने कोनों शुरू मिलता है 210
लाइन की अनुमति दी है क्योंकि:
- dx < = 0.5 (एक वर्ग 1x1 बताते हैं)
- dx/डीवाई (2 एक निश्चित अनुपात से ऊपर है कहते हैं - मैं इन चित्रों में प्रतिनिधित्व सही मूल्य के बारे में सुनिश्चित नहीं हूँ)
बातचीत लाइन की अनुमति नहीं है क्योंकि इस मामले में वि/dx) के अनुपात (बहुत कम है:।
या शायद मैं प्रवेश वर्ग .... से बाहर निकलने बनाम के कोण के बारे में बात करनी चाहिए
मुख्य समस्या मैं आ रही है कि मैं समझ नहीं कैसे कर सकते हैं ग्रिड पर दो बिंदुओं के बीच किसी भी कोण पर यात्रा करने वाले वैक्टरों के लिए एक समाधान को सामान्यीकृत करना। मैं तय नहीं कर सकता कि मुझे त्रिकोणमिति का उपयोग करना चाहिए या क्या। मेरा सबसे निकटतम समाधान अब तक प्रत्येक वर्ग के साथ डीएक्स और डाई के रूप में लाइन अवरोधों के दशमलव हिस्सों का उपयोग करना है और जांच करें कि क्या यह लाइन की ढलान के आधार पर है और इसमें कौन सा चतुर्भुज है।
क्या कोई मदद कर सकता है?
मैंने उधार लेने या अन्य लाइन एल्गोरिदम से शुरू करने पर भी ध्यान दिया है, लेकिन मुझे कुछ भी उपयोगी नहीं मिला है। उनमें से अधिकतर मैंने देखा है कि (x1, y1) से (x2, y2) (x2, y2) से (x1, y1) के समान होना चाहिए जो इस समस्या को काफी अलग करता है।
से बचना चाहते हैं, तो मुझे लगता है कि आप कई दीवारें प्राप्त कर सकते हैं, और वे हमेशा खिलाड़ी की स्थिति के निकट नहीं हैं? क्या आप अपना वर्तमान एल्गोरिदम पोस्ट कर सकते हैं (कम से कम छद्म कोड)? – Groo
मेरा पहला विचार यह देखना है कि रेखा वर्ग के केंद्र में कितनी करीब हो जाती है। लेकिन आपके दूसरे उदाहरण में, यह मुझे समझ में नहीं आता है कि यह प्रक्रिया सममित नहीं है: मैं आपको देख सकता हूं, लेकिन आप मुझे नहीं देख सकते हैं? – Teepeemm
बिल्कुल, टीपेम: बिंदु ए से बी की रेखा आमतौर पर बिंदु बी से ए के समान नहीं होती है, जब dx! = Dy! = 0. मैं देखता हूं कि मुझे एक स्यूडोकोड उदाहरण मिल सकता है या नहीं। –