2015-05-20 10 views
5

में ट्रैकिंग कैसे एक उच्च आयामी अंतरिक्ष कुशलतापूर्वकisosurface उच्च आयाम

+0

आप समाधान का प्रतिनिधित्व कैसे करते हैं? मुझे लगता है कि आपका वर्तमान दृष्टिकोण आपको 3 वक्र देता है, न कि सतह पर, लेकिन मैं गलत हो सकता हूं। –

+0

@YvesDaoust यह सतह 3 न केवल 3 घटता देता है। मैं isocost स्थानों का सेट चाहता हूँ। – CRM

+0

यदि आप अधिक जानकारी प्रदान नहीं करते हैं तो मैं आपकी सहायता नहीं कर सकता। –

उत्तर

1

आप एन आयामों में एक अदिश लागत कार्य हो पर isosurface पता लगाने के लिए,

( y , वाई , .., वाई एन) ε ℝ,   y ε ℝ

लेकिन केवल एक नियमित आयताकार ग्रिड में नमूना,

y कश्मीर = Ψ कश्मीर + ψ कश्मीर x के,   स्थिरांक Ψ कश्मीर ε ℝ और ψ कश्मीर ε ℝ, और ग्रिड निर्देशांक एक्स कश्मीर ε ℕ

और समस्या isosurface पता लगाने के लिए है (रों) मैं,

( y , y , .., y एन) = सी मैं

प्रत्यक्ष दृष्टिकोण में प्रत्येक कक्ष पर सिर्फ पाश होगा ग्रिड, और जांचें कि वर्तमान isosurface वर्तमान सेल को छेड़छाड़ करता है, और यदि ऐसा है, तो मौजूदा सेल के भीतर isosurface के हिस्से का वर्णन करें। (मार्चिंग क्यूब्स यह वर्णन करने का एक दृष्टिकोण है कि आइसोसुरफेस प्रत्येक ग्रिड सेल को कैसे छेड़छाड़ करता है।)

यहां पर प्रतिबंध प्रत्येक एक सेल की जांच करने के बजाय पड़ोस आधारित खोज का उपयोग करना है।

ओपी, 3 डी मामले के लिए विशेष रूप से एक previous question था जो मैं posted उदाहरण कोड, grid.h और grid.c के लिए एक लिंक (Pastebin.com पर है, क्योंकि वे बहुत लंबा इनलाइन शामिल करने के लिए थे)।

यह कार्यान्वयन ओपी की स्लाइसिंग विधि से बिल्कुल अलग है। मेरा वर्तमान आइसोसुरफेस को छेड़छाड़ करने वाली ग्रिड कोशिकाओं पर सीधी, सरल चलना है।यह ग्रिड नमूने को कैश करता है, और एक अलग नक्शा (एक char प्रति ग्रिड सेल) का उपयोग करता है ताकि ट्रैक को ट्रैक किया जा सके कि ग्रिड कोशिकाओं को बाद में चलने के लिए एक ढेर में कैश किया गया, चला गया, और/या धक्का दिया गया। यह दृष्टिकोण आसानी से तीन से अधिक आयामों तक बढ़ाया गया है। हालांकि कोड बिल्कुल तीन आयामों के लिए लिखा गया है, दृष्टिकोण स्वयं तीन आयामों के लिए विशिष्ट नहीं है; आपको केवल किसी भी (समझदार) आयामों को समायोजित करने के लिए डेटा संरचनाओं को समायोजित करना है।

आईसोसफेस चलना ही छोटा है। आप किसी भी ग्रिड सेल से शुरू होते हैं जो आइसोसुरफेस छेड़छाड़ करता है, फिर सभी 2 एन निकटतम पड़ोसी कोशिकाओं की जांच करें ताकि यह देखने के लिए कि आइसोसफेस उनको छेड़छाड़ करता है या नहीं। अभ्यास में, आप जांच के लिए ग्रिड सेल स्थानों के ढेर का उपयोग करते हैं, और पहले से ही जांच की गई ग्रिड कोशिकाओं की पुन: जांच से बचने के लिए ग्रिड सेल झंडे का नक्शा।

