2012-03-18 51 views
6

मैं गए इस अध्ययन कर:क्वाड 2 डी टक्कर से संबंधित पेड़

https://github.com/mikechambers/ExamplesByMesh/blob/master/JavaScript/QuadTree/src/QuadTree.js

और मेरा मानना ​​है कि मैं ट्रैक्टर पेड़ों के बारे में सामान्य विचार को समझते हैं, हालांकि मैं वे कैसे काम के बारे में दो प्रश्न पूछना चाहते हैं करते हैं, और उपरोक्त कार्यान्वयन:

  1. क्या आपको हर पेड़ के पूरे पेड़ को पुनर्निर्माण नहीं करना पड़ेगा? जावास्क्रिप्ट में यह बहुत धीमा नहीं होगा?

  2. यदि मेरे पास ऐसा कुछ है: http://davzy.com/screenshots/skitched-20120318-180324.png, तो यह एक ही चौकोर में अन्य बिंदुओं को खोजने में काफी आसान है, लेकिन मेरे पास एक आयत है जो 3 अलग-अलग quads हिट करता है, क्या मैं इसे एक बच्चे के रूप में प्रदर्शित कर सकता हूं उन सभी quads में से 3?

  3. उपर्युक्त उदाहरण के 144 में यह यह नोड.प्रोटोटाइप._क्लास कोंस्ट्रक्टर = नोड ;, मैं बस उत्सुक हूं कि क्या हो रहा है। मैंने सोचा था कि प्रोटोटाइप एक वर्ग के भीतर भविष्य के उपयोग के लिए एक फ़ंक्शन या चर परिभाषित करने का एक तरीका था, इसलिए मुझे यकीन नहीं है कि यह पंक्ति क्या करती है।

उत्तर

5

1. आप पूरे पेड़ हर कई एमएस के पुनर्निर्माण के लिए है Wouldnt? जावास्क्रिप्ट में यह बहुत धीमा नहीं होगा?

मुझे लगता है कि आप इसके लिए क्या उपयोग कर रहे हैं इस पर निर्भर करता है; लेकिन हां, his blog post about his QuadTree implementation में लेखक का टकराव-पहचान उदाहरण पेड़ को साफ़ करेगा और प्रति सेकंड लगभग 24 बार दोहराएगा (इसलिए, लगभग 40 एमएस प्रति बार)। आप अपने लिए न्याय कर सकते हैं कि क्या यह "बेहद धीमी" है; मेरी मशीन पर यह काफी चिकनी दिखता है। (और यहां तक ​​कि नहीं करता है, तो, मैं उम्मीद करेंगे QuadTree के पुनर्निर्माण वास्तव में सस्ता/कैनवास पर सभी मंडलियों के redrawing की तुलना में तेजी होने के लिए।)

2. [है & hellip;] मैं एक आयत है 3 अलग-अलग quads हिट, क्या कोई तरीका है कि मैं इसे उन सभी quads के बच्चे के रूप में प्रदर्शित कर सकते हैं?

मुझे यकीन है कि आप "प्रदर्शन" से क्या मतलब है नहीं कर रहा हूँ, लेकिन: यदि आप pointQuad पैरामीटर false करने के लिए सेट के साथ निर्माता कहते हैं, तो आइटम हैं दो आयामी (यानी, वे width और height अलावा है x और y), और प्रत्येक आइटम सबसे छोटे क्वाड का बच्चा होगा जो यह पूरी तरह फिट बैठता है। आपके उदाहरण में, चूंकि आयताकार कैनवास की ऊर्ध्वाधर midline को पार करता है, यह रूट क्वाड का प्रत्यक्ष बच्चा होगा।

3. उपरोक्त उदाहरण के 144 में यह यह नोड.प्रोटोटाइप._क्लास कोंस्ट्रक्टर = नोड ;, मैं बस उत्सुक हूं कि क्या हो रहा है। [है & hellip;]

Node "वर्ग" है एक "उपवर्ग" नाम BoundsNode (इस्तेमाल किया जब आइटम दो आयामी हैं), और BoundsNode.prototype._classConstructorBoundsNode (जो विरासत में मिला Node.prototype._classConstructor ओवरराइड करता है) को तैयार है। यह अनुमति देता है Node के subdivide आदेश के निर्माण के लिए एक नया BoundsNodethis अगर में new this._classConstructor(...) लिखने के लिए विधि एक BoundsNode है, और एक नया सादा Node अगर this एक सादे Node है।

संबंधित मुद्दे