एक स्थिर गति से स्थानांतरित करने के लिए एक कैटमूल-रोम पट्टी की चाप-लंबाई निर्धारित करें


18

मेरे पास एक रास्ता है जिसे कैटमुल-रोम के विभाजन के एक संयोजन द्वारा परिभाषित किया गया है। मैं XNA में स्टेटिक विधि वेक्टर 2. कैटमूलरॉम का उपयोग करता हूं जो 0 से 1 तक जाने वाले मान के साथ अंकों के बीच प्रक्षेप की अनुमति देता है।

इस मार्ग की प्रत्येक पट्टी की लंबाई समान नहीं है। यह गति अंतर का कारण बनता है अगर मैं रास्ते में आगे बढ़ने के दौरान वजन को हर गति के लिए एक निरंतर गति से जाने देता हूं। मैं यह माप कर सकता हूं कि वजन की गति को तख़्ता की लंबाई पर निर्भर किया जाए। मैं इस तरह की सीमा की लंबाई कैसे निर्धारित कर सकता हूं? क्या मुझे केवल १० सीधी रेखाओं में रेखा को काटकर उनकी लंबाई का योग करना चाहिए?

मैं स्प्लीन द्वारा परिभाषित उत्पन्न जाल पर गतिशील बनावट मानचित्रण के लिए उपयोग कर रहा हूं।

जवाबों:


25

ऐसा लगता है कि आप पूरे वक्र पर कुछ स्थिर मूल्य पर वस्तु की गति को बनाए रखना चाहते हैं - चाप-लंबाई जानने से आपको ऐसा करने में मदद नहीं मिलेगी। यह तुम क्या समय ऑब्जेक्ट को उसके अंत बिंदु तक पहुंच जाएगा पर गणना में मदद मिलेगी अगर , यह उस गति से जा रहे थे तो यह हो जाएगा तुम अब क्या है की तुलना में बेहतर (वस्तु सभी बिंदुओं के बीच एक ही औसत गति होगा), लेकिन वस्तु की वास्तविक गति फिर भी भिन्न होगी क्योंकि यह वक्र के चारों ओर घूमती है।

एक बेहतर समाधान यह होगा कि हम अपने पैरामीट्रिक पैरामीटर (0 से 1 तक जाने वाले पैरामीटर, जिसे मैं sभ्रम से बचने के लिए कॉल करूंगा t = time) को एक चर-दर पर बदलना होगा ds/dt, जो इस बात से निर्धारित होता है कि आप किस गति से वस्तु को आगे बढ़ाना चाहते हैं वह वक्र पर इंगित करता है। इसलिए दूसरे शब्दों में, sप्रत्येक फ्रेम को 0.01 से बदलने के बजाय , हम इसे 0.005 एक फ्रेम, अगले 0.02, आदि द्वारा बदल सकते हैं।

हम प्रत्येक फ्रेम के डेरिवेटिव x( dx/ds) और y( dy/ds) की गणना करके ऐसा करते हैं , फिर सेटिंग करते हैं

ds / dt = गति / sqrt ((dx / ds) 2 + (डाई / ds) 2 )

यही कारण है कि, हम जिस गति से जाना चाहते हैं, और जिस गति से हम वास्तव में जा रहे हैं, यदि हम sएक निश्चित भस्मारती में बदल रहे थे, तो विभाजित करके ।


प्रमाण

हम चाहते हैं कि हमारी वस्तु की गति स्थिर रहे; आइए उस निरंतर नाम को दें speed

हम दूसरे वर्ष पथरी कि, पैरामीट्रिक समीकरणों के लिए में जानने x(s)और y(s),

गति = sqrt ((dx / dt) 2 + (डाई / dt) 2 )

हम भी यही सीखते हैं

dx / dt = dx / ds * ds / dt     (श्रृंखला नियम)

इस प्रकार,

गति = sqrt ((dx / ds) 2 (ds / dt) 2 + (डाई / ds) 2 (ds / dt) 2 )

के लिए हल ds/dt, हम कहा समीकरण मिलता है।


डेरिवेटिव की गणना

मैंने कभी भी उन विशेष स्प्लिन के साथ काम नहीं किया है, लेकिन मैं समझता हूं कि वे सिर्फ देते हैं x(s)और y(s)घन-समीकरणों के संदर्भ में s। इस प्रकार, हम व्युत्पन्न dx/dsआसानी से पा सकते हैं : यदि

x (s) = a * s 3 + b * s 2 + c * s + e

फिर

dx / ds = 3a * s 2 + 2b * s + c

(एक ही के लिए dy/ds) बेशक, आप का सही मूल्यों की जानकारी होनी चाहिए a, bऔर cयह करने के लिए। इस पृष्ठ के अनुसार , उन मूल्यों को खोजना आसान है।


अंत में, शीर्षक में प्रश्न का उत्तर देने के लिए: एक पैरामीट्रिक फ़ंक्शन के चाप-लंबाई समीकरण को खोजने में एक काफी जटिल निश्चित अभिन्न को हल करना शामिल है ; एक घन-समीकरण के साधारण मामले के लिए भी, यह आमतौर पर नहीं किया जा सकता है।

इस प्रकार, आपको संख्यात्मक रूप से अभिन्न का अनुमान लगाना होगा"10 सीधी रेखाओं में तख़्ता काटना और उनकी लंबाई समेटना" जैसा कि आप सुझाव देते हैं कि यह करने का एक बहुत ही सरल तरीका है ; हालाँकि, कुछ अधिक जटिल तरीके हैं जो आपको कम लाइन-सेगमेंट का उपयोग करके अधिक सटीक परिणाम देंगे।

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