क्योंकि ग्रिड सेल प्रति ग्रिड बिंदु नमूनों की संख्या 2 है एन, मेरे उदाहरण कोड इष्टतम नहीं है: आस-पास ग्रिड अंक का एक बहुत खत्म करता है, तो पड़ोसी ग्रिड कोशिकाएं isosurface एक दूसरे को काटना को देखने के लिए मूल्यांकन किया जा रहा। (आईसोसफेस को सीमित करने वाले ग्रिड बिंदुओं की जांच करने के बजाय, आइसोसुरफेस के आस-पास की किसी भी ग्रिड कोशिकाओं से संबंधित ग्रिड पॉइंट की जांच की जाती है।) यह अतिरिक्त कार्य तेजी से बढ़ता है एन बढ़ता है।

एक बेहतर दृष्टिकोण 2 एन संभव ( एन -1) में से प्रत्येक पर विचार करने के लिए अलग से -faces, कोशिकाओं isosurface बिल्कुल एक दूसरे को काटना नहीं है की जांच से बचने के लिए किया जाएगा।

एक एन आयामी नियमित आयताकार ग्रिड में, प्रत्येक कोशिका एक एन आयामी घनाभ, कोने (कोने) पर 2 एन ग्रिड अंक से परिभाषित किया गया है। एन -cuboid कोशिकाओं एन ( एन -1) दो आयामी चेहरे, और 2 एन ( एन -1) आयामी चेहरे की है।

प्रत्येक ( एन -1) -face की जांच करने के लिए आपको 2 एन -1 ग्रिड को परिभाषित है कि ( एन -1) -face बिंदुओं पर लागत समारोह की जांच करने की जरूरत है। यदि उन बिंदुओं पर लागत कार्य आईसोसफेस मान को फैलाता है, तो आइसोसफेस ( एन -1) -फेस को छेड़छाड़ करता है, और आइसोसुरफेस उस दिशा में अगले ग्रिड सेल को भी छेड़छाड़ करता है।

दो ( एन -1) - प्रत्येक अक्ष के लिए लंबवत स्थान हैं। यदि isosurface ( एन -1) अंतर को अनंत अनंतता के करीब छेड़छाड़ करता है, तो isosurface उस अक्ष के साथ अगले ग्रिड सेल को नकारात्मक अनंतता की ओर भी छेड़छाड़ करता है। इसी तरह, यदि isosurface ( एन -1) -फेस सकारात्मक अनंतता के करीब अंतर करता है, तो यह उस अक्ष के साथ अगले ग्रिड सेल को भी सकारात्मक अनंतता की तरफ घुमाता है। इस प्रकार, ( एन -1) -फेस यह तय करने के लिए सही हैं कि पड़ोसी कोशिकाओं की जांच की जानी चाहिए या नहीं। यह सच है क्योंकि ( एन -1) -फेस बिल्कुल दो कोशिकाओं को साझा करने वाले ग्रिड बिंदुओं का सेट है।

उदाहरण सी कोड प्रदान करने में मुझे बहुत संकोच है, क्योंकि 3 डी मामले के लिए एक ही दृष्टिकोण के उदाहरण कोड ने अब तक किसी की भी मदद नहीं की है।मैं आसानी से समझने योग्य शब्दों में दृष्टिकोण का वर्णन करने के लिए चित्रण के लिए 2- और 3-आयामी उदाहरण छवियों के साथ एक लंबे स्पष्टीकरण की आवश्यकता होगी; और तर्क की दृढ़ धारणा के बिना, कोई भी उदाहरण कोड सिर्फ gobbledygook जैसा दिखता है।

1

आप 2 आयाम के लिए लाइब्रेरी का उपयोग कर बेहतर हैं, आप प्रोफेसर पॉल बोर्के से कॉनरेक एल्गोरिदम का प्रयास कर सकते हैं। यह एक मार्चिंग घन के समान है।

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