एक वक्र के साथ असंगठित बिंदुओं के एक सेट का आदेश देना


9

मेरे पास 3 डी बिंदुओं का एक सेट है (जो कि मैं एक पुस्तकालय से उबरता हूं जो एक ठोस निकाय का कार्य करता है) जो एक वक्र (यानी, ठोस का एक किनारा) से संबंधित है। इसका मतलब है कि इनमें से प्रत्येक बिंदु से वक्र निश्चित रूप से गुजरता है।

फिर भी, बिंदु सेट अनियंत्रित है, इसलिए मुझे इस वक्र को सही ढंग से खींचने में सक्षम होने के लिए उन्हें क्रमबद्ध करने की आवश्यकता है।

क्या इस प्रकार की समस्या के लिए कोई ज्ञात दृष्टिकोण है?

कुछ अतिरिक्त जानकारी:

  • वक्र सामान्य रूप से पैरामीट्रिक (स्प्लिन / बेजियर, सर्कल स्लाइस ..) हैं।
  • अंक को फ्लोटिंग पॉइंट निर्देशांक के रूप में दिया जाता है।
  • अंक बहुत सघनता से भरे हुए हैं (लेकिन वे उतने ही घने हो सकते हैं जितना मैं चाहता हूं)। आपको एक विचार देने के लिए, एक वक्र के लिए जो x में 19 इकाइयों, x में 10 इकाइयों और z में 5 इकाइयों पर कब्जा करता है, मैं वक्र के एक खंड में अंकों के अनुक्रम का उद्धरण देता हूं: (20.7622, ​​25.8676, 0) (20.6573, 25.856, 0) (20.5529, 25.8444, 0) (20.4489, 25.8329, 0) (20.3454, 25.8213, 0)

यहां तक ​​कि अगर हम जानते हैं कि आदेश अनंत संख्या तक घटता है जो बिंदुओं को गर्त में फिट करता है। यहां तक ​​कि अगर हम अतिरिक्त बाधाओं को जोड़ते हैं, तो खुले छोर समस्याग्रस्त हैं क्योंकि उनकी स्पर्शरेखा अभिविन्यास मनमानी हो सकती है। एक तस्वीर यहाँ
joojaa

@ जजेजा हां, आप सही हैं। लेकिन चूंकि बिंदुओं की पैकिंग बहुत घनी है, इसलिए मुझे इसके सटीक होने की उम्मीद नहीं है। यदि मुझे सही क्रम प्राप्त होता है, तो मैं पॉलीलाइन के रूप में अंकों के अनुक्रम को जोड़ने की योजना बना रहा था।
andrea.al

कोड में जो बिंदुओं को क्रमबद्ध करने की आवश्यकता है, क्या आप वक्र के पैरामीट्रिक रूप से भी अवगत हैं? (यदि नहीं, तो मैं अपना पहला उत्तर हटा दूंगा, क्योंकि इसके लिए आपको पैरामीट्रिक फॉर्म को जानना होगा।)
मार्टिन एंडर

@ मार्टिनबटनर हां, अगर जरूरत है, तो मैं वक्र के पैरामीट्रिक रूप तक पहुंच सकता हूं।
andrea.al

1
कृपया एक विशिष्ट बिंदु सेट दिखाएं!
यवेस डाएट

जवाबों:


6

आपके पास असंगठित बिंदुओं से वक्र पुनर्निर्माण नामक एक समस्या है । अब जब आप जानते हैं कि आपको क्या खोजना है, तो आपको कई तरीके मिलेंगे, जैसे कि क्रस्ट, एनएन-क्रस्ट इत्यादि:

चूंकि आप कर्व्स के साथ काम कर रहे हैं और नमूने घने हैं, मेरा सुझाव है कि आप यूक्लिडियन न्यूनतम फैले हुए पेड़ की गणना करें।


4

