एक मिसाइल और बिटमैप इलाके के चौराहे बिंदु को खोजने का सबसे कुशल तरीका क्या है?


10

2 डी बिटमैप इलाके की ढलान को खोजने के बारे में मेरे पहले के सवाल के बाद, मुझे अब 2 डी इलाके पर उस बिंदु को खोजने का सबसे अच्छा तरीका पता होना चाहिए जो मिसाइल ने मारा था। जाहिर है, मैं देख सकता हूं कि मिसाइल के अंतःक्षेत्र इलाके के तहत कोई पिक्सेल है, लेकिन कहते हैं कि यह इलाके में काफी गहरा गया है।

शुरू में जहां यह टकरा गया था, उसे खोजने का सबसे अच्छा तरीका क्या है? मैं एक समय में मिसाइल की पिछली स्थिति में वापस एक्स पिक्सल ले जा सकता था, लेकिन एक्स का अच्छा मूल्य क्या होगा? और क्या कोई स्मार्ट तरीका है? शायद आधी दूरी, फिर एक चौथाई आदि?


आप जिस घटना का वर्णन कर रहे हैं, उसे आमतौर पर "टनलिंग" कहा जाता है, और इससे निपटने का सबसे अच्छा तरीका एक स्वीप टेस्ट पेश करना है - जैसा कि टेट्राड और जेसनड ने नीचे उल्लेख किया है।
जपेवर

सिर्फ "स्वीप टेस्ट" कहने से वास्तव में मुझे मदद नहीं मिलती है। मैं इसे बिटमैप इलाके के साथ कैसे करूं?
इयान

जेसन का सुझाव मुझे सबसे अच्छा लगता है: एक समय में एक पिक्सेल।
जपेवर

जवाबों:


3

टकराव परीक्षण के लिए आपको टिक-टिक-टिक स्थैतिक परीक्षण नहीं करना चाहिए, आपको निशान / स्वीप परीक्षण करना चाहिए।

यहाँ विभिन्न प्रकार की प्राथमिकताओं के लिए विभिन्न सूत्रों की एक विस्तृत सूची है: http://www.realtimerendering.com/intersections.html

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

यह प्रश्न भी देखें (केवल थोड़ा संबंधित): चलती गोले के बीच टकराव का पता लगाने के लिए एक अच्छा एल्गोरिथ्म क्या है?


मैं कीड़े की तरह एक विनाशकारी बिटमैप इलाके के बारे में सोच रहा था। क्या आप डायनामिक रूप से बिटमैप से प्राइमिटिव उत्पन्न कर सकते हैं या यह बहुत क्रेजी होगा?
'19

1
मुझे यकीन है कि आप कर सकते हैं, लेकिन यह आसान हो सकता है / तेज हो सकता है कि एक अनियंत्रित बिटमैप के लिए पिक्सेल परीक्षण द्वारा पिक्सेल किया जाए।
तेतड़

एक सवाल के साथ !! (इसलिए यह हमेशा के लिए नहीं लेता है)
बोबोबोबो नोव

3

बाइनरी खोज अभ्यस्त मदद करते हैं यदि आपके पास दृश्यावली के पतले टुकड़े हैं और तेजी से बढ़ते प्रोजेक्टाइल हैं - तो आप उन्हें याद कर सकते हैं।

मुझे लगता है कि आपका सबसे अच्छा विकल्प एक बार में प्रक्षेप्य पथ के सामने एक रेखा को स्वीप करना है, एक समय में पिक्सेल। आप प्रत्येक चरण को करने से बचने के लिए पूरे वॉल्यूम पर पहले एक बाउंडिंग चेक कर सकते हैं।


बाइनरी खोज क्या है?
इयान

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

3

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


हाँ, मैं एक कीड़े की तरह इलाके सोच रहा था। क्या आप इसे डायनामिक रूप से टाइल्स में विभाजित कर सकते हैं, फिर खाली टाइलों को चिन्हित नहीं करने के लिए? अगर एक ही बार में बहुत सी मिसाइलें होतीं तो शायद चीजें थोड़ी बढ़ जातीं?
इयान

तो क्या आपको लगता है कि मैं पिक्सेल को आगे बढ़ाता हूं, पिक्सेल को आगे बढ़ाता हूं, चौराहे की जांच करने के बजाय पीछे की ओर कदम बढ़ाता हूं?
इयान

मुझे लगता है कि सभी तीन उत्तरों ने आगे की खोज का सुझाव दिया है। अगर आगे कदम यह कुछ दृश्यों पर छोड़ देता है तो पीछे की ओर काम नहीं कर रहा है।
जेसन

हां, निश्चित रूप से आगे की ओर।
काज

1

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

अंत में, सबसे अच्छी विधि संभवतः "प्रत्येक भू-भाग स्तंभ की ऊँचाई से दूर" होने वाली है और फिर अपने पथ के प्रत्येक चरण पर मिसाइल की ऊँचाई की गणना करें। मैं और अधिक आधुनिक खेल नहीं बोल सकता, लेकिन मेरा मानना ​​है कि जब आपने स्कॉरच्ड अर्थ में एक "गुफा" बनाई थी, तो उस गुफा के ऊपर का इलाका सीधे नीचे गिर गया था, जिससे कोई भी नुकसान नहीं हुआ। यदि आप चाहते हैं कि ओवरहैंग्स काम थोड़ा अधिक होगा, लेकिन यह इस मूल विचार का विस्तार होगा। (संकेत: पहले काम करने का मूल विचार प्राप्त करें!)

चूंकि आपका इलाक़ा संभवतः पूरी तरह से मनमाना है, इसलिए कोई शॉर्टकट नहीं हैं। यहां तक ​​कि अगर आप अपने इलाके को एक तख़्ती या कुछ और के लिए मजबूर करते हैं, तो एक बार जब आप इसे नष्ट करना शुरू कर देंगे और लाइन-स्पैन चौराहे परीक्षण पुनरावृत्त होते हैं और आपकी प्रकार की समस्या के लिए गैर-परिपूर्ण या संपूर्ण और अनावश्यक रूप से धीमा होते हैं।

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