2D भौतिकी: पिछली स्थिति बनाम संचय वेग का भंडारण


9

मैंने 2d गेम ट्यूटोरियल और पुस्तकों की संख्या देखी, जहां किसी वस्तु की पिछली स्थिति को वेग वेक्टर के बजाय राज्य में संग्रहीत किया गया था। वेग को तब प्रत्येक फ्रेम की गणना पदों के बीच अंतर के रूप में की जाती है।

उस विधि के क्या फायदे हैं?


2
क्या आप संदर्भ के लिए प्रश्न में ट्यूटोरियल से लिंक कर सकते हैं?
अंको

मैं Anko की एक ही जिज्ञासा साझा करता हूं
dnk drone.vs.drones

इस ट्यूटोरियल में उल्लेख किया गया है कि इसे वेरलेट एकीकरण कहा जाता है। मुझे यह लेख मिला , जिसमें वेरलेट के फायदों के बारे में बताया गया है। असल में, टकराव और जटिल बाधाओं को संभालना आसान है।
Terzalo

@Terzalo मेरे उत्तर का अद्यतन संस्करण देखें कि क्या यह हाथ में विशिष्ट मामले के पीछे के सामान्य तर्क को समझने में मदद करता है
MAnd

जवाबों:


1

आप जिन ट्यूटोरियल या किताबों को पढ़ चुके हैं, उन्हें जानने के बिना, मैं यहां आपको बता सकता हूं।

भौतिकी की परिभाषा के संदर्भ में अधिक सटीक होना: वेक्टर दिशा की गणना वर्तमान स्थिति और अंतिम स्थिति के बीच अंतर के रूप में की जाती है। सदिश वेग समान होता है जो एक स्थिति से दूसरी स्थिति में जाने पर विभाजित समय से विभाजित होता है। देखें: http://www.physicsclassroom.com/class/1DKin/Lesson-1/Speed-and-Velocity

हालांकि, जब बीता हुआ समय जेनेरिक "1 फ्रेम" माना जाता है, अर्थात अंतिम फ्रेम से वर्तमान तक, तो वेक्टर वेग और वेक्टर दिशा समान हो जाती है। छद्म कोड में:

direction = current_position - past_position
elapsed_time = 1 frame
velocity = direction / elapsed_time

तो, सामान्य तौर पर, अंतिम फ्रेम में स्थिति को संग्रहीत करने और वर्तमान फ्रेम में स्थिति प्राप्त करने का मुख्य कारण यह है कि यह अद्यतन दिशा (और इसलिए अद्यतन वेग) को जानने का एकमात्र तरीका या सबसे सस्ता तरीका हो सकता है, वर्तमान फ्रेम में आंदोलन की दिशा।

मान लीजिए कि आप किसी दिए गए फ्रेम में दिशा (या यहां तक ​​कि वेग) संग्रहीत करते हैं। अगले फ्रेम में, यह जानने का एकमात्र तरीका है कि क्या दिशा (या यहां तक ​​कि वेग) बदल गया है यदि आपने इसे फिर से गणना की है। इसका कारण यह है कि पिछली दिशा या पिछले वेग आपको एक फ्रेम से दूसरे फ्रेम में परिवर्तित होने की स्थिति में वर्तमान दिशा या वर्तमान वेग की जानकारी नहीं देते हैं।

अब, आपने अपने स्वयं के प्रश्न में टिप्पणी में जिन ट्यूटोरियल का उल्लेख किया है, उन्हें ध्यान में रखते हुए, यह और भी स्पष्ट हो जाता है। एक ट्यूटोरियल में लेखक कहता है कि:

अब, चलो हमारे कण को ​​सिखाते हैं कि वेरलेट एकीकरण के साथ कैसे आगे बढ़ना है। यह कहने का केवल एक फैंसी तरीका है कि हम यह पता लगाने जा रहे हैं कि हमारा कण कितनी तेजी से आगे बढ़ रहा है, इस फ्रेम की स्थिति इसकी अंतिम फ्रेम से तुलना कर रही है। क्यों? क्योंकि यह हमें निहित वेग प्रदान करता है - कण की वर्तमान स्थिति में कोई भी परिवर्तन स्वचालित रूप से अपने वेग को अपडेट करेगा

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

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