कुछ स्पष्टीकरणों के बाद, संभवतः एक बेहतर दृष्टिकोण है जिसे वक्र के पैरामीट्रिक रूप को जानने की आवश्यकता नहीं है, और संभावित समस्याग्रस्त संख्यात्मक न्यूनीकरणकरण से भी बचा जाता है।

यदि वक्र स्वयं को प्रतिच्छेद नहीं करता है और वक्र पर बिंदु पर्याप्त रूप से घने रूप से भरे हुए हैं (और इसका मतलब है कि उन्हें वक्र पर किसी भी दो बिंदुओं की तुलना में करीब होना चाहिए जो एक ही खंड से संबंधित नहीं हैं, जैसे कि वक्र लपेटकर चारों ओर), फिर आप आसानी से प्रत्येक नमूने के पिछले और अगले बिंदु को निर्धारित कर सकते हैं:

  • प्रत्येक बिंदु पर दो निकटतम पड़ोसियों का निर्धारण करें। वह एO(nlogn)ऑपरेशन
  • आपको समापन बिंदु के लिए कुछ विशेष उपचार करना होगा। उनके दो निकटतम पड़ोसी प्रत्येक पक्ष पर एक के बजाय वक्र के साथ अगले दो बिंदु होंगे। आप या तो इन अनुमानों का पता लगा सकते हैं यदि दो पड़ोसियों की दूरी का अनुपात कुछ सीमा से अधिक है (1.5 का कहना है, आपके वक्र की चिकनाई पर निर्भर करता है और बिंदुओं को कैसे पैक किया जाता है)। या आप अपने निकटतम पड़ोसी डेटा को एक ग्राफ के रूप में मान सकते हैं, जिसमें आप पाएंगे कि समापन बिंदु के दो पड़ोसी एक दूसरे पर इंगित करते हैं (जो कि ग्राफ़ में कहीं और नहीं होना चाहिए)।
  • अब आप केवल एक अंत बिंदु उठा सकते हैं, और वक्र के साथ बिंदुओं को पार करने के लिए निकटतम पड़ोसियों के साथ चल सकते हैं (हमेशा आप जिस से नहीं पहुंचे थे) का चयन करें।

विशेष रूप से यदि आप बिंदुओं को बहुत घना बना सकते हैं तो यह सबसे विश्वसनीय विकल्प होना चाहिए जब तक कि वक्र स्वयं-अंतरंग न हो। उस मामले में भी, यह दृष्टिकोण मुक्तिप्रद हो सकता है बशर्ते कि आत्म-चौराहा पर्याप्त बड़े कोण पर हो, जो पर्याप्त रूप से सुगम हो (उस स्थिति में आप कुछ अवरोधों के आधार पर सही पड़ोसियों को चुन सकते हैं कि क्रमिक चरण किसी भी कोण से कई गुना अधिक नहीं बना सकते हैं।θ)।


3

चूँकि आपको केवल अंकों के फ़्लोटिंग-पॉइंट निरूपण मिले हैं, इस बात की कोई गारंटी नहीं है कि ये अभी भी वक्र पर स्थित हैं, गोलाई की त्रुटियों के कारण। इसलिए मुझे लगता है कि केवल सामान्य दृष्टिकोण दृष्टिकोण के लिए है जहां वक्र पर वे थे, आपके नमूने के लिए वक्र पर निकटतम बिंदु को खोजने के द्वारा(X,Y,Z)। जैसे अगर आपका पैरामीट्रिक वक्र है(x(t),y(t),z(t)) तो आप को कम करने की कोशिश कर सकते हैं

(Xx(t))2+(Yy(t))2+(Zz(t))2

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

एक बार तुम्हारे पास है t आपके प्रत्येक अंक के लिए, आप बस उन्हें क्रमबद्ध कर सकते हैं t। बेशक, यदि आपके पास कोई नियंत्रण है कि आप कैसे अंक प्राप्त करते हैं तो आप इस मुसीबत के सभी को वापस करने में सक्षम हो सकते हैंt बिंदु के निर्देशांक के साथ ही उन्हें उत्पन्न करते समय तुरंत।

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