2010-03-16 16 views
8

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

पीएस .: मैं प्राकृतिक पड़ोसी और पोइसन जैसे कई एल्गोरिदम में आया, जो जटिल लग रहा था। मैं एक साधारण समाधान की तलाश में हूं, जिसे जल्दी से कार्यान्वित किया जा सकता है।

संपादित करें: मैं शीर्षक से शब्द "सबसे सरल" हटा दिया है क्योंकि यह भ्रामक हो सकता है

+1

क्या क्रॉस-सेक्शन हमेशा बहुभुज बहुसंख्यक होते हैं? या वे अवतल हो सकते हैं? –

+0

क्रॉस सेक्शन में उत्तल और अवतल क्षेत्रों दोनों शामिल हो सकते हैं। – Gayan

+0

मैं जानना चाहता हूं कि उच्च प्रदर्शन मार्क – Gayan

उत्तर

3

यह सरल है: की सीमा के साथ समान रूप से अंतराल पर एन अंक आकर्षित

  1. प्रत्येक पार अनुभाग पर पार अनुभाग।
  2. क्रॉस-सेक्शन 1 पर एन-वें बिंदु से सीधी रेखाएं क्रॉस सेक्शन 2 पर एन-वें बिंदु पर खींचें।
  3. पुराने क्रॉस-सेक्शन के बीच वांछित दूरी पर अपना नया क्रॉस-सेक्शन लें।

सरल अभी भी:

  1. उपयोग संशोधन के बिना मौजूदा वर्गों के पार से एक।

यह दूसरा सुझाव मुझे लगता है कि यह बहुत आसान हो सकता है, लेकिन मुझे लगता है कि कोई भी आसान नहीं सुझाता है!

संपादित ओपी की टिप्पणी के बाद: (एक फिर से टिप्पणी के लिए बहुत ज्यादा)

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

+0

दूसरा एक निश्चित रूप से बहुत आसान है :) पहला एल्गोरिदम आकृतियों के परिधि पर निर्भर है और कुछ मामलों में विफल होगा s.a. एक आयताकार से त्रिकोण तक मोर्फ़िंग। दो पार अनुभागों के बिंदु ठीक से ओवरलैप नहीं होंगे – Gayan

+0

समझ गया। पिछली टिप्पणी करते समय मैं पहली विधि को गलत समझाऊंगा। धन्यवाद। – Gayan

+0

+ 1 - पहला समाधान सही जैसा लगता है। ध्यान दें कि समान दूरी पर अंतराल अनावश्यक है (और, सामान्य रूप से, असंभव); आपको बस दोनों (उदा। शीर्ष केंद्र) पर एक संबंधित बिंदु चुनने की आवश्यकता है और फिर दोनों आकारों के चारों ओर जाएं, जहां भी दूसरे गुम हो जाएं, वहां कोने जोड़ना। उदाहरण के लिए, एक आयताकार 1x2 आयताकार के पास रास्ते के 1/6, 2/6, 4/6, और 5/6 पर शिखर हो सकते हैं; एक समतुल्य त्रिभुज में उन्हें 1/3 = 2/6 और 2/3 = 4/6 पर हो सकता है, इसलिए इसे चारों ओर के 1/6 और 5/6 पर नए शिखर की आवश्यकता होती है (यानी पहली और आखिरी तरफ का मध्यबिंदु)। –

1

ध्यान दें कि उच्च प्रदर्शन मार्क के उत्तरों के बारे में कुछ अस्पष्टताएं हैं जिन्हें आपको शायद संबोधित करने की आवश्यकता होगी और उनकी विधि के आउटपुट की गुणवत्ता को परिभाषित कर दिया जाएगा। सबसे महत्वपूर्ण बात यह है कि, जब आप क्रॉस-सेक्शन दोनों पर n अंक खींचते हैं, तो आप उनके बीच किस तरह का पत्राचार निर्धारित करते हैं, यह है कि यदि आप ऐसा करते हैं तो उच्च प्रदर्शन चिह्न का सुझाव दिया गया है, तो अंक लेबल करने का क्रम महत्वपूर्ण हो जाता है ।

