मेरे पास 3 डी पॉइंटक्लाउड है और मैं एक मनमानी बिंदु पी से दूरी डी के भीतर सभी बिंदुओं को कुशलता से पूछना चाहता हूं (जो अनिवार्य रूप से हिस्सा नहीं है संग्रहीत pointcloud)कौन सी डेटा संरचना "पॉइंट पी से दूरी डी के भीतर सभी बिंदुओं" के लिए उपयुक्त है
क्वेरी लगेगा
Pointcloud getAllPoints(Point p, float d);
की तरह कुछ क्या accelerationstructure इस के लिए उचित होगा? एक रेंज-पेड़ केवल आयताकार वॉल्यूम पूछताछ के लिए उचित प्रतीत होता है, क्षेत्र की मात्रा नहीं (निश्चित रूप से मैं क्षेत्र के बाउंडिंगबॉक्स से पूछताछ कर सकता हूं और फिर उन सभी शीर्षकों को हल कर सकता हूं जिनमें डी से बड़ी दूरी है - लेकिन शायद ऐसा करने का एक बेहतर तरीका है यह ??)
धन्यवाद! ,
SearchStructure Create(Set<Point> cloud)
Set<Point> Query(SearchStructure S, Point p, float maxDistance)
SearchStructure Remove(Point p)
SearchStructure Insert(Point p)
SearchStructure Displace(Set<Point> displacement) //where each value describes an offsetVector to the currently present points
आमतौर पर n प्रश्नों के बाद, अंक विस्थापित हो और कुछ (बहुत सारे!) सम्मिलन और विलोपन बना रहे हैं:
Novelocrats सुझाव के अनुसार, मैं संरचना के वांछित कार्यों को परिभाषित करने की कोशिश । ऑफसेट वैक्टर सभी बिंदुओं के बाउंडिंगबॉक्स की तुलना में बहुत छोटे हैं
मुझे लगता है कि रैखिक समय निर्माण बहुत अधिक पूछ सकता है, और लोगों को प्राथमिक प्रश्न के अच्छे उत्तर देने से हतोत्साहित कर सकता है। क्या आप लगातार नए पॉइंट क्लाउड से पूछताछ कर रहे हैं? यदि नए पॉइंटक्लाउड्स मौजूदा में परिवर्तन का परिणाम हैं, तो संरचना का संशोधन सस्ता हो सकता है। – Novelocrat
"क्वेरी" में केवल एक 'आर' है। मैं पोस्टरिटी के लिए फिक्सिंग का सुझाव देता हूं। – Novelocrat
नोवेलोक्रेट: आप सही हैं - नए पॉइंटक्लाउड्स पुराने लोगों में संशोधन कर रहे हैं, लेकिन बहुत मुश्किल हैं (सभी बिंदुओं को स्थानांतरित करते हैं, प्रत्येक एक दूसरे दिशा में, भी, नए अंक जोड़े जा सकते हैं जो पहले मौजूद नहीं थे) इसलिए मैं पुनर्निर्माण करता हूं नक्शा हर बार सबसे अच्छा होगा। प्वाइंटक्लाउड –