2 डी वस्तु-संरेखित बाउंडिंग-बॉक्स चौराहा परीक्षण


9

मेरे पास दो वस्तु-संरेखित बाउंडिंग बॉक्स हैं (अर्थात अक्ष संरेखित नहीं, वे ऑब्जेक्ट के साथ घूमते हैं)। मैं जानना चाहूंगा कि क्या दो ऑब्जेक्ट-एलायंस बॉक्स ओवरलैप हैं। ( संपादित करें: ध्यान दें - मैं दूर की वस्तुओं को जल्दी से छोड़ने के लिए एक अक्ष-संरेखित बाउंडिंग बॉक्स परीक्षण का उपयोग कर रहा हूं, इसलिए यह महत्वपूर्ण नहीं है कि क्वाड रूटीन थोड़ा धीमा है। )

मेरे बक्से को चार x, y अंक के रूप में संग्रहीत किया जाता है। मैंने उत्तर के लिए चारों ओर खोज की है, लेकिन मैं अपने विशेष मामले में उन्हें लागू करने के लिए उदाहरणों में चर नामों और एल्गोरिदम की समझ नहीं बना सकता।

क्या कोई मुझे यह दिखाने में मदद कर सकता है कि यह कैसे किया जाएगा, स्पष्ट और सरल तरीके से? धन्यवाद। (विशेष भाषा महत्वपूर्ण नहीं है, C- शैली छद्म कोड ठीक है।)

जवाबों:


5

यदि आप जानते हैं कि यह कहाँ देखना आसान है। आप ओबॉब की तलाश में हैं। यहां जाएं: http://www.realtimerendering.com/intersections.html
वहाँ आपको इस साइट का लिंक मिल जाता है http://www.geometrictools.com/LibMathematics/Intersection/Intersection.html
और वहाँ सही कोड है। (ctrl + f "बक्सों (2 डी) का अंतर")

यह SAT का उपयोग करता है और इसमें स्रोत कोड और लेख होते हैं।


ज्यामिति द्वारा वर्णित एल्गोरिथ्म वह है जिसे मैंने इंगित किया था।
जरी कोमप्पा

मुझे लगता है कि यह 4 साल पहले था, लेकिन हमेशा एक नीचा और वह सब समझाता हूं। यह सुंदर है "आपका उत्तर किसी अन्य महल में है", और अब उत्तर दूसरे मामले में भी नहीं लगता है।
यन

2

बॉक्स ए के प्रत्येक पक्ष के खिलाफ बॉक्स बी के प्रत्येक शीर्ष का परीक्षण करना संभव तरीका है (हस्ताक्षरित दूरी की गणना)। इस तरह आप प्रत्येक खंड को "सामने" या "पीछे" खंड के रूप में वर्गीकृत कर सकते हैं।

यदि बी के सभी शीर्षकों में से एक के एक खंड के "सामने" के रूप में वर्गीकृत किया गया है, तो बी और ए ओवरलैप नहीं करते हैं; अन्यथा, वे करते हैं।

यह कुछ हद तक शामिल है, इसलिए आप पहले सर्कल-सर्कल की जांच करके कुछ प्रदर्शन लाभ प्राप्त कर सकते हैं, वर्गों के बाउंडिंग सर्कल (गणना करने के लिए तुच्छ) का उपयोग कर सकते हैं


मैं पहली बार एक अक्ष-संरेखित बाउंडिंग बॉक्स परीक्षण कर रहा हूं ताकि दूर की वस्तुओं को जल्दी से छोड़ दिया जा सके ... क्या आपके पास क्वाड-क्वाड टेस्ट पर अधिक विवरण है?
AshleysBrain

अस्थायी रूप से दोनों quads को एक ही रूपांतर के साथ घुमाएं जैसे कि उनमें से एक अक्ष संरेखित करता है ... तो SAT टेस्ट का उपयोग करें जैसा कि नोटाबे ने उल्लेख किया है। जब परिणाम मिलता है, तो उन्हें वापस लाने के लिए रोटेशन को उलटा करें।
स्टीव एच।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.