2012-07-17 28 views
7

में 2 डी स्पलीन फ़ंक्शन f (टी) को ट्रांसफॉर्म करें, इसलिए मुझे क्यूबिक स्प्लिंस का एक विशेष केस सेट मिला है, जिनके 2 डी नियंत्रण बिंदु हमेशा एक वक्र में परिणाम देंगे जो x अक्ष में कभी भी पार नहीं करेगा । यही है, वक्र दिखते हैं कि वे एक साधारण बहुपद कार्य हो सकते हैं जैसे कि y = f (x)। मैं कुशलतापूर्वक y स्पिनलाइन के साथ समन्वयित करना चाहता हूं जो स्पलीन खंड की लंबाई को चलाने वाले समानांतर दूरी वाले x निर्देशांक से मेल खाते हैं।एफ (x)

मैं कुशलता से y लगाना चाहते हैं पट्टी जहां, उदाहरण के लिए, एक्स = 0.0, एक्स = 0.1, एक्स = 0.2, आदि, या किसी अन्य तरीके से संपर्क किया, प्रभावी ढंग से को बदलने के साथ समन्वय करता है च एक्स, वाई ( टी) एक ( एक्स) समारोह में शैली समारोह।

मैं वर्तमान में एक 4x4 निरंतर मैट्रिक्स और चार 2 डी नियंत्रण बिंदुओं का उपयोग कर रहा हूँ पट्टी वर्णन करने के लिए, या तो हर्मिट या Catmull-रोम splines के लिए मैट्रिक्स स्थिरांक का उपयोग कर, और उनमें से टी एक घन समारोह 0 से लिए जा रहा में प्लगिंग 1.

मैट्रिक्स और नियंत्रण बिंदुओं को देखते हुए, एक्स अक्ष पर इन वाई मानों को प्राप्त करने का सबसे अच्छा तरीका क्या है?

संपादित करें: मुझे यह जोड़ना चाहिए कि आकर्षित करने के लिए पर्याप्त अनुमान पर्याप्त है।

+1

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

+0

@vervellop, संपादित प्रश्न के साथ, आपका वर्तमान दृष्टिकोण सबसे अच्छा जवाब हो सकता है, इसलिए मेरा सुझाव है कि आप इसे एक उत्तर के रूप में पोस्ट करें, ताकि आप अंततः इसे स्वीकार कर सकें यदि कुछ भी बेहतर नहीं हो जाता है। और यदि उपयोगकर्ता इसे इस समस्या के लिए एक अच्छा/उचित समाधान मानते हैं तो उपयोगकर्ता इसे ऊपर उठा सकते हैं। – MvG

+0

आपके प्रश्न में एक विरोधाभास हो सकता है: मूल प्रश्न समान रूप से दूरी * x * निर्देशांक के लिए पूछता है, जबकि संपादन को ड्राइंग के लिए उपयुक्त समाधान की आवश्यकता होती है। स्पष्ट cusps की उपस्थिति में, एक समान दूरी पर नमूनाकरण शायद इन cusps कब्जा करने में असमर्थ होगा। इसलिए मेरा सुझाव है कि आप मूल रूप से प्रश्न छोड़ दें, क्योंकि उत्तर यही है। हो सकता है कि आप ड्राइंग समस्या के बारे में एक नया प्रश्न पूछना चाहें, जो कि आप वास्तव में हासिल करने का प्रयास करते हैं, इस बारे में ब्योरा देते हुए, यानी क्यों 2 डी स्पलीन ड्राइंग करना पर्याप्त नहीं है। – MvG

उत्तर

2

आपका प्रश्न बताता है कि आप समान रूप से रिक्त स्थान x निर्देशांक चाहते हैं, और अनुमानित समाधान ठीक हैं। तो मैं निम्नलिखित एल्गोरिदम का प्रस्ताव करता हूं:

  • इच्छित ग्रिड पॉइंट्स पर निर्णय लें, उदा। प्रत्येक 0.1 x इकाइयां।
  • एल = 0 और आर = 1 के साथ शुरू करें।
  • कंप्यूट एक्स ( एल) और एक्स ( आर) और विचार अंतराल इन अंतिम बिंदुओं से दर्शाया जाता है।
    • अंतराल पर्याप्त रूप से छोटे और ठीक एक ग्रिड बिंदु है, तो इस ग्रिड बिंदु के लिए एक अच्छा सन्निकटन के रूप में केंद्रीय पैरामीटर टी = ( एल + आर)/2 का उपयोग करें, और वापसी है कि एक के रूप में एक तत्व सूची।
    • अगर वहाँ है कि अंतराल में कम से कम एक ग्रिड है, का उपयोग करते हुए ( एल + आर)/2 बंटवारे बिंदु के रूप में दो में इसे विभाजित है, और दोनों गणनाओं से उत्पन्न सूचियों को श्रेणीबद्ध।
    • यदि अंतराल में कोई ग्रिड बिंदु नहीं है, तो गणना की वर्तमान शाखा को छोड़ दें, एक खाली सूची लौटाएं।

इस ग्रिड अंक पर ज़ूम इन करेगा, प्रत्येक चरण में पैरामीटर अंतरिक्ष bisecting, और अपने सभी ग्रिड अंक के लिए उपयुक्त मानकों के साथ ऊपर आ जाएगा।

+1

यह एक बाइसेक्शन विधि है ([लिंक] (http://en.wikipedia.org/wiki/Bisection_method)), कई रूट खोज विधियों में से एक है। एल्गोरिदम की ताकत और कमजोरियों के लिए विकिपीडिया की जांच करें जो समान समस्याओं के लिए बेहतर (या बदतर) काम कर सकती है। –

2

ठीक है, आप टी के लिए अपने एक्स ( टी) = एक्स का समाधान कर सकता है। वह एक घन समीकरण होगा; बदसूरत लेकिन स्पष्ट रूप से हल करने के लिए अभी भी संभव है। यदि आपकी स्पिनलाइन है जैसा कि आप इसका वर्णन करते हैं, तो दो समाधान जटिल होंगे, इसलिए केवल शेष एक ही लेने वाला है। y = f y ( टी) की गणना करने के लिए इसका उपयोग करें। मुझे संदेह है कि यदि आप सटीक समाधान चाहते हैं तो आप कुछ भी आसान कर सकते हैं।

क्यूबिक समीकरण के समाधान की गणना करने के लिए आप general formula from Wikipedia का उपयोग कर सकते हैं।

+0

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

+0

@vercellop, मैंने एक लिंक पोस्ट किया है जो आपको एक घन समीकरण को हल करने के लिए एक सूत्र प्रदान करता है। – MvG

3

अक्सर संख्या root finding तकनीक (जैसे Newton's Method) का उपयोग करेगी यदि एक संख्यात्मक अनुमान पर्याप्त है।