2012-06-06 16 views
6

मैं एक 3 डी स्केच को एक पूर्ण 3 डी प्रतिनिधित्व में फोल्डिंग क्रीज़ के साथ बदलने के लिए एक कार्य पर काम कर रहा हूं। लाल रेखाएं घाटियां और नीले पहाड़/शीर्ष होगी। मैं रूपांतरित/मैप किए गए निर्देशांक {पी 1 '... पी 8'} की गणना करना चाहता हूं। मुझे कोई अच्छा सॉफ्टवेयर नहीं मिला है जो स्वचालित रूप से ऐसा कर सकता है लेकिन सुझावों की सराहना करता है।पेपर की एक शीट (कंप्यूटर विजन)

Folding Pattern

  • एक - कोण
  • पी तह - समन्वय
  • - तत्व
  • ब्लू लाइन - मुड़ा हुआ पहाड़
  • लाल रेखा - मुड़ा घाटी

Folded ए 1 = A2 = a3 = 90 डिग्री (pi/2 रेड) (तह कोण) और तीर surfare normals

मैं Matlab उपयोग कर रहा हूँ, लेकिन मैं सामान्य एल्गोरिदम के लिए देख रहा हूँ के रूप में साथ इस समस्या को हल करने के लिए।

मान लिया जाये कि बिंदु P0 ORIGO और तत्व E1 उसके निर्देशांकों नहीं बदलेगा में तय हो गई है, मैं कैसे सबसे अच्छा परिवर्तन का वर्णन करना चाहिए? क्या मुझे अनौपचारिक या सजातीय निर्देशांक, ध्रुवीय निर्देशांक का उपयोग करना चाहिए?

उदाहरण के लिए, बिंदु पी 8 अन्य निर्देशांकों पर निर्भर करता है जो कोणों पर निर्भर करते हैं।

मुझे लगता है कि मैं अंक (नोड्स) और/या एक मैट्रिक्स के लिए किसी प्रकार के आसन्नता मैट्रिक्स का उपयोग कर सकता हूं जो प्रत्येक तत्व को अपने नोड्स के साथ जोड़ता है। ईजी: [ई 1 पी 0 पी 4 पी 5 पी 1; ई 2 पी 1 पी 5 पी 6 पी 2; ...]

प्रत्येक समन्वय के लिए परिवर्तन परिवर्तन + रोटेशन है और परिवर्तन समन्वय/तत्व पर निर्भर करता है। लेकिन यह कई तत्वों से जुड़ा हुआ है ...

मैं 3 डी निर्देशांक में तह पैटर्न के साथ 2 डी "पेपर" को अच्छी तरह से कैसे बदल सकता हूं?

+0

क्या आप गारंटी देते हैं कि पेपर एक दूसरे में नहीं चलेगा? फोल्डिंग ऑर्डर क्या है (रोटेशन कम्यूटिव नहीं है)? – tskuzzy

उत्तर

1

आप प्रत्येक फोल्डिंग क्रीज़ के माध्यम से पुनरावृत्त कर सकते हैं, और क्रीज के एक तरफ झूठ बोल रहे सभी पिक्सेल के परिवर्तन की गणना कर सकते हैं।

आप फ़ोल्ड पॉइंट के निर्देशांक की गणना करने के लिए एक ट्रांज़ॉर्मेशन मैट्रिक्स का उपयोग कर सकते हैं। the wikipedia article describing transformation matrix पर एक नज़र डालें।

पहले, सभी बिंदुओं का अनुवाद करें ताकि क्रीज़ अक्ष के साथ गठबंधन हो, फिर क्रीज की दिशा के अनुसार क्रीज के एक तरफ सभी बिंदुओं को घुमाएं। फिर आप पहले अनुवाद को उलट सकते हैं ताकि आंकड़ा अपनी मूल स्थिति पर वापस आ जाए। अगली क्रीज़ के साथ प्रक्रिया के साथ दोहराएं, जब तक कि आप पूरी तरह से आकृति को फोल्ड नहीं कर लेते।

matlab का उपयोग करके, मैट्रिक्स गणना पूर्ववर्ती करने के लिए बहुत आसान है।

+0

ध्वनि जो कुछ भी मेरे मन में था! मैं रॉड्रिग्स के रोटेशन फॉर्मूला का उपयोग कर रहा हूं। हालांकि, जब तह पैटर्न अधिक जटिल हो जाता है तो मुझे लगता है कि कौन से बिंदु गुना करने के लिए मुझे लगता है। सभी को तह करना एक गड़बड़ कर देगा? इस तस्वीर पर एक नज़र डालें। तुम क्या सोचते हो? [लिंक] http://i49.tinypic.com/2ewfozq.png) – POHU

+0

ईक! क्या एक तह पैटर्न! इस तरह के एक पैटर्न के लिए, आपको वह समस्या होगी जो आपके द्वारा तह किए जा रहे लोगों की तुलना में अन्य बिंदुओं को घुमाएगी। नीली रेखा पर स्पष्ट रूप से धक्का देना लाल रेखाओं के साथ कुछ बिंदु खींच जाएगा ... और जो मैंने वर्णन किया उससे कहीं अधिक जटिल है। –

+0

हां हां! मैं इस तरह की समस्या को बहुत उन्नत के रूप में देखता हूं। क्या आपको लगता है कि यह एक ऐसे एल्गोरिदम लिखने के लिए उचित परिस्थितियों में है जो इस तरह के पैटर्न के लिए काम करता है, लेकिन यह भी मनमाने ढंग से पैटर्न के लिए काम करता है? नौकरी पर पहला दिन, भाग्यशाली मुझे हेहे ... – POHU

1

आप शायद कई घूर्णन जोड़ों वाले रोबोटों का वर्णन करने के लिए उपयोग की जाने वाली तकनीकों का उपयोग कर सकते हैं; आपकी समस्या से forward kinematics समस्या के रूप में वर्णित किया जा सकता है।एक और दिलचस्प पढ़ने this हो सकता है।

0

आप बस लाइन के एक तरफ प्रत्येक बिंदु पर एक रैखिक परिवर्तन लागू करना चाहते हैं।

परिवर्तन, एक धुरी के बारे में रोटेशन, जिसका परिवर्तन मैट्रिक्स given by

enter image description here

है के बाद से अक्ष उत्पत्ति के बारे में केंद्रित नहीं है है जब आप पहली बार मूल करने के लिए एक अनुवाद लागू करने के लिए, तो आवश्यकता होगी रोटेशन करें, फिर वापस अनुवाद करें।

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