मैं क्रॉस सेक्शन के माध्यम से एक साथ घूर्णन (ऑर्थोगोनल) विमान का सुझाव देता हूं, फिर बिंदुओं का सेट जो कि एक क्रॉस सेक्शन पर विमान को छेड़छाड़ करता है, केवल उस बिंदु के सेट से मिलान करने की आवश्यकता है जो दूसरे क्रॉस सेक्शन पर उस विमान को छेड़छाड़ करता है। Hypothetically, इन सेटों में अंक की संख्या पर कोई सीमा नहीं है, लेकिन यह निश्चित रूप से मूल स्थिति में पत्राचार समस्या की जटिलता को कम कर देता है।

1

यहां समस्या का एक और प्रयास है, जो मुझे लगता है कि एक बेहतर प्रयास है।

को देखते हुए दो वर्गों के पार C_1, C_2

प्लेस प्रणाली (x,y) समन्वय इसलिए कि जिस तरह से वे अपेक्षाकृत स्थित हैं समझ में आता है के साथ एक वैश्विक संदर्भ फ्रेम में प्रत्येक C_i। प्रत्येक C_i को ऊपरी और निचले वक्र U_i और L_i में विभाजित करें। विचार यह है कि आप लगातार U_1U_2 और L_1 से L_2 पर वक्र को निरस्त करना चाहते हैं। (ध्यान दें कि यदि आप चाहें तो प्रत्येक C_im वक्र में विभाजित करने के लिए इस विधि का विस्तार कर सकते हैं।)

ऐसा करने का तरीका निम्नानुसार है। प्रत्येक T_i = U_i, or L_i नमूना n अंक के लिए, और इंटरपोलिंग बहुपद P{T_i}(x) निर्धारित करें। जैसा कि नीचे उल्लेख किया गया है, बहुपदों को अलग करना विशेष रूप से अंतराल पर उत्सर्जन के लिए अतिसंवेदनशील होता है। इंटरपोलिंग बहुपद के बजाय, कोई भी कम से कम वर्गों को बहुपद फिट करने का उपयोग कर सकता है जो अधिक मजबूत होगा। तब Q{P{U_1},P{U_2}}(x, t) = (t * a_0 + (1 - t) b_0) + ... + (t * a_n + (1-t) * b_n) * x^n जहां विरूपण Q0<=t<=1 जहां t को परिभाषित करता है से अधिक के रूप में परिभाषित किया गया है P{U_2}(x) = b_0 + b_1 * x + ... + b_n * x^n को बहुपद P{U_1}(x) = a_0 + a_1 * x + ... + a_n * x^n के विकार को परिभाषित और इस बिंदु पर विरूपण t=0 हम U_2 पर हैं पर (यानी पर है और t=1 पर हम U_1 पर और हर दूसरे t पर हैं हम दोनों के निरंतर विरूपण पर हैं।) सटीक उसी प्रकार Q{P{L_1},P{L_2}}(x, t) के लिए निम्नानुसार है। ये दो विकृतियां आपको दो क्रॉस-सेक्शन के बीच निरंतर प्रतिनिधित्व बनाती हैं जिन्हें आप किसी भी t पर नमूना दे सकते हैं।

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

मुझे उम्मीद है कि यह स्पष्ट है।

संपादित करें: बहुपदों को इंटरपोलिंग में ऑसीलेशन के मुद्दे को संबोधित किया।

+0

इंटरपोलिंग बहुपदों को _very_ उच्च के लिए उत्सर्जन के लिए अतिसंवेदनशील n - http://en.wikipedia.org/wiki/Runge%27s_phenomenon –

+0

हां यह सही है, हालांकि यदि आप अपने क्रॉस सेक्शन को पर्याप्त उप-वक्र में विभाजित करते हैं, * मुझे लगता है * आप मूल रूप से स्पलीन इंटरपोलेशन प्राप्त करते हैं (यदि आप एन = 3 उठाते हैं)। हालांकि, मुझे लगता है कि आप कितने उप-वक्र को विभाजित करना चाहते हैं, यह महत्वपूर्ण बिंदु है, क्योंकि यह परिसंचरण निर्धारित करेगा। – ldog

+0

हे, मुझे लगता है कि राय की बात है: पी – ldog

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