गतिशील वृक्ष
Box2D एक अच्छी तरह से अनुकूलित इंजन है जिसे एक अनुभवी भौतिकी / गेम प्रोग्रामर द्वारा डिज़ाइन किया गया है । मूल रूप से Box2D ने एक हैश ग्रिड का उपयोग किया था जिसे एक निश्चित ऊंचाई और चौड़ाई की आवश्यकता थी।
जब एरिन एक बेहतर ब्रॉडफेज़ एल्गोरिथ्म में उन्नत हुई तो वह नैथनेल प्रेसन के btDbvt के साथ गई। यह बुलेट भौतिकी द्वारा उपयोग किया जाने वाला ब्रॉडस्पेस है। एरिन ने 2 डी के लिए एल्गोरिदम को संशोधित और अनुकूलित किया।
आप बॉक्स 2 डी मैनुअल (.114.11, या डायनामिक ट्री की खोज) में एक उच्च उच्च स्तरीय ओवरव्यू पढ़ सकते हैं ।
यहां कोड दस्तावेज़ीकरण को छोड़कर (जो सार्वजनिक एपीआई का हिस्सा नहीं है, यह देखते हुए बहुत अच्छा है)।
एक गतिशील AABB ट्री ब्रॉड-फेज़, जो नथानेल प्रेसन के btDbvt से प्रेरित है। एक गतिशील पेड़ एक द्विआधारी वृक्ष में डेटा की व्यवस्था करता है ताकि वॉल्यूम प्रश्नों और किरणों जैसे प्रश्नों को तेज किया जा सके। पत्ते AABB के साथ समीप होते हैं। पेड़ में हम b2_fatAABBFactor द्वारा प्रॉक्सी AABB का विस्तार करते हैं ताकि प्रॉक्सी AABB क्लाइंट ऑब्जेक्ट से बड़ा हो। यह ट्री ऑब्जेक्ट को ट्रिगर किए बिना क्लाइंट ऑब्जेक्ट को छोटी मात्रा में स्थानांतरित करने की अनुमति देता है।
नोड्स को पूल किया जाता है और स्थानांतरित किया जाता है, इसलिए हम संकेत के बजाय नोड सूचकांकों का उपयोग करते हैं।
डायनेमिक ट्री के एल्गोरिथम की मेरी समझ यह है। डायनेमिक ट्री एक क्लासिक एवल बाइनरी ट्री और एक क्वाडट्री के बीच का क्रॉस है । अंतिम प्रभाव एक चतुष्कोण है जो केवल प्रत्येक नोड को आधे हिस्से में विभाजित करता है, और विभाजन रेखा तय नहीं होती है (दो हिस्सों में एक चौकोर पेड़ की तरह समान आकार नहीं होता है)। एवीएल आता है क्योंकि गतिशील विभाजन के साथ क्वाडरी अनिवार्य रूप से एक सूची (ओ (एन) लुकअप गति) को पतित कर सकता है। AVL का उपयोग O lg (N) लुकअप स्पीड को सुनिश्चित करने के लिए रीबेलेंस सबट्रेन्स के लिए किया जाता है।
सभी कोड का सबसे अच्छा एमआईटी है इसलिए नकल / व्युत्पन्न / बेशर्मी-चोरी / आदि के लिए स्वतंत्र महसूस करें।