कंप्यूटर गेम के पात्रों की गतिविधि का अनुकरण. कंप्यूटर विज्ञान पाठ "मोशन मॉडलिंग" वेरलेट एकीकरण विधि

यह ट्यूटोरियल 3डी दृश्य के साथ आता है।

संक्षिप्त परिचय

दरअसल, पिछले पाठों में सिनेमा 4डी में भौतिकी के कुछ पहलुओं का पहले ही उल्लेख किया गया था: उदाहरण के लिए, इस साइट पर पहले पाठ में हमने एक गेंद को एक सपाट सतह पर गिराया था, बाद में सिनेमा 4डी के भौतिक मॉडल पर विचार किया गया था अनंत गति जनरेटर का अनुकरण करने के तरीकों में से एक। लेकिन अब तक ये भौतिकी के केवल आंशिक, अत्यंत सतही और सबसे आदिम पहलू थे।

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

वाहन चालन के भौतिक मॉडल का उपयोग करने की आवश्यकता "उबड़-खाबड़ भूभाग पर" शब्दों में निहित है। ज्यादातर मामलों में, ऑटोमोबाइल ट्रैफ़िक का मॉडलिंग करते समय, भौतिक मॉडल का उपयोग करने की कोई आवश्यकता नहीं होती है: कारें एक प्रक्षेपवक्र के साथ समान रूप से चलती हैं (यह बिल्कुल उसी प्रकार का ट्रैफ़िक प्रवाह है जिसे हमने एक कार मॉडल से बनाना सीखा है, याद है?), व्यावहारिक रूप से बातचीत करते हुए पर्यावरण के साथ इसका कोई संबंध नहीं है, और भौतिकी का सहारा लिए बिना, सरल साधनों का उपयोग करके इसे चित्रित करना आसान और सरल है। हालाँकि, जैसे ही हम उस जटिल इलाके के बारे में बात करते हैं जिस पर कार चल रही है, या कार के असाधारण व्यवहार (बहती, स्किडिंग या टकराव) के बारे में - यहीं पर भौतिकी की बारी आती है, जब तक कि आप और मैं नहीं चाहते मैन्युअल रूप से बड़ी संख्या में कुंजियाँ रखें और बाद के व्यवहार के प्रत्येक सेकंड के लिए त्रि-आयामी मॉडल के व्यवहार वक्रों को संपादित करें (और यह अंतिम रेंडर की दृश्य संभाव्यता की गारंटी के बिना)।

लक्ष्य और उद्देश्य

सबसे पहले, आइए अपने लक्ष्य और उद्देश्य परिभाषित करें। इस पाठ में, हमारा लक्ष्य असमान सतह पर गाड़ी चलाते समय कार के कम या ज्यादा प्रशंसनीय व्यवहार को चित्रित करना है। अधिक विशेष रूप से: कार को धक्कों से टकराते समय उछलना और लुढ़कना चाहिए, और पहियों को गड्ढों पर भी लटका देना चाहिए। और, निःसंदेह, घबराहट पर काबू पाने के दौरान उसे धीमी गति से चलना चाहिए और समतल क्षेत्रों में गति बढ़ानी चाहिए।

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

आएँ शुरू करें?

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

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

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

हम एक सरल मार्ग अपनाएंगे - और इस बार हम एक दृश्य नहीं, बल्कि कार बॉडी का एक भौतिक मॉडल बनाएंगे। जैसा कि लेखक ने डिज़ाइन किया है, यह सबसे साधारण बहुभुज घन है। आपके मामले में, यह कोई अन्य बहुभुज वस्तु हो सकती है - मुख्य बात यह है कि यह एसयूवी के शरीर के नीचे दिखाई नहीं देती है, और यह एक बहुभुज मॉडल है, जिसके किनारे पहियों से काफी दूर हैं। हम परंपरागत रूप से इस तत्व को भार केंद्र कहेंगे।

आप पूछते हैं, ऐसा क्यों है? यह एक NULL ऑब्जेक्ट या स्प्लाइन क्यों नहीं हो सकता?

क्योंकि हमने जो भार केंद्र बनाया है, परिभाषा के अनुसार और उसके नाम के आधार पर, एसयूवी के भौतिक मॉडल में सक्रिय रूप से भाग लेने का इरादा है। भौतिक विशेषताओं से संपन्न होने के कारण न तो स्प्लिन और न ही NULL वस्तुएं, बाद वाले का उपयोग करती हैं, क्योंकि उनके पास कोई भौतिक सतह नहीं होती है।

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

यह इस प्रकार के बन्धन के लिए है कि सिनेमा 4D "कनेक्टर" प्रकार की वस्तुएं प्रदान करता है (अंग्रेजी से "कनेक्ट" - "कनेक्ट करने के लिए")। शीर्ष मेनू पर जाएं, "सिमुलेशन" आइटम देखें, ड्रॉप-डाउन मेनू आइटम में "डायनामिक्स" उप-आइटम चुनें और ड्रॉप-डाउन सबमेनू में "कनेक्टर" पर क्लिक करें।

हम देखते हैं कि कार्यशील विंडो में एक नया ऑब्जेक्ट दिखाई दिया है, और उसका नाम ऑब्जेक्ट मैनेजर में दिखाई दिया है। आइए दाहिने सामने के पहिये से शुरू करें। हम कनेक्टर को उस बिंदु पर रखते हैं जहां पहिया का ज्यामितीय केंद्र स्थित है, जो कनेक्टर का उपयोग करके शरीर से जुड़ा होगा - जबकि पहिया का ज्यामितीय केंद्र स्वयं उस स्थान पर स्थित होना चाहिए जहां पहिया हब का केंद्र है पहिये पर स्थित है.

अब आपको कनेक्टर को कॉन्फ़िगर करने की आवश्यकता है। ऑब्जेक्ट मैनेजर में इसका नाम चुनें और नीचे खुलने वाली प्रॉपर्टी विंडो देखें।

पहला पैरामीटर जिसका मान हमें बदलना चाहिए वह कनेक्शन का प्रकार ("प्रकार" पैरामीटर) है, यह निर्धारित करता है कि पहिया शरीर के सापेक्ष कैसे चलेगा। जाहिर है, हमारे मामले में सबसे उपयुक्त प्रकार का कनेक्शन "व्हील सस्पेंशन" होगा। "ऑब्जेक्ट ए" शब्दों के विपरीत क्षेत्र में, ऑब्जेक्ट मैनेजर से वजन केंद्र का नाम खींचें; नीचे की छवि में इसे "बेस" के रूप में नामित किया गया है - यह है जिस पर आपत्ति हैहम पहिया जोड़ रहे हैं. "ऑब्जेक्ट बी" शब्दों के विपरीत क्षेत्र में, पहिया का नाम खींचें (छवि में "व्हील_एफआर" के रूप में दर्शाया गया है, संक्षिप्त नाम "व्हील फ्रंट राइट" से) - यह है उस पर आपत्ति करोहम इसे आपके साथ संलग्न कर रहे हैं. हम "अटैचमेंट ए" और "अटैचमेंट बी" मापदंडों को नहीं छूएंगे - वे इंगित करते हैं कि वस्तुओं के द्रव्यमान केंद्र कहां हैं, और इस मामले में डिफ़ॉल्ट मान हमारे लिए काफी उपयुक्त हैं।

आइए कनेक्टर को फाइन-ट्यूनिंग करने के लिए आगे बढ़ें।

"टकराव पर ध्यान न दें" सेटिंग तब के लिए है जब आप पहिये और भार केंद्र के बीच भौतिक संपर्क से बचना चाहते हैं - उदाहरण के लिए, यदि कनेक्टर सेटिंग्स पहिये को 45 डिग्री तक विचलित करने की अनुमति देती हैं, लेकिन पहिया अभी भी वस्तु पर टिका हुआ है। छू रहा है। जुड़ा हुआ है, और अधिकतम अनुमत कोण तक विचलित नहीं हो सकता है, तो यह सेटिंग मदद कर सकती है। "स्टीयरिंग एंगल" पैरामीटर अपनी मूल स्थिति से पहिया के विचलन का अधिकतम अनुमत कोण है। "सस्पेंशन रेस्ट पोजीशन" पैरामीटर आराम की स्थिति में पहिये के ऊर्ध्वाधर विस्थापन को निर्धारित करता है (अर्थात, उन क्षणों में जब पहिया किसी भी चीज़ के साथ संपर्क नहीं करता है)। हमारे मामले में, मान -15 सेमी है - यदि आप इसे -25 में बदलते हैं, तो एसयूवी का शरीर पहियों के संबंध में इस समय से भी अधिक ऊंचा हो जाएगा, और ग्राउंड क्लीयरेंस बढ़ जाएगा, लेकिन उसी समय एसयूवी की स्थिरता कम हो जाएगी, क्योंकि वजन केंद्र अधिक होगा - क्या ऐसा नहीं है, यह पहले से ही वास्तविक दुनिया में कारों की स्थिरता के संतुलन जैसा दिखता है? निलंबन की कोमलता "निलंबन कठोरता" पैरामीटर के मान पर निर्भर करती है। मूल्य जितना कम होगा, निलंबन उतना ही नरम होगा। "निलंबन डंपिंग" पैरामीटर निलंबन के "उछाल" को निर्धारित करता है। और अंत में, यदि आप चाहें, तो आप "लोअर लिमिट वाई" और "अपर लिमिट वाई" पैरामीटर को सक्रिय कर सकते हैं और उनके लिए दूरी मान निर्दिष्ट कर सकते हैं जिसके आगे पहिया विचलित नहीं हो सकता है।

कनेक्टर स्थापित करने के बाद, हम उसी ऑपरेशन को दोहराते हैं - एक नए कनेक्टर के निर्माण से शुरू करते हुए - दूसरे फ्रंट व्हील के लिए, इस बार बाएं वाले के लिए। शीर्ष मेनू के माध्यम से यात्रा करने के बजाय, जैसा कि आप शायद पहले ही समझ चुके हैं, आप बस दाहिने सामने के पहिये के कनेक्टर को ढूंढ सकते हैं जिसे हमने पहले बनाया था, और कीबोर्ड पर "Ctrl" कुंजी को अपनी पूरी ताकत से दबाकर रखें, खींचें ऑब्जेक्ट मैनेजर में रिक्त स्थान पर कनेक्टर का नाम - इस ऑपरेशन को पूरा करने के बाद, आपको और मुझे कनेक्टर की एक नई प्रति प्राप्त होगी, जिसमें इसके मूल से सभी सेटिंग्स भी प्राप्त होंगी। मुख्य बात यह याद रखना है कि नए कनेक्टर के गुणों के "ऑब्जेक्ट बी" फ़ील्ड में दाएं पहिये का नाम बाएं पहिये के नाम में बदलना है।

आगे के पहिये ख़त्म हो गए हैं. चलिए पीछे की ओर चलते हैं।

और हमें तुरंत एक ऐसे प्रश्न का सामना करना पड़ता है जो पहली नज़र में कुछ हद तक स्पष्ट नहीं है: हमारी एसयूवी में कितने इंजन होने चाहिए? आप कहते हैं, यह कैसा अजीब सवाल है - बेशक एक।

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

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

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

तो, यह तय हो गया है - हम एक व्हीलसेट बनाते हैं: दो पीछे के पहियों का चयन करें - आप कार्यशील विंडो में, आप ऑब्जेक्ट मैनेजर पर जा सकते हैं, जहां यह आपके लिए अधिक सुविधाजनक है - फिर ऑब्जेक्ट मैनेजर में हम किसी पर राइट-क्लिक करें उनमें से और ड्रॉप-डाउन संदर्भ मेनू में हम "कनेक्ट" आइटम +डिलीट ("कनेक्ट और डिलीट") की तलाश करते हैं। उसी संदर्भ मेनू में ऊपर की पंक्ति में एक "कनेक्ट" आइटम है - तत्वों को संयोजित करते समय, यह एक नई वस्तु बनाता है, मर्ज किए गए मॉडल के मूल को अछूता छोड़ देता है; हमें अलग-अलग पिछले पहियों के मूल की आवश्यकता नहीं होगी।

हम देखते हैं कि एसयूवी के पिछले पहिये एक त्रि-आयामी तत्व बन गए हैं - जिसकी हमें आवश्यकता थी।

हम एक और कनेक्टर बनाते हैं - इस बार रियर व्हीलसेट के लिए, और इसकी अखंड प्रकृति को देखते हुए, केवल एक ही है, और फिर हम इसे कॉन्फ़िगर करते हैं। हम इसे, स्वाभाविक रूप से, व्हीलसेट के केंद्र में रखते हैं।

अब एक मोटर बनाएं: शीर्ष मेनू, फिर से "सिमुलेशन" आइटम, ड्रॉप-डाउन मेनू, "डायनामिक्स" उप-आइटम, ड्रॉप-डाउन मेनू में "मोटर" उप-आइटम।

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

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

आप संभवतः एनीमेशन चलाने और परिणामों की जांच करने के लिए तैयार हैं। यदि ऐसा है, तो यह थोड़ा जल्दी है: आखिरकार, हमने काम का केवल एक हिस्सा पूरा किया है - हमने वस्तुओं पर भौतिक प्रभाव स्थापित किया है, जबकि भौतिक वस्तुएं अभी तक हमारे पास नहीं हैं। और पहिये, आप कहते हैं, और शरीर, और वजन घन? यह सच है, बहुभुज मॉडल बनाए गए हैं, लेकिन भौतिक रूप से प्रभाव की ताकतों के लिए न तो पहिए, न ही शरीर, न ही वजन घन अभी तक मौजूद हैं - जब तक कि गतिशीलता टैग पहियों, शरीर और वजन घन को नहीं सौंपा जाता है। क्योंकि यह त्रि-आयामी दृश्य के बहुभुज तत्व को सौंपा गया डायनेमिक्स टैग है जो इंगित करता है कि यह तत्व गतिशील विशेषताओं वाले अन्य तत्वों के साथ बातचीत में भाग लेता है।

आइए एसयूवी की भौतिक विशेषताओं को स्थापित करना शुरू करें। और साथ ही हम उन तत्वों की एक पदानुक्रमित संरचना बनाते हैं जिनमें से यह शामिल है। सबसे पहले, हम एक समूह बनाते हैं जिसमें कार के सभी तत्व एकत्र किए जाएंगे (यदि यह पहले से नहीं किया गया है) - यह Alt + G कुंजी संयोजन का उपयोग करके हाथ में आने वाले पहले कुछ तत्वों को जोड़कर किया जा सकता है (मैं आपको याद दिला दूं कि, सिनेमा 4डी अनुक्रमिक अलग-अलग कुंजी दबाने में आम तौर पर स्वीकृत विधि के विपरीत, यह संयोजन एक साथ दबाया जाता है!), या एक शून्य ऑब्जेक्ट बनाकर।

इसके बाद, हम बनाए गए समूह को कुछ अद्वितीय, अद्वितीय और अविस्मरणीय शब्द कहते हैं (उदाहरण के लिए, लेखक ने इसे "सीएआर" कहा है) और एसयूवी से संबंधित सभी तत्वों को इसमें भर देते हैं: बॉडी, पहिए, कनेक्टर, वेट क्यूब और मोटर।

अब हम समूह के तत्वों को आसपास के भौतिक मॉडल के साथ भौतिक संपर्क में प्रतिभागियों के रूप में नामित करते हैं: समूह का नाम चुनें, उस पर राइट-क्लिक करें, ड्रॉप-डाउन मेनू में, माउस कर्सर को "डायनामिक्स टैग" आइटम पर ले जाएं और अंतिम सबमेनू से ड्रॉप-डाउन मेनू में, केवल एक आइटम - "डायनामिक्स बॉडी" चुनें।

यदि आप अब तक इस पाठ को ध्यान से पढ़ रहे हैं, तो आप पूछ रहे होंगे: "सीएआर" समूह, एक शून्य वस्तु होने के नाते, भौतिक मॉडल में भौतिक रूप से कैसे बातचीत कर सकता है? यह सही है, NULL ऑब्जेक्ट स्वयं काम नहीं करता है। लेकिन गतिशीलता के गुणों को इसके अधीनस्थ सभी तत्वों द्वारा विरासत में प्राप्त किया जा सकता है, और प्रत्येक तत्व को व्यक्तिगत रूप से गतिशीलता टैग निर्दिष्ट करने की कोई आवश्यकता नहीं है। मुख्य बात ग्रुप डायनेमिक्स टैग को सही ढंग से सेट करना है। कॉन्फ़िगर करें: टैग का चयन करें और नीचे खुलने वाली प्रॉपर्टी विंडो में, "डायनामिक्स" टैब का चयन करें, जिसमें हम "सक्षम" पैरामीटर को सक्रिय करते हैं (जिससे इंटरेक्शन भौतिकी शामिल है) और "डायनामिक" पैरामीटर के लिए "ऑन" मान का चयन करें ( जिससे दृश्य के लिए सामान्य सभी भौतिक नियमों, जैसे गुरुत्वाकर्षण, आदि) में समूह की भागीदारी का संकेत मिलता है...

फिर उसी गुण विंडो में "टकराव" टैब पर जाएं और उन मानों को निर्दिष्ट करें जो समूह तत्वों को गतिशीलता नियमों को प्राप्त करने के लिए मजबूर करते हैं: "इनहेरिट टैग" पैरामीटर के लिए "बच्चों पर टैग लागू करें" ("विरासत"), "व्यक्तिगत तत्वों" के लिए "सभी", "स्वयं टकराव" के लिए एक चेकमार्क और "आकार" ("सर्किट") के लिए "स्वचालित (MoDynamics)"। हम शेष मापदंडों को आपकी पसंद के अनुसार कॉन्फ़िगर करते हैं।

यहां अंततः एसयूवी की बॉडी के बारे में याद करना उचित होगा। हमारे विचार के अनुसार, इसे त्रि-आयामी दृश्य के आसपास के भौतिक मॉडल के साथ भी बातचीत करनी चाहिए - उदाहरण के लिए, अपनी नाक के साथ कार्डबोर्ड बक्से की एक दीवार फेंकें - लेकिन साथ ही इसे अपने समूह के अन्य तत्वों के साथ बातचीत नहीं करनी चाहिए - एक वजन घन और पहियों के साथ. इस परिणाम को प्राप्त करने के लिए, हम इसे वेट क्यूब के अधीन कर देंगे और बॉडी को एक व्यक्तिगत डायनेमिक्स टैग असाइन करेंगे - बिल्कुल कार तत्वों के समूह की तरह - लेकिन बॉडी डायनेमिक्स टैग में हम "डायनामिक" पैरामीटर को बंद कर देंगे (मान सेट करें) इसके लिए "ऑफ़" टैब में "डायनामिक्स" (ध्यान दें कि "सक्षम" पैरामीटर सक्रिय रहता है, अन्यथा शरीर दृश्य के भौतिक मॉडल में पूरी तरह से भाग लेना बंद कर देगा, और एसयूवी के रास्ते में आने वाली कोई भी बाधा स्वतंत्र रूप से शरीर से गुजरें!) बॉडी को सौंपे गए डायनामिक्स टैग के "टकराव" टैब में, आप क्रमशः "इनहेरिट टैग" और "व्यक्तिगत तत्व" पैरामीटर के लिए "कोई नहीं" और "ऑफ" निर्दिष्ट कर सकते हैं - बॉडी में अधीनस्थ तत्व नहीं हैं जिनके लिए शरीर के गतिशील गुणों को स्थानांतरित किया जाना चाहिए।

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

अंत में

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

अंतिम परिणाम एनीमेशन के रूप में है.


लेख का संक्षिप्त अनुवाद-रीटेलिंग:।

परिचय

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

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

विचाराधीन विधि पुनरावृत्तीय है, ताकि एक निश्चित चरण से शुरू करके इसे किसी भी समय रोका जा सके। यह गणना सटीकता और खर्च किए गए समय के बीच एक व्यापार-बंद की अनुमति देता है: यदि एक निश्चित मात्रा में त्रुटि को स्वीकार्य माना जाता है, तो कोड को तेजी से चलने की अनुमति दी जा सकती है; इसके अलावा, निष्पादन के दौरान त्रुटि की भयावहता को अनुकूल रूप से चुना जा सकता है। यह विधि टकरावों और आराम करने वाले संपर्कों को भी संभालती है और एक दूसरे के ऊपर रखे गए निकायों के ढेर का मॉडलिंग करती है, जो कई भौतिकी इंजनों के लिए एक समस्या है।

विधि की सफलता कई तकनीकों के लाभों के सही संयोजन और उपयोग पर निर्भर करती है:

  • वेरलेट संख्यात्मक एकीकरण विधि;
  • प्रक्षेपण का उपयोग करके टकराव और शरीर में प्रवेश को संभालना;
  • विश्राम का उपयोग करते हुए एक सरल बाधा समाधानकर्ता;
  • वर्गमूल सन्निकटन, जिससे गणना की गति बढ़ जाती है;
  • ठोसों को बंधनों से जुड़े कणों के रूप में मॉडलिंग करना।

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

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

निम्नलिखित में, वैक्टर को तीरों वाले अक्षरों द्वारा और उनके घटकों को सबस्क्रिप्ट द्वारा दर्शाया जाता है: \(\vec(x)=(x_1,x_2,x_3)\) ।

वेरलेट एकीकरण विधि

सिमुलेशन का दिल (यानी कंप्यूटर सिस्टम का उपयोग करके भौतिक प्रक्रिया का अनुकरण करना) एक कण प्रणाली है। आमतौर पर, ऐसी प्रणाली को लागू करते समय, यह माना जाता है कि प्रत्येक कण की दो मुख्य विशेषताएं होती हैं: समन्वय (स्थिति) \(\vec(x)\) और गति \(\vec(v)\) । फिर, निर्देशांक \(\vec(x)^\ prime\) और गति \(\vec(v)^\ prime\) के नए मानों की गणना सूत्रों का उपयोग करके की जाती है

$$ \begin(संरेखित) \vec(x)^\प्राइम &= \vec(x) + \vec(v) \Delta t, \\ \vec(v)^\प्राइम &= \vec(v) + \vec(a) \Delta t, \end(संरेखित) $$

जहां \(\Delta t\) समय चरण है, \(\vec(a)\) न्यूटन के दूसरे नियम \(\vec(f)=m \vec(a)\) के अनुसार गणना की गई त्वरण है (जहां \(\vec(f)\) कण पर लगने वाला कुल बल है)। दिए गए सूत्र संख्यात्मक एकीकरण की सबसे सरल विधि - यूलर की विधि को लागू करते हैं।

हम एक कण के दूसरे विवरण पर विचार करेंगे जिसमें वेग का उपयोग नहीं किया गया है: प्रत्येक कण की स्थिति और वेग को संग्रहीत करने के बजाय, हम कण की वर्तमान स्थिति (\vec(x)\) और उसकी पिछली स्थिति को संग्रहीत करेंगे। एकीकरण चरण \(\vec(x)^ (*)\) . यह मानते हुए कि एकीकरण चरण स्थिर है, हमें नए मानों की गणना के लिए निम्नलिखित सूत्र प्राप्त होते हैं:

$$ \begin(संरेखित) \vec(x)^\प्राइम &= 2\vec(x) - \vec(x)^(*) + \vec(a) \Delta t^2, \\ \vec( x)^(*) &= \vec(x). \end(संरेखित) $$

संख्यात्मक एकीकरण की इस विधि को वेरलेट विधि (देखें) कहा जाता है और आणविक गतिशीलता में सक्रिय रूप से उपयोग किया जाता है।

वेरलेट विधि दूसरे व्युत्पन्न की गणना के लिए एक अनुमानित सूत्र पर आधारित है

$$ \frac(\Delta^2 \vec(x))(\Delta t^2) = \frac( \frac(\vec(x)^\ prime - \vec(x))(\Delta t) - \frac(\vec(x) - \vec(x)^(*))(\Delta t) )(\Delta t) = \frac(\vec(x)^\ prime - 2\vec(x) + \vec(x)^(*))(\Delta t^2) = \vec(a) $$

यह सन्निकटन सबसे सटीक नहीं है (संख्यात्मक एकीकरण के अधिक उन्नत तरीके हैं), लेकिन यह स्थिर है और तेज़ी से काम करता है। कारक 2 को घटाकर, मान लीजिए, 1.99 करके, हम एक ड्रैग बल का परिचय देते हैं जो सिस्टम की ऊर्जा को नष्ट कर देता है। यह भी ध्यान दें कि \(\vec(x)-\vec(x)^(*)\) अंतिम एकीकरण चरण (\(\vec(v)\Delta t\) ) के दौरान तय की गई दूरी है।

एकीकरण चरण के अंत में, प्रत्येक कण \(\vec(x)\) की वर्तमान स्थिति को अगले चरण में उपयोग के लिए संबंधित चर \(\vec(x)^(*)\) में संग्रहीत किया जाता है। यदि सिस्टम में कई कण हैं, तो उनके निर्देशांक की प्रतिलिपि बनाने के बजाय पॉइंटर पुनर्निर्देशन का उपयोग करना सुविधाजनक है।

ऊपर वर्णित विचारों को लागू करने वाला कोड इस तरह दिख सकता है (वेक्टर3 वर्ग में वेक्टर पर सभी आवश्यक ऑपरेशन शामिल हैं)

क्लास पार्टिकलसिस्टम (वेक्टर3 m_x [ NUM_PARTICLES ]; // वर्तमान पदवेक्टर3 m_oldx [ NUM_PARTICLES ]; // पुरानी स्थितिवेक्टर3 m_a [ NUM_PARTICLES ]; // कुल बल (त्वरण)वेक्टर3 m_vगुरुत्वाकर्षण ; // ग्रेविटी फ्लोट m_fTimeStep; सार्वजनिक: शून्य टाइमस्टेप(); निजी: शून्य वेरलेट(); शून्य संतुष्टि बाधाएं(); शून्य संचय बल(); // (हम कंस्ट्रक्टर, फील्ड इनिशियलाइज़ेशन आदि को छोड़ देंगे) }; // वेरलेट विधि द्वारा एकीकरण चरण void पार्टिकलसिस्टम::वेरलेट() ( for (int i = 0 ; i< NUM_PARTICLES ; i ++ ) { Vector3 & x = m_x [ i ]; Vector3 temp = x ; Vector3 & oldx = m_oldx [ i ]; Vector3 & a = m_a [ i ]; x += x - oldx + a * fTimeStep * fTimeStep ; oldx = temp ; } } // प्रत्येक कण पर कार्यरत बलों का योगशून्य कणप्रणाली::संचयबल() ( // सभी कण गुरुत्वाकर्षण के प्रभाव में हैंके लिए (int i = 0 ; i< NUM_PARTICLES ; i ++ ) m_a [ i ] = m_vGravity ; } // सुपरइम्पोज़्ड कनेक्शन के अनुपालन की जाँच करनाशून्य पार्टिकल सिस्टम::संतुष्ट बाधाएं() ( // अब हमें इसकी परवाह नहीं है कि इसे कैसे लागू किया जाता है।) // गणना चरण शून्य पार्टिकल सिस्टम :: टाइमस्टेप () (एक्यूमुलेटफोर्सेस (); वेरलेट (); संतुष्ट बाधाएं (); )

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

\(\vec(a)=(0,0,1)\) और प्रारंभिक शर्तें \(\vec(x)=(1,0,0)\) , \(\vec(x)^*= सेट करने का प्रयास करें (0,0,0)\). हाथ से कुछ चरणों की गणना करें और देखें कि क्या होता है।

प्रक्षेपण का उपयोग करके टकराव और संपर्क प्रबंधन

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

यहां हम एक अलग दृष्टिकोण देखेंगे। हम उन कणों को बाधा के बाहर प्रक्षेपित करेंगे जो बाधा में घुस गए हैं। प्रक्षेपण से हमारा तात्पर्य एक कण की गति से है, जो इतना छोटा हो कि उसे बाधा से मुक्त कर सके। आमतौर पर, इसमें कण को ​​संपर्क सतह (बाधा) की सामान्य दिशा में ले जाना शामिल है - इसलिए "प्रक्षेपण" शब्द की उत्पत्ति हुई।

निम्नलिखित उदाहरण पर विचार करें. मान लीजिए कि हमारी "दुनिया" आकार (0,0,0)--(1000,1000,1000) के घन के अंदर है और, इसके अलावा, कणों का पुनर्स्थापन गुणांक शून्य है (यानी, सतह से टकराने वाले कण) घन इससे प्रतिबिंबित नहीं होते हैं)। यह सुनिश्चित करने के लिए कि कणों के निर्देशांक घन के अंदर बने रहें, हम निम्नलिखित कोड लिखते हैं जो प्रक्षेपण को लागू करता है:

// कणों को घन के अंदर रहने के लिए बाध्य करता हैशून्य पार्टिकल सिस्टम :: संतुष्ट बाधाएं () (के लिए (int i = 0; i< NUM_PARTICLES ; i ++ ) { // सभी कणों के लिएवेक्टर3 और x = m_x [i]; x = vmin(vmax(x, वेक्टर3(0, 0, 0)), वेक्टर3(1000, 1000, 1000)); ) )

(vmax अधिकतम की गणना करने का घटकवार संचालन है, और vmin न्यूनतम के समतुल्य गणना है)। यह कोड टकराव और आराम करने वाले संपर्कों दोनों को संभालता है (अर्थात, ऐसे मामले जहां एक बिंदु घन की सतह पर आराम पर होता है), और घन के अंदर सभी कणों की स्थिति को संग्रहीत करता है। वेरलेट विधि की सुंदरता यह है कि गति मानों में उचित परिवर्तन स्वचालित रूप से किए जाते हैं। टाइमस्टेप() के बाद के कॉल में, गति को समायोजित किया जाएगा ताकि इसमें क्यूब की सतह पर लंबवत कोई घटक न हो (जो शून्य पुनर्प्राप्ति कारक से मेल खाता हो)। चित्र 1 देखें.

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

विश्राम विधि का उपयोग करके एक साथ लगाए गए कई कनेक्शनों का प्रसंस्करण

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

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

\begin(समीकरण) x_i \geq 0 \ \text(and)\ x_i \leq 1000 \quad (i=1,2,3). \लेबल(eq:C1) \end(समीकरण)

विचारित उदाहरण में, बांड द्वारा लगाए गए प्रतिबंधों का पालन करने के लिए (ताकि कण घन के अंदर रहें), यह घन की सतह पर "चढ़े हुए" कणों के निर्देशांक को प्रोजेक्ट करने के लिए पर्याप्त है। यह विचार निम्नलिखित छद्मकोड में वर्णित है:

// बाधाओं को लागू करने के लिए स्यूडोकोड (1) i = 1, 2, 3 के लिए सेट xi = न्यूनतम (अधिकतम (xi, 0), 1000)

इसे इस तरह सोचा जा सकता है जैसे कि कण और बाधा की सतह एक असीम रूप से कठोर स्प्रिंग से जुड़ी हुई है, जो लम्बी होने पर तुरंत अपनी सामान्य लंबाई, शून्य के बराबर, पर वापस आ जाती है।

आइए इसमें 100 लंबाई की एक छड़ जोड़कर अपने मॉडल का विस्तार करें। ऐसा करने के लिए, हमें दो कणों (\(\vec(x)_1\) और \(\vec(x)_2\) ) को परिभाषित करने की आवश्यकता है और इसकी आवश्यकता है उनके बीच की दूरी हमेशा 100 के बराबर होती है। इस द्विपक्षीय संबंध के लिए गणितीय संकेतन है:

\bec(समीकरण) |\vec(x)_2-\vec(x)_1| = 100. \लेबल(eq:C2) \end(समीकरण)

भले ही समय के प्रारंभिक क्षण में कणों की स्थिति शर्तों \eqref(eq:C2) को संतुष्ट करती हो, तो अगले क्षण में ये स्थितियाँ संभवतः संतुष्ट नहीं होंगी। सही दूरी मान प्राप्त करने के लिए, हम कणों को स्थानांतरित करते हैं, उन्हें \eqref(eq:C2) द्वारा वर्णित समाधानों के सेट पर प्रक्षेपित करते हैं। ऐसा करने के लिए, कण या तो एक दूसरे से दूर चले जाते हैं या करीब खींचे जाते हैं, यह इस पर निर्भर करता है कि संख्यात्मक एकीकरण द्वारा प्राप्त दूरी छोटी है या बड़ी। चित्र 2 देखें.

उस दूरी को ठीक करने के लिए कणों को ले जाना जो बाधा को संतुष्ट नहीं करती है \eqref(eq:C2)

शर्तों को लागू करने वाला स्यूडोकोड \eqref(eq:C2):

डेल्टा = x2 - x1 ; डेल्टालेंथ = sqrt(डेल्टा * डेल्टा); अंतर = (डेल्टालेंथ - रेस्टलेंथ) / डेल्टालेंथ; X1 -= डेल्टा * 0.5 * अंतर; x2 += डेल्टा * 0.5 * अंतर;

ध्यान दें कि डेल्टा एक वेक्टर है, और डेल्टा*डेल्टा एक अदिश उत्पाद है। यह छद्मकोड कणों को अलग कर देगा या उनके बीच आवश्यक दूरी प्राप्त करने के लिए उन्हें स्थानांतरित कर देगा। फिर, हम इसे एक असीम रूप से कठोर स्प्रिंग के रूप में सोच सकते हैं जो तुरंत 100 की अपनी सामान्य लंबाई पर लौट आता है।

अब मान लीजिए कि, शर्त \eqref(eq:C2) के अलावा, शर्त \eqref(eq:C1) भी संतुष्ट होनी चाहिए (कण घन के अंदर होने चाहिए)। ऐसा हो सकता है कि \eqref(eq:C2) स्थिति को संतुष्ट करने का प्रयास करते समय, छड़ के कुछ कण \eqref(eq:C1) की आवश्यकताओं का उल्लंघन करेंगे (छड़ घन से बाहर निकल जाएगी)। बेशक, आप \eqref(eq:C1) को क्रियान्वित करके आपत्तिजनक कण को ​​फिर से घन की सतह पर प्रक्षेपित कर सकते हैं, लेकिन तब \eqref(eq:C2) टूट जाएगा।

\eqref(eq:C1) और \eqref(eq:C2) की आवश्यकताओं को एक साथ संतुष्ट करने के लिए हमें समीकरणों की एक प्रणाली को हल करने की आवश्यकता है। हम ऐसा करेंगे, लेकिन सीधे तौर पर नहीं: हम बस छद्म कोड के दो टुकड़ों को एक के बाद एक निश्चित संख्या में दोहराएंगे, इस उम्मीद में कि परिणाम उपयोगी होगा। यह दृष्टिकोण निम्नलिखित कोड में कार्यान्वित किया गया है:

//एक घन के अंदर एक छड़ के मॉडलिंग का कार्यान्वयनशून्य पार्टिकल सिस्टम :: संतुष्ट बाधाएं () (के लिए (int j = 0 ; j< NUM_ITERATIONS ; j ++ ) { // पहले हम शर्तें पूरी करते हैं (1)के लिए (int i = 0 ; i< NUM_PARTICLES ; i ++ ) { // सभी कणों के लिएवेक्टर3 और x = m_x [i]; x = vmin(vmax(x, वेक्टर3(0, 0, 0)), वेक्टर3(1000, 1000, 1000)); ) //अब चलो संतुष्ट करें (2)वेक्टर3 और x1 = m_x [ 0 ]; वेक्टर3 और x2 = m_x [1 ]; वेक्टर3 डेल्टा = x2 - x1 ; फ्लोट डेल्टालेंथ = sqrt (डेल्टा * डेल्टा); फ्लोट अंतर = (डेल्टालेंथ - रेस्टलेंथ) / डेल्टालेंथ; X1 -= डेल्टा * 0.5 * अंतर; x2 += डेल्टा * 0.5 * अंतर; ) )

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

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

कपड़ा मॉडलिंग

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

HandleConstraints() फ़ंक्शन, जो बाधाओं को संसाधित करने के लिए ज़िम्मेदार है, सभी बाधाओं पर छूट का उपयोग करता है। विश्राम चक्र को कई बार दोहराया जा सकता है। हालाँकि, ज्यादातर मामलों में एक अच्छा दिखने वाला एनीमेशन पाने के लिए सिर्फ एक पुनरावृत्ति ही पर्याप्त है। इसका मतलब यह है कि फैब्रिक सिमुलेशन की समय खपत मुख्य रूप से इस बात पर निर्भर करती है कि \(N\) वर्गमूल और \(N\) विभाजन संचालन करने में कितना समय लगता है (जहां \(N\) जाल अनुकरण में किनारों की संख्या है कपड़ा) . नीचे हम आपको वर्गमूल गणना से छुटकारा पाने की एक तरकीब दिखाएंगे। लेकिन पहले, आइए देखें कि बाधा प्रसंस्करण कैसा दिखता है।

// फैब्रिक मॉडलिंग का कार्यान्वयनसंरचना बाधा (इंट पार्टिकलए, पार्टिकलबी; फ्लोट रेस्टलेंथ;); // मान लें कि m_constraints सरणी पहले से मौजूद हैशून्य पार्टिकल सिस्टम :: संतुष्ट बाधाएं () (के लिए (int j = 0 ; j< NUM_ITERATIONS ; j ++ ) { for (int i = 0 ; i < NUM_CONSTRAINTS ; i ++ ) { Constraint & c = m_constraints [ i ]; Vector3 & x1 = m_x [ c . particleA ]; Vector3 & x2 = m_x [ c . particleB ]; Vector3 delta = x2 - x1 ; float deltalength = sqrt (delta * delta ); float diff = (deltalength - c . restlength ) / deltalength ; x1 -= delta * 0.5 * diff ; x2 += delta * 0.5 * diff ; } // कपड़े को बनाने वाले कणों में से एक को मूल से जोड़ें m_x [ 0 ] = वेक्टर3 ( 0 , 0 , 0 ); ) )

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

// sqrt सन्निकटन का उपयोग करके बाधाओं (2) को लागू करने के लिए छद्म कोडडेल्टा = x2 - x1 ; डेल्टा * = विश्राम लंबाई * विश्राम लंबाई / (डेल्टा * डेल्टा + विश्राम लंबाई * विश्राम लंबाई ) - 0.5 ; X1 -= डेल्टा ; x2 += डेल्टा ;

ध्यान दें कि यदि दूरी पहले से ही बाधाओं को संतुष्ट करती है (यानी, यदि |delta|=restlength), तो हमें (0,0,0) के बराबर डेल्टा मिलेगा और कोई परिवर्तन नहीं होगा।

अब हम प्रत्येक संबंध को संसाधित करते समय वर्गमूलों का उपयोग नहीं करते हैं। इसके अतिरिक्त, विश्रामलंबाई * विश्रामलंबाई के वर्ग की गणना पहले से की जा सकती है। प्रति फ्रेम \(N\) डिवीजनों को निष्पादित करने (और संबंधित मेमोरी तक पहुंचने) तक समय लेने वाले ऑपरेशन कम हो जाते हैं - ऐसी किसी भी चीज़ के बारे में सोचना मुश्किल है जो काफी तेजी से चलती है।

जरूरी नहीं कि बाधाएं एक पुनरावृत्ति में संतुष्ट हों, लेकिन, वेरलेट विधि के लिए धन्यवाद, सिस्टम जल्दी से सही स्थिति में परिवर्तित हो जाता है (जब सभी बाधाएं संतुष्ट हो जाती हैं) - वस्तुतः कुछ फ़्रेमों में। वास्तव में, केवल एक पुनरावृत्ति और वर्गमूल सन्निकटन का उपयोग समीकरणों की प्रणाली की कठोरता की समस्या को समाप्त कर देता है, जो आवश्यक रूप से बिल्कुल कठोर छड़ों वाली प्रणाली में दिखाई देगी।

आसन्न शीर्षों के जोड़े के बीच पिन लिंक रखकर, ऊतक मॉडलिंग एल्गोरिदम को प्लांट मॉडलिंग तक बढ़ाया जा सकता है।

इस खंड में चर्चा किए गए कोड और समीकरण मानते हैं कि सभी कणों का द्रव्यमान समान है। अलग-अलग द्रव्यमान वाले कणों को एक ही तरह से मॉडल किया जा सकता है, लेकिन परिणामी समीकरण थोड़े अधिक जटिल होंगे।

इस प्रकार, विभिन्न द्रव्यमान वाले कणों के लिए बाधा \eqref(eq:C2) का अनुपालन निम्नलिखित छद्मकोड द्वारा कार्यान्वित किया जाता है:

// बाधाओं को लागू करने के लिए छद्म कोड (2)डेल्टा = x2 - x1 ; डेल्टालेंथ = sqrt(डेल्टा * डेल्टा); अंतर = (डेल्टालेंथ - रेस्टलेंथ ) / (डेल्टालेंथ * (invmass1 + invmass2 )); X1 -= invmass1 * डेल्टा * अंतर; x2 += invmass2 * डेल्टा * अंतर;

यहां invmass1 और invmass2 कणों \(\vec(x)_1\) और \(\vec(x)_2\) के व्युत्क्रम द्रव्यमान को संग्रहीत करते हैं। यदि हम चाहते हैं कि कण स्थिर रहे, तो हमें इसे invmass = 0 पर सेट करना होगा, जो अनंत द्रव्यमान से मेल खाता है। जैसा कि ऊपर बताया गया है, गणनाओं में तेजी लाने के लिए अनुमानित वर्गमूल गणनाओं का उपयोग किया जा सकता है।

एसएनएफ

कठोर पिंडों की गति के समीकरण आधुनिक कंप्यूटर के आविष्कार से बहुत पहले प्रस्तावित किए गए थे। उन दिनों कोई भी उपयोगी परिणाम प्राप्त करने के लिए गणितज्ञों को सूत्रों का रूपांतरण करना पड़ता था। इससे जड़ता टेंसर, कोणीय गति, बल का क्षण, अभिविन्यास का प्रतिनिधित्व करने के लिए चतुर्भुज आदि जैसी उपयोगी अवधारणाओं और उपकरणों का उदय हुआ। इस बीच, बड़ी मात्रा में डेटा को डिजिटल रूप में संसाधित करने की क्षमता अब गणना करने की अनुमति देती है। सरल तत्वों के लिए, और कुछ मामलों में ऐसी गणनाओं को अधिक लाभदायक भी बनाते हैं। त्रि-आयामी ठोस के मामले में, इसका मतलब यह है कि ठोस को चार कणों और छह बंधनों के साथ मॉडल करना सुविधाजनक हो सकता है (स्वतंत्रता की डिग्री की सही संख्या देते हुए: \(4\cdot 3 - 6 = 6\))। इससे बहुत सी चीज़ें सरल हो जाती हैं, और आगे हम यही करेंगे।

एक चतुष्फलक पर विचार करें जिसके चारों शीर्षों पर एक-एक कण रखा हुआ है। इसके अतिरिक्त, टेट्राहेड्रोन के छह किनारों में से प्रत्येक पिछले अनुभाग में चर्चा की गई बार-प्रकार की बाधा का प्रतिनिधित्व करता है। यह एक ठोस शरीर का अनुकरण करने के लिए काफी है। टेट्राहेड्रोन को ऊपर चर्चा किए गए क्यूब के अंदर रखा जा सकता है, और वेरलेट इंटीग्रेटर इसकी सही गति सुनिश्चित करेगा। संतुष्टी बाधाएं () फ़ंक्शन को दो बातों का ध्यान रखने की आवश्यकता है: 1) कि कण घन के अंदर रहें, और 2) कि छह स्टेम बाधाओं का सम्मान किया जाए। यह पहले की तरह, विश्राम का उपयोग करके किया जा सकता है: आमतौर पर 3-4 पुनरावृत्तियाँ पर्याप्त होती हैं। कुशल वर्गमूल गणनाओं के बारे में भी न भूलें।

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

सबसे पहले, आइए समस्या का एक सरल संस्करण देखें। आइए एक छड़ लें, इसे एक घन "दुनिया" में रखें और मान लें कि घन में अंदर की ओर इशारा करते हुए एक छोटा सा उभार है। अब छड़ "दुनिया" की सीमाओं को पार कर सकती है, हालाँकि इसके सिरों पर दोनों कण घन के अंदर रहते हैं (चित्र 4)। हम टकराव का पता लगाने वाले तंत्र को विकसित करने की पेचीदगियों में नहीं जाएंगे, क्योंकि यह एक पूरी तरह से अलग विज्ञान है। आइए इसके बजाय मान लें कि एक टकराव का पता लगाने वाला सबसिस्टम पहले से मौजूद है और अपना काम कर रहा है: दो टकराने वाली वस्तुओं में से प्रत्येक के लिए प्रवेश की गहराई और प्रवेश बिंदुओं के निर्देशांक का निर्धारण करना। प्रवेश बिंदु और प्रवेश गहराई की एक परिभाषा है: प्रवेश गहराई \(d_p\) वह न्यूनतम दूरी है जिससे टकराने से बचने के लिए दो वस्तुओं को उपयुक्त दिशा में अलग किया जाना चाहिए। प्रवेश बिंदु प्रत्येक वस्तु पर वे बिंदु होते हैं जहां ऊपर उल्लिखित स्थानांतरण होने के बाद वस्तुएं एक-दूसरे को स्पर्श करती हैं।

चित्र 4 पर एक और नज़र डालें। यहां, संख्यात्मक एकीकरण चरण के बाद, छड़ी सीमा के माध्यम से घुस गई। टकराव डिटेक्टर ने दो प्रवेश बिंदुओं की पहचान की: \(\vec(p)\) और \(\vec(q)\) । चित्र 4a में, बिंदु \(\vec(p)\) वास्तव में अंतिम कणों में से एक के साथ मेल खाता है: \(\vec(p)=\vec(x)_1\) । चित्र 4बी में, \(\vec(p)\) \(\vec(x)_1\) और \(\vec(x)_2\) के बीच रॉड की लंबाई के 1/4 की दूरी पर स्थित है। (\vec( x)_1\) . दोनों मामलों में, बिंदु \(\vec(p)\) रॉड पर स्थित है और इसलिए, इसके निर्देशांक को बिंदु \(\vec(x)_1\) और \ के निर्देशांक के रैखिक संयोजन के रूप में व्यक्त किया जा सकता है। (\vec(x) _2\) : \(\vec(p) = c_1\vec(x)_1 + c_2\vec(x)_2\)ऐसा कि \(c_1 + c_2 = 1\) . पहले मामले में, \(c_1 = 1\) , \(c_2 = 0\) , और दूसरे में - \(c_1 = 0.75\) और \(c_2 = 0.25\) . ये मान हमें बताते हैं कि संबंधित कणों को कितनी दूर तक ले जाने की आवश्यकता है।

छड़ की स्थिति को सही करने के लिए, इसे इस प्रकार घुमाएँ कि बिंदु \(\vec(p)\) \(\vec(q)\) से मेल खाए। ऐसा करने के लिए, हम कणों \(\vec(x)_1\) और \(\vec(x)_2\) को \(\vec(p)\) और \(\) को जोड़ने वाले वेक्टर द्वारा निर्दिष्ट दिशा में ले जाते हैं। vec(q)\ ): .

पहले मामले में (चित्र 4ए), हम बस \(\vec(x)_1\) को उस क्षेत्र के बाहर प्रक्षेपित करते हैं जहां ऐसा होना "निषिद्ध" है, जैसा कि हमने पहले किया था (दिशा में \(\vec(q) )\) ). यह पर्याप्त होगा, और निर्देशांक \(\vec(x)_2\) को बिल्कुल भी बदलने की आवश्यकता नहीं है। दूसरे मामले में (चित्र 4 बी), बिंदु \(\vec(x)_1\) को भी \(\vec(x)_2\) से अधिक दूरी पर ले जाने की आवश्यकता है, क्योंकि बिंदु \(\vec (p)\) \(\vec(x)_1\) के करीब स्थित है (वास्तव में, चूँकि \(\vec(p) = 0.75\vec(x)_1 + 0.25\vec(x)_2\), तो हर बार जब हम \(\vec(x)_1\) को 0.75 से आगे बढ़ाते हैं, तो हम \(\vec(x)_2\) को केवल 0.25 से आगे बढ़ाते हैं। दूसरे शब्दों में, कणों \(\vec(x)_1^\ prime\) और \(\vec(x)_2^\ prime\) की नई स्थिति संबंधों द्वारा दी गई है

\begin(समीकरण) \begin(संरेखित) \vec(x)_1^\प्राइम &= \vec(x)_1 + 0.75\lambda\cdot\vec(\Delta), \\ \vec(x)_2^\ अभाज्य और = \vec(x)_2 + 0.25\lambda\cdot\vec(\Delta), \end(संरेखित) \label(eq:x_new) \end(समीकरण)

जहां \(\lambda\) एक अज्ञात मात्रा है। कण की नई स्थिति \(\vec(p)\) - \(\vec(p)^\ prime\) - की गणना सूत्र का उपयोग करके की जाती है

$$ \vec(p)^\प्राइम = c_1\vec(x)_1^\प्राइम + c_2\vec(x)_2^\प्राइम। $$

आइए याद रखें कि हम उस \(\vec(p)^\ prime = \vec(q)\) को प्राप्त करना चाहते हैं, अर्थात, हमें \(\lambda\) को बिल्कुल इस तरह चुनना होगा कि \(\vec(p ) ^\प्राइम\) परिणामस्वरूप \(\vec(q)\) से मेल खाता है। चूँकि हम कणों को केवल \(\vec(\Delta)\) दिशा में गति करते हैं, तो \(\vec(p)\) भी दिशा \(\vec(\Delta)\) में गति करता है और इसलिए इसका समाधान होता है समीकरण \ (\vec(p)^\ prime = \vec(q)\) को \(\lambda\) से व्यक्त करके पाया जा सकता है

\begin(समीकरण) \vec(p)^\ prime\cdot\vec(\Delta) = \vec(q)\cdot\vec(\Delta) . \लेबल(eq:pq) \end(समीकरण)

समता के बायीं ओर के व्यंजक को लिखने पर हमें प्राप्त होता है

$$ \begin(संरेखित) \vec(p)^\प्राइम\cdot\vec(\Delta) &= (0.75\vec(x)_1^\प्राइम + 0.25\vec(x)_2^\प्राइम) \cdot \vec(\Delta) \\ &= (0.75 (\vec(x)_1 + 0.75\lambda\cdot\vec(\Delta)) + 0.25 (\vec(x)_2 + 0.25\lambda\cdot\vec( \Delta))) \cdot\vec(\Delta) \\ &= ((0.75\vec(x)_1 + 0.25\vec(x)_2)\cdot\vec(\Delta) + \lambda(0.75^2 + 0.25^2)\cdot\Delta^2 \\ &= \vec(p) \cdot\vec(\Delta) + \lambda(0.75^2 + 0.25^2)\cdot\Delta^2 , \end( संरेखित) $$

जो, दाहिनी ओर \eqref(eq:pq) को ध्यान में रखते हुए, देता है

$$ \lambda = \frac((\vec(p)-\vec(q)) \cdot\vec(\Delta))((0.75^2 + 0.25^2)\cdot\Delta^2) . $$

पाए गए \(\lambda\) को \eqref(eq:x_new\) में प्रतिस्थापित करने पर, हमें कणों \(\vec(x)_1\) और \(\vec(x)_2\) की सही स्थिति प्राप्त होती है, जिस पर \( \vec( p)^\ prime\) \(\vec(q)\) से मेल खाएगा।

चित्र 5 कणों के हिलने के बाद उत्पन्न होने वाली स्थिति को दर्शाता है। अब वस्तुओं का कोई पारस्परिक प्रवेश नहीं है, लेकिन छड़ की लंबाई स्थिर रहने की आवश्यकता का उल्लंघन किया गया है। इसे ठीक करने के लिए, आइए विश्राम चक्र (या यहां तक ​​कि कई) का एक और पुनरावृत्ति करें, जिसके बाद हम कणों की स्थिति को सही करने का चक्र पूरा करते हैं।

टेट्राहेड्रोन के मामले में, ऊपर वर्णित रणनीति इसी तरह काम करेगी। सबसे पहले, इंटरपेनिट्रेशन के बिंदु \(\vec(p)\) और \(\vec(q)\) पाए जाते हैं (वे त्रिकोण के अंदर भी स्थित हो सकते हैं) और \(\vec(p)\) को इस प्रकार दर्शाया गया है चार कणों का एक रैखिक संयोजन \(\vec(p)=c_1\vec(x)_1+c_2\vec(x)_2+c_3\vec(x)_3+c_4\vec(x)_4\)ऐसा कि \(c_1+c_2+c_3+c_4=1\) (इसके लिए रैखिक समीकरणों की एक छोटी प्रणाली को हल करने की आवश्यकता होगी)। एक बार मिल गया \(\vec(\Delta) = \vec(q)-\vec(p)\), सूत्र का उपयोग करके \(\lambda\) मान ज्ञात करना संभव होगा

$$ \lambda = \frac((\vec(p)-\vec(q)) \cdot\vec(\Delta))((c_1^2 + c_2^2 + c_3^2 + c_4^2)\cdot \Delta^2), $$

और सही कण स्थिति को इस प्रकार परिभाषित किया गया है

$$ \begin(संरेखित*) \vec(x)_1^\प्राइम &= \vec(x)_1 + c_1\lambda\cdot\vec(\Delta), \\ \vec(x)_2^\प्राइम & = \vec(x)_2 + c_2\lambda\cdot\vec(\Delta), \\ \vec(x)_3^\ prime &= \vec(x)_3 + c_3\lambda\cdot\vec(\Delta ), \\ \vec(x)_4^\प्राइम &= \vec(x)_4 + c_4\lambda\cdot\vec(\Delta). \end(संरेखित*) $$

इसलिए, हमने एक कठोर शरीर की गतिहीन "दुनिया" के साथ टकराव पर विचार किया है। कई कठोर पिंडों के टकराव को संभालने के लिए ऊपर वर्णित विधि को आसानी से सामान्यीकृत किया जा सकता है। इस मामले में, टकरावों को एक समय में निकायों की एक जोड़ी के लिए संसाधित किया जाता है और, केवल \(\vec(p)\) को स्थानांतरित करने के बजाय, आपको \(\vec(p)\) और \(\vec (q)\ ) एक दूसरे के प्रति।

और फिर, निकायों के आपसी प्रवेश से बचने के लिए कणों की स्थिति को समायोजित करने के बाद, छह और प्रतिबंधों को पूरा करने का ध्यान रखना आवश्यक है - ठोस शरीर बनाने वाले कणों के बीच की दूरी की अपरिवर्तनीयता। इस पद्धति का उपयोग करके, टेट्राहेड्रोन को किसी अन्य वस्तु के अंदर भी घोंसला बनाया जा सकता है, जो टकराव से निपटने के दौरान टेट्राहेड्रोन के बजाय उपयोग करने के लिए अधिक सुविधाजनक है। चित्र 6 एक घन में रखे गए चतुष्फलक को दर्शाता है।

सबसे पहले, क्यूब को किसी तरह टेट्राहेड्रोन से जोड़ा जाना चाहिए। एक तरीका यह है कि टेट्राहेड्रोन के द्रव्यमान के केंद्र को घन के केंद्र के रूप में चुना जाए \(0.25\cdot (\vec(x)_1 + \vec(x)_2 + \vec(x)_3 + \vec(x)_4)\), और फिर, टेट्राहेड्रोन के वर्तमान निर्देशांक का उपयोग करके, घन के शीर्षों के निर्देशांक की गणना करें। जब टकराव का पता चलता है, तो संपर्क बिंदु \(\vec(p)\) (जो अब क्यूब पर स्थित है) को उपरोक्त तरीके से संसाधित किया जाता है। अद्यतन कण निर्देशांक की गणना उसी तरह की जाती है। गणना में तेजी लाने के लिए, आप घन के सभी शीर्षों के लिए गुणांक \(c_1\) -\(c_4\) की पूर्व-गणना कर सकते हैं। यदि \(\vec(p)\) एक शीर्ष होता है, तो मान \(c_1\) -\(c_4\) को सीधे पाया और उपयोग किया जा सकता है। अन्यथा, \(\vec(p)\) त्रिभुज के अंदर या उसकी किसी एक भुजा पर स्थित होता है, और \(c_1\)-\(c_4\) का मान पूर्व-गणना किए गए मानों से प्राप्त किया जा सकता है प्रक्षेप का उपयोग करके त्रिभुज के शीर्ष।

एक नियम के रूप में, टकराव को संभालने के लिए 3-4 पुनरावृत्तियाँ पर्याप्त हैं। यदि विश्राम बहुत पहले ही बंद कर दिया जाए, तो शरीर पूरी तरह से ठोस व्यवहार नहीं करेगा। लेकिन यह और भी अच्छा है, क्योंकि प्रकृति में बिल्कुल ठोस शरीर मौजूद नहीं हैं। इसके अलावा, यह सिस्टम को अधिक स्थिर बनाता है।

टेट्राहेड्रोन बनाने वाले कणों की स्थिति को पुनर्व्यवस्थित करते समय, शरीर के भौतिक गुणों को तदनुसार बदला जाना चाहिए (गणितीय रूप से, इसका मतलब है कि शरीर की जड़ता टेंसर कणों की स्थिति और द्रव्यमान के आधार पर बदलती है)।

टेट्राहेड्रोन के समान सिद्धांत का उपयोग करके, आप कणों को निर्देशांक \((0,0)\), \((1,0,0)\) वाले बिंदुओं पर रखकर कणों और बांडों का एक और समान विन्यास सेट कर सकते हैं। \( (0,1,0)\) और \((0,0,1)\) . मान लीजिए \(\vec(a)\) , \(\vec(b)\) , और \(\vec(c)\) क्रमशः कण 1 से कण 2, 3 और 4 की ओर निर्देशित वेक्टर हैं। हम कणों की स्थिति को इस आवश्यकता से प्रतिबंधित करते हैं कि वैक्टर \(\vec(a)\) , \(\vec(b)\) , और \(\vec(c)\) की इकाई लंबाई और कोण हो वैक्टर के तीन जोड़े में से प्रत्येक के बीच \(90^\circ\) के बराबर था (संबंधित अदिश उत्पाद शून्य के बराबर होना चाहिए)। ध्यान दें कि यह फिर से, टेट्राहेड्रोन की तरह, 4 कण और 6 बंधन देगा।

व्यक्त निकाय

अब हम कई कठोर पिंडों को टिका (बेलनाकार, गोलाकार, आदि) का उपयोग करके जोड़ सकते हैं। यह मानते हुए कि दो पिंडों में एक सामान्य कण है, हमें एक गोलाकार काज (पिन जोड़) मिलता है, और यदि दो कण आम हैं, तो हमें एक बेलनाकार काज (काज) मिलता है (चित्र 7)। उसी तरह, आप एक रॉड या किसी अन्य प्रकार के कनेक्शन का उपयोग करके दो निकायों को जोड़ सकते हैं - आपको बस रिलैक्सेशन लूप में नए प्रकार के कनेक्शन को संभालने के लिए कोड जोड़ना याद रखना होगा।

यह दृष्टिकोण हमें व्यक्त मानव शरीर का एक संपूर्ण मॉडल बनाने की अनुमति देता है। यदि आप अतिरिक्त रूप से टिका में कोणीय गति पर प्रतिबंध लागू करते हैं तो यथार्थवाद बढ़ेगा। ऐसे प्रतिबंधों को लागू करने के कई तरीके हैं। सबसे सरल विधि में एक रॉड प्रकार की बाधा का उपयोग करना शामिल है, जो केवल तभी ट्रिगर होता है जब दो कणों के बीच की दूरी एक निश्चित सीमा मूल्य से कम हो जाती है (इस मामले में हम फॉर्म के एक तरफा युग्मन से निपट रहे हैं \(|\vec(x)_2 - \vec(x)_1| > 100\)). इसके परिणामस्वरूप, दोनों कण कभी भी एक-दूसरे के बहुत करीब नहीं आ सकते (चित्र 8)।

कोणीय गतियों पर प्रतिबंध लगाने की एक अन्य विधि के लिए डॉट उत्पाद को पूरा करने के लिए निम्नलिखित शर्तों की आवश्यकता होती है:

$$ (\vec(x)_2 - \vec(x)_0)\cdot (\vec(x)_1 - \vec(x)_0)< \alpha . $$

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

| स्प्रेडशीट में मॉडलिंग

पाठ 17-18
स्प्रेडशीट में मॉडलिंग

गुरुत्वाकर्षण के प्रभाव में शरीर की गति का अनुकरण

गुरुत्वाकर्षण के प्रभाव में गति के उदाहरण सर्वविदित हैं। यह एक निश्चित ऊंचाई से किसी पिंड का गिरना है, और एक निश्चित गति से ऊपर की ओर फेंके गए पिंड की गति है, और क्षितिज पर एक कोण पर फेंके गए शरीर की गति है। यदि ऐसी समस्याओं में वायु प्रतिरोध के बल को ध्यान में नहीं रखा जाता है, तो सभी सूचीबद्ध प्रकार की गति का वर्णन प्रसिद्ध सूत्रों द्वारा किया जाता है। लेकिन जिन समस्याओं में वायु प्रतिरोध को ध्यान में रखा जाता है वे भी कम दिलचस्प नहीं हैं।

समस्या 3.24. लक्ष्य पर प्रहार

स्टेज I समस्या का निरूपण

कार्य का विवरण

लड़के बैडमिंटन खेलते हैं. हवा का एक झोंका शटलकॉक को उठाकर एक पेड़ की शाखाओं तक ले गया। आगे का कठिन कार्य शटलकॉक प्राप्त करना है। समस्या को कई तरीकों से हल किया जा सकता है। प्रत्येक विधि के अपने फायदे और नुकसान हैं।

उदाहरण के लिए, आप किसी पेड़ पर चढ़ सकते हैं। लेकिन यह एक बहुत ही खतरनाक गतिविधि है: पेड़ की शाखाएँ जितनी ऊँची होती हैं, वे उतनी ही पतली होती हैं। गिरने की प्रबल संभावना है. आप एक पेड़ काट सकते हैं. लेकिन, जाहिरा तौर पर, अभी तक किसी ने भी समस्या को हल करने का यह तरीका आजमाया नहीं है। यदि सभी ने समस्या को हल करने का यह तरीका चुना होता, तो बहुत समय पहले एक भी पेड़ नहीं बचता। आप हवा के अगले झोंके से शटलकॉक के अपने आप गिरने का इंतजार कर सकते हैं। अक्सर वे शटलकॉक को पत्थर से गिराने की कोशिश करते हैं। हम भी व्यवहार का यही मॉडल चुनेंगे. इसके अलावा, हम शरीर की गति के नियमों को जानते हैं।

अनुकरण का उद्देश्य

क्षैतिज से एक कोण पर फेंके गए पिंड की गति की जांच करें। फेंकने की गति और कोण के प्रारंभिक मानों का चयन करें ताकि फेंका गया शरीर लक्ष्य से टकराए।

समस्या का औपचारिकीकरण

टिप्पणी। हिट सटीकता सेट करने के लिए , आपको शरीर के आकार को ध्यान में रखना होगा।

सटीकता मारो शरीर के सबसे छोटे ज्यामितीय आकार के आधे से अधिक नहीं होना चाहिए।

इसलिए, उदाहरण के लिए, यदि लक्ष्य लगभग 7 सेमी व्यास वाला शटलकॉक है, तो = 3.5 सेमी. यदि लक्ष्य 40 सेमी व्यास वाला एक बास्केटबॉल घेरा है, तो = 20 सेमी. यदि लक्ष्य 5 मीटर ऊंचा गुब्बारा है, तो = 2.5 मी.

चरण II. विकास का मॉडल

सूचना मॉडल

हम वस्तुओं की विशेषताओं और प्रक्रिया को एक तालिका के रूप में प्रस्तुत करते हैं।

शरीर की गति के पैरामीटर चित्र 3.4 में प्रस्तुत किए गए हैं। क्षैतिज से एक कोण पर फेंके गए पिंड की गति का वर्णन सूत्रों द्वारा किया जाता है


कंप्यूटर मॉडल

मॉडलिंग के लिए, हम एक टेबल प्रोसेसर वातावरण चुनेंगे। इस वातावरण में, सारणीबद्ध जानकारी और गणितीय मॉडल को एक तालिका में संयोजित किया जाता है जिसमें तीन क्षेत्र होते हैं:

♦ प्रारंभिक डेटा;
♦ मध्यवर्ती गणना;
♦ परिणाम.

1. नमूने के अनुसार स्रोत डेटा क्षेत्र भरें।

कॉलम ए, बी, सी, डी, ई, एफऊपर से नीचे तक समान सूत्रों से भरें।

2. मध्यवर्ती गणना और परिणाम क्षेत्र भरें।


प्रायोगिक योजना

परिक्षण

प्रयोग 1

शरीर की गतिविधियों का अन्वेषण करें।

प्रयोग 2

प्रारंभिक गति में परिवर्तन होने पर किसी पिंड की गति में परिवर्तन की जांच करें।

प्रयोग 3

फेंकने का कोण बदलने पर शरीर की गति में परिवर्तन की जाँच करें।

प्रयोग 4

प्रारंभिक गति और फेंकने के कोण को बदलकर, लक्ष्य के संबंध में शरीर की गति की प्रकृति और उसकी स्थिति की जांच करें।

प्रयोग 5

प्रारंभिक प्रारंभिक गति और कोण को बदलकर, मानों का चयन करें ताकि फेंका गया शरीर निर्दिष्ट सटीकता के साथ लक्ष्य को हिट कर सके।

अनुसंधान का संचालन

परिक्षण

1. गणना तालिका की उतनी ही पंक्तियाँ भरें जितने निर्देशांक हों पर शून्य से कम नहीं होगा.

2. परीक्षण गणना के परिणामों की तुलना गणना उदाहरण में दिए गए परिणामों से करें। नीचे दी गई तालिका दिए गए प्रारंभिक डेटा के आधार पर गणना के परिणामों के साथ कई पंक्तियाँ दिखाती है।

3. कॉलम बी और सी का उपयोग करके, एक गति आरेख बनाएं। एक उदाहरण चित्र 3.6 में दिखाया गया है। आरेख बनाने के लिए, इतने परिकलित मान लें कि वक्र क्षैतिज अक्ष को काट दे एक्स .

4. यह कैसे निर्धारित करें कि एक आरेख बनाने के लिए कितने गणना बिंदु लेने की आवश्यकता है?

निष्कर्ष। एक आरेख बनाने के लिए, आपको परिकलित मान लेने होंगे जिनका निर्देशांक है 0 से अधिक और एक ऋणात्मक मान।

प्रयोग 1. शरीर की गति का अध्ययन

1. परीक्षण केस आरेख का उपयोग करके बताएं कि शरीर कैसे चलता है।

2. आरेख से बताएं कि पिंड का उच्चतम उन्नयन बिंदु कैसे निर्धारित किया जाए।

3. स्पष्ट करें कि क्षैतिज x-अक्ष के साथ वक्र का प्रतिच्छेदन आरेख पर क्या दर्शाता है। गणना तालिका का उपयोग करके इस बिंदु को कैसे निर्धारित करें?

4. आरेख से निर्धारित करें कि फेंकने के बिंदु से कितनी दूरी पर शरीर जमीन पर गिरेगा।

5. गणना तालिका से निर्धारित करें:

अधिकतम उठाने की ऊँचाई;
उच्चतम बिंदु तक यात्रा का समय;
फेंकने के बिंदु से जमीन पर प्रभाव के बिंदु तक की दूरी;
गिरने से पहले आंदोलन का समय.

स्प्रेडशीट के मुक्त क्षेत्र में प्रस्तावित पैटर्न के अनुसार शरीर की गति के अध्ययन के परिणाम लिखें।

6. प्रारंभिक डेटा का दूसरा संस्करण दर्ज करें, उनके लिए प्रयोग परिणामों की तालिका भरें।

प्रयोग 2. प्रारंभिक गति पर शरीर की गति की निर्भरता (फेंक कोण अपरिवर्तित)

1. प्रारंभिक गति को 5 से 20 मीटर/सेकेंड तक बदलते हुए देखें कि अधिकतम लिफ्ट ऊंचाई कैसे बदलती है (y समन्वय)

2. देखें कि उड़ान सीमा कैसे बदलती है (एक्स समन्वय)बढ़ती प्रारंभिक गति के साथ.

3. एक निश्चित कोण के लिए गणना करें और स्प्रेडशीट के मुक्त क्षेत्र पर संकलित एक तालिका (तालिका 2) में अनुसंधान परिणामों को सारांशित करें।

4. प्रयोग के परिणामों के आधार पर निष्कर्ष तालिका में लिखें: जब प्रारंभिक गति बदलती है (निरंतर फेंकने वाले कोण के साथ) तो ऊंचाई और उड़ान सीमा कैसे बदलती है?


प्रयोग 3. फेंकने वाले कोण पर शरीर की गति की निर्भरता (गति की प्रारंभिक गति अपरिवर्तित है)

1. मॉडल का उपयोग करके गणना करें, फेंकने के कोण को 5° से बढ़ाकर 85° करें और प्रारंभिक गति को अपरिवर्तित छोड़ दें (उदाहरण के लिए, 15 मीटर/सेकेंड)।

2. लिफ्ट की ऊंचाई में परिवर्तन का निरीक्षण करें (y समन्वय) जैसे-जैसे फेंकने का कोण बढ़ता है, प्रारंभिक गति अपरिवर्तित रहती है।

3. उड़ान सीमा में परिवर्तन का निरीक्षण करें (एक्स समन्वय) जैसे-जैसे फेंकने का कोण बढ़ता है।

4. स्प्रेडशीट के मुक्त क्षेत्र में गणना के परिणामों को तालिका में रखें (तालिका 3)।

5. प्रयोग के परिणामों के आधार पर निष्कर्ष तालिका में लिखें: फेंकने का कोण बदलने पर (निरंतर प्रारंभिक गति के साथ) उड़ान की ऊंचाई और सीमा कैसे बदलती है?

प्रयोग 4. शरीर की गति की प्रकृति और लक्ष्य के संबंध में उसकी स्थिति का अध्ययन

चित्र 3.7 लक्ष्य के संबंध में शरीर की गति के वक्र के स्थान के लिए विकल्प दिखाता है। उन्हें इस प्रकार चित्रित किया जा सकता है:

1. चलते समय, शरीर उस ऊंचाई तक नहीं पहुंच पाता जिस पर लक्ष्य स्थित है और बिना पहुंचे ही जमीन पर गिर जाता है एक्स टी .

2. चलते समय, शरीर उस ऊंचाई तक नहीं पहुंचता जिस पर लक्ष्य स्थित है, बल्कि जमीन पर और गिर जाता है एक्स सी.

3. चलते समय शरीर ऊंचा उठ जाता है वाई सी, लेकिन बिना पहुँचे जमीन पर गिर जाता है एक्स सी.

4. चलते समय शरीर ऊंचा उठ जाता है वाई सीऔर जमीन पर और गिर जाता है एक्स सी.

स्तंभों में डी, ई और एफमानों की गणना की जाती है एस एक्स , एस वाई , एस,जो लक्ष्य के सापेक्ष शरीर की स्थिति दर्शाते हैं।

1. शोध करें कि संकेत का क्या अर्थ है एस एक्स और एस वाईसमय के विभिन्न बिंदुओं पर.

निष्कर्ष।

2. अन्वेषण करें कि यह कैसे बदलता है एसजब शरीर हिलता है.

निष्कर्ष। लक्ष्य की कुल दूरी पहले घटती है और फिर बढ़ती है।

3. स्प्रेडशीट (तालिका 4) के मुक्त क्षेत्र में चित्र 3.7 में प्रस्तुत शरीर की गति के विकल्पों के अनुरूप प्रारंभिक डेटा (प्रारंभिक गति और फेंकने का कोण) का चयन करें।


प्रयोग 5. लक्ष्य पर प्रहार के लिए प्रारंभिक मूल्यों का चयन

सबसे पहले, हम ध्यान दें कि प्रारंभिक डेटा को लक्ष्य तक पहुंचाने के लिए अनंत संख्या में विकल्प हैं। हमारा काम एक विकल्प चुनना है.

1. कॉलम द्वारा एफसबसे छोटा मान निर्धारित करें एस. इस समय शरीर लक्ष्य के सबसे करीब उड़ता है।

2. कॉलम प्लॉट करें जीहिट विश्लेषण. यदि लक्ष्य की दूरी निर्दिष्ट सटीकता से कम हो जाती है तो हम मान लेंगे कि शरीर ने लक्ष्य को हिट कर दिया है (सेल $D$10). ऐसा करने के लिए, सेल में जी16सूत्र दर्ज करें =आईएफ(एफ16<$D$10; «попал»; «мимо») .

3. लक्ष्य का सर्वोत्तम अनुमान प्राप्त करने के लिए इनपुट डेटा बदलें।

4. शोध परिणामों को स्प्रेडशीट के मुक्त क्षेत्र में लिखें (तालिका 5)।

5. प्रारंभिक डेटा का एक और सेट चुनें, जिसमें शरीर "ओवरहैंग" लक्ष्य को हिट करेगा, यानी, वृद्धि के उच्चतम बिंदु को पार करने के बाद।

6. लक्ष्य निर्देशांक बदलें और नई लक्ष्य स्थिति के लिए प्रारंभिक गति और फेंकने वाले कोण के मान का चयन करें।

प्रयोगों में प्राप्त परिणामों और निष्कर्षों को एक टेक्स्ट दस्तावेज़ में रिपोर्ट के रूप में प्रस्तुत करें। अपनी रिपोर्ट में, निम्नलिखित प्रश्नों के उत्तर प्रदान करें:

1. क्षैतिज से एक कोण पर फेंका गया पिंड कैसे गति करता है?
2. चढ़ाई का उच्चतम बिंदु कैसे निर्धारित करें?
3. उड़ान सीमा का निर्धारण कैसे करें?
4. प्रारंभिक गति और स्थिर थ्रो कोण में वृद्धि के साथ अधिकतम लिफ्ट ऊंचाई कैसे बदलती है?
5. प्रारंभिक गति और निरंतर थ्रो कोण में वृद्धि के साथ उड़ान सीमा कैसे बदलती है?
6. फेंकने के बढ़ते कोण और स्थिर प्रारंभिक गति के साथ अधिकतम लिफ्ट ऊंचाई कैसे बदलती है?
7. फेंकने के बढ़ते कोण और स्थिर प्रारंभिक गति के साथ उड़ान सीमा कैसे बदलती है?
8. हम समय के प्रत्येक क्षण में लक्ष्य के संबंध में पिंड की स्थिति की गणना कैसे कर सकते हैं? इसे गणना तालिका से कैसे निर्धारित किया जा सकता है?
9. गति के दौरान शरीर से लक्ष्य तक की दूरी कैसे बदलती है और गणना तालिका का उपयोग करके इसे कैसे निर्धारित किया जा सकता है?

समस्या 3.25*. पैराशूटिस्ट आंदोलन

*उन्नत चुनौती

स्टेज I समस्या का निरूपण

कार्य का विवरण

जब एक स्काइडाइवर ज़मीन पर गिरता है, तो वह गुरुत्वाकर्षण और वायु प्रतिरोध के प्रभावों का अनुभव करता है। यह प्रयोगात्मक रूप से स्थापित किया गया है कि प्रतिरोध बल गति की गति पर निर्भर करता है: गति जितनी अधिक होगी, बल उतना ही अधिक होगा। हवा में चलते समय, यह बल एक निश्चित ड्रैग गुणांक के साथ गति के वर्ग के समानुपाती होता है जो पैराशूट के डिज़ाइन और व्यक्ति के वजन पर निर्भर करता है आर प्रतिरोध = केवी 2 .पैराशूटिस्ट को गति से जमीन पर उतरने के लिए इस गुणांक का मान क्या होना चाहिए? 8 मी/से. से अधिक नहींइससे स्वास्थ्य को खतरा नहीं है?

मॉडलिंग के लक्ष्य निर्धारित करें और समस्या को औपचारिक रूप दें।

चरण II. विकास का मॉडल

सूचना मॉडल

स्वयं एक सूचना मॉडल बनाएं.

गणित का मॉडल

चित्र 3.8 पैराशूटिस्ट पर कार्य करने वाले बलों को दर्शाता है। न्यूटन के दूसरे नियम के अनुसार, बलों के प्रभाव में गति को समानता के रूप में लिखा जा सकता है। हम इस समानता को गति की धुरी पर प्रक्षेपित करते हैं और वायु प्रतिरोध बल के लिए अभिव्यक्ति को प्रतिस्थापित करते हैं एमए = एमजी - केवी 2 .

आइए त्वरण की गणना का सूत्र प्राप्त करें

हम उस गति और दूरी की गणना करेंगे जिससे पैराशूटिस्ट ने नियमित अंतराल पर उड़ान भरी △t. समय में क्षणों की गणना करने का सूत्र है: टी मैं+1 +टी मैं + △t. 

कहाँ वी मैं- अंतराल की शुरुआत में गति ( वी हे- प्रारंभिक गति)। अंतराल के अंत में गति (और, तदनुसार, अगले की शुरुआत में) की गणना समान रूप से त्वरित गति के सूत्र का उपयोग करके की जाती है

पैराशूटिस्ट द्वारा उड़ाई गई दूरी समय की अगली अवधि की शुरुआत तक तय की गई दूरी के योग के बराबर है ( एस मैं), और इस अंतराल में तय की गई दूरी:


कंप्यूटर मॉडल

मॉडलिंग के लिए, हम एक स्प्रेडशीट वातावरण चुनेंगे। इस वातावरण में, सूचना और गणितीय मॉडल को एक तालिका में संयोजित किया जाता है जिसमें तीन क्षेत्र होते हैं:

♦ प्रारंभिक डेटा;
♦ मध्यवर्ती गणना;
♦ परिणाम.

1. स्रोत डेटा क्षेत्र भरें.

2. परिकलित कॉलम भरें ए बी सी डी,जिसमें पैराशूटिस्ट के आंदोलन मापदंडों की गणना की जाती है:

समय;
रफ़्तार;
दूरी;
त्वरण.

3. गणना कक्षों में सूत्र दर्ज करें। गणना तालिका भरने का उदाहरण:


चरण III. कंप्यूटर प्रयोग


प्रायोगिक योजना

परिक्षण

तालिका में दिए गए डेटा का उपयोग करके कंप्यूटर मॉडल की परीक्षण गणना करें।

प्रयोग 1

गुरुत्वाकर्षण और वायु प्रतिरोध के प्रभाव में किसी पिंड की गति की जांच करें।

प्रयोग 2

प्रतिरोध गुणांक मान का चयन करें पैराशूटिस्ट की सुरक्षित लैंडिंग के लिए.

प्रयोग 3

गति की प्रारंभिक गति पर गति और त्वरण की निर्भरता की जांच करें।

प्रयोग 4

जांच करें कि गिरने की गति स्थिर होने तक उड़ान की दूरी कैसे बदलती है।

अनुसंधान का संचालन

परिक्षण

1. गणना उदाहरण में दिए गए परिणामों के साथ परीक्षण गणना के परिणामों की तुलना करें। परीक्षण गणना उदाहरण:

2. समय के आधार पर गति, त्वरण और दूरी में परिवर्तन का एक आरेख बनाएं।

प्रयोग 1. वायु प्रतिरोध को ध्यान में रखते हुए शरीर की गति का अध्ययन

1. आरेख और तालिका से निर्धारित करें कि समय के साथ पैराशूटिस्ट की गति कैसे बदलती है। गिरावट की दर स्थिर होने में कितने सेकंड लगते हैं?

2. आरेख और तालिका से निर्धारित करें कि समय के साथ स्काइडाइवर का त्वरण कैसे बदलता है।

3. आरेख और तालिका से निर्धारित करें कि गति स्थिर होने से पहले पैराशूटिस्ट कितनी दूर तक उड़ान भरेगा। अपने परिणामों को अपनी स्प्रैडशीट पर रिक्त स्थान पर रखें।

4. समय चरण (0.1 सेकंड) बदलें और गति स्थिरीकरण की गति, स्थिरीकरण के लिए उड़ान दूरी निर्धारित करें। अध्ययन के परिणाम तालिका में प्रस्तुत किए गए हैं।

प्रयोग 2. प्रतिरोध गुणांक का चयन

गुणांक मान को बदलकर के (सेल एसजेड), एक ऐसी गति स्थिरीकरण गति का चयन करें जो एक प्रशिक्षित व्यक्ति के उतरने के लिए सुरक्षित हो (8 मी/से).

प्रयोग 3. प्रारंभिक गति के आधार पर गति और दूरी के स्थिरीकरण का अध्ययन

एक पैराशूटिस्ट, हवाई जहाज से बाहर कूदकर, कुछ समय के लिए मुक्त रूप से उड़ता है, पर्याप्त तेज़ गति प्राप्त करता है और उसके बाद ही पैराशूट खोलता है।

1. प्रारंभिक गति मान बदलें (10 मी/से).

2. गणना तालिका का उपयोग करके, निर्धारित करें कि निम्नलिखित कैसे बदलेगा:

प्रारंभिक त्वरण;
स्थिरीकरण की गति;
गति स्थिर होने तक उड़ान की दूरी।

3. प्रयोग के परिणामों को स्प्रेडशीट के मुक्त क्षेत्र पर लिखें। एक निष्कर्ष निकालो।

प्रयोग 3 परिणाम:

टिप्पणी। ध्यान दें कि प्रारंभिक त्वरण कैसे बदलता है। कृपया ध्यान दें कि यह बड़ा नहीं हो सकता, क्योंकि त्वरण अधिक है 3जी (30 मी/से2)बहुत बड़े अधिभार का कारण बनता है।

चरण IV. सिमुलेशन परिणामों का विश्लेषण

कंप्यूटर प्रयोग के परिणामों के आधार पर निम्नलिखित प्रश्नों के उत्तर दीजिए:

1. समय के साथ स्काइडाइवर की गति कैसे बदलती है?
2. ड्रैग गुणांक बदलने पर पैराशूटिस्ट की गति कैसे बदल जाती है?
3. पैराशूटिस्ट को 8 मीटर/सेकेंड की गति से जमीन पर उतरने के लिए ड्रैग गुणांक क्या होना चाहिए?
4. गति की गति कैसे बदलती है और पैराशूटिस्ट की एकसमान गति की स्थिर-अवस्था गति प्रारंभिक गति पर कैसे निर्भर करती है?
5. आंदोलन शुरू होने के कितने सेकंड बाद पैराशूटिस्ट की गति स्थिर मानी जा सकती है?
6. एक स्काईडाइवर को एक निश्चित गति से उतरने के लिए जमीन से कितनी ऊंचाई पर अपना पैराशूट खोलना चाहिए।

स्वतंत्र कार्य के लिए कार्य

3.26. बास्केटबॉल खिलाड़ी।

एक कोण पर फेंके गए शरीर की गति के निर्मित मॉडल का उपयोग करके, गणना करें कि घेरा में आने के लिए आपको किस प्रारंभिक गति और किस कोण पर बास्केटबॉल फेंकने की आवश्यकता है।

गणना करते समय निम्नलिखित शर्तों को ध्यान में रखें:

फेंके जाने पर गेंद की प्रारंभिक गति 15 मीटर/सेकेंड तक भिन्न हो सकती है;
रिंग निर्देशांक पर = 3 मीटर, एक्स = 0.5 ÷ 7 मीटर;
हिट की सटीकता रिंग के व्यास से संबंधित है और इसके बराबर है = 20 सेमी;
गेंद को रिंग "कैनोपी" से टकराना चाहिए, यानी, उत्थान के उच्चतम बिंदु को पार करने के बाद।

एक कोण पर फेंके गए पिंड की गति के गणितीय और कंप्यूटर मॉडल को संशोधित करें ताकि उनका उपयोग एक निश्चित प्रारंभिक ऊंचाई से फेंके गए पिंड की गति की गणना करने के लिए किया जा सके। 0

3.27. डूबते हुए आदमी का बचाव.

डूबते हुए व्यक्ति की ओर बचाव जहाज से किस गति से और किस कोण पर घेरा फेंकना चाहिए? गणना करते समय निम्नलिखित शर्तों को ध्यान में रखें:


जहाज से डूबने वाले व्यक्ति की दूरी;
हिट की सटीकता है = 0.5 मीटर;
फेंकने का कोण ऋणात्मक हो सकता है;
समुद्र तल से जहाज के किनारे की ऊँचाई।

3.28. कलाबाज़।

सर्कस में ऐसी कलाबाजी कई लोगों ने देखी है. एक कलाबाज जंपिंग बोर्ड पर एक तरफ खड़ा होता है, दूसरा दूसरे छोर पर कूदता है। अभिनय में तीसरे भागीदार के कंधों पर ठीक से उतरने के लिए पहले कलाबाज को किस प्रारंभिक गति से और किस कोण पर उड़ना चाहिए? गणना करते समय निम्नलिखित शर्तों को ध्यान में रखें:

प्रारंभिक गति 10 मीटर/सेकेंड तक भिन्न हो सकती है;
तीसरे कलाबाज की ऊंचाई और निष्कासन;
हिट की सटीकता है = 0.1 मी.

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

परिचय

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

चूंकि विमान के हमले और फिसलन के छोटे कोणों पर, इसका रोल आंदोलन व्यावहारिक रूप से अन्य दो चैनलों में आंदोलन से असंबंधित है: ट्रैक और अनुदैर्ध्य - एक साधारण "बैरल" करने के लिए यह केवल चारों ओर आंदोलन का एक मॉडल बनाने के लिए पर्याप्त होगा एक धुरी - अक्ष ओहसंबद्ध एस.सी. इसी कारण से, जब पूर्ण नियंत्रण प्रणाली बनाने की बात आती है तो एलेरॉन नियंत्रण कानून में महत्वपूर्ण बदलाव नहीं आएगा।

मोशन मॉडल

अनुदैर्ध्य अक्ष के चारों ओर विमान की गति का समीकरण ओहसंबंधित एससी अत्यंत सरल है:

अक्ष के परितः जड़त्व आघूर्ण कहाँ है? ओह, और इस क्षण में कई घटक शामिल हैं, जिनमें से हमारे विमान की गति के यथार्थवादी विवरण के लिए केवल दो पर विचार करना पर्याप्त है:

अपनी धुरी पर वायुयान के घूमने से उत्पन्न होने वाला क्षण कहाँ है? ओह(डैम्पिंग मोमेंट), - एलेरॉन के विक्षेपण के कारण होने वाला क्षण (नियंत्रण क्षण)। अंतिम अभिव्यक्ति रैखिक रूप में लिखी गई है: रोल पल रैखिक रूप से निरंतर आनुपातिकता गुणांक के साथ कोणीय वेग और एलेरॉन विक्षेपण कोण पर निर्भर करता है।

जैसा कि ज्ञात है (उदाहरण के लिए, विकी से), रैखिक अंतर समीकरण

प्रथम क्रम के एपेरियोडिक लिंक के अनुरूप है

स्थानांतरण फ़ंक्शन कहां है, विभेदन ऑपरेटर है, समय स्थिर है, और लाभ है।

विभेदक समीकरण से स्थानांतरण फ़ंक्शन तक कैसे जाएं?

हमारे मामले में, हम समीकरण पैरामीटर से ट्रांसफर फ़ंक्शन पैरामीटर पर निम्नानुसार आगे बढ़ सकते हैं (यह जानते हुए कि व्युत्पन्न नकारात्मक है):




एक एपेरियोडिक लिंक के लिए, समय स्थिरांक उस समय के बराबर होता है जिसके दौरान आउटपुट मान, इनपुट मान की एकल चरणबद्ध कार्रवाई के तहत, एक मान लेता है जो स्थिर-अवस्था मान से ~ 5% और लाभ कारक से भिन्न होता है संख्यात्मक रूप से एकल चरणबद्ध कार्रवाई के तहत आउटपुट मान के स्थिर-अवस्था मान के बराबर है:


निर्मित गति मॉडल में दो अज्ञात पैरामीटर हैं: लाभ और समय स्थिरांक। ये पैरामीटर भौतिक प्रणाली की विशेषताओं के माध्यम से व्यक्त किए जाते हैं: जड़ता का क्षण, साथ ही रोल पल के व्युत्पन्न और:

इस प्रकार, यदि जड़ता का क्षण ज्ञात है, तो, मॉडल मापदंडों को निर्धारित करने के बाद, उनसे सिस्टम मापदंडों को पुनर्स्थापित करना संभव है।

मॉडल पैरामीटर. निष्क्रियता के पल

हमारे विमान में निम्नलिखित भाग होते हैं: पंख, पूंछ के साथ धड़, इंजन, बैटरी (बैटरी) और एवियोनिक्स:

एवियोनिक्स में शामिल हैं: एक ऑटोपायलट बोर्ड, एक एसएनएस रिसीवर बोर्ड, एक रेडियो मॉडेम बोर्ड, नियंत्रण उपकरण से एक सिग्नल रिसीवर बोर्ड, दो वोल्टेज नियामक, एक इंजन गति नियंत्रक और कनेक्टिंग तार।

एवियोनिक्स के हल्के वजन के कारण, जड़ता के कुल क्षण में इसके योगदान को नजरअंदाज किया जा सकता है।

जड़ता के क्षण की भयावहता का आकलन कैसे किया गया?

जड़ता के क्षण का अनुमान इस प्रकार लगाया जा सकता है। आइए विमान को उसकी धुरी पर देखें ओह:

और फिर हम इसे निम्नलिखित सरलीकृत मॉडल के रूप में प्रस्तुत करते हैं:


जड़ता के क्षण की गणना के लिए योजना. ऊपर बाईं ओर बैटरी है, नीचे दाईं ओर इंजन है। इंजन और बैटरी धड़ की धुरी पर स्थित हैं

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


अक्ष के सापेक्ष विमान की जड़ता के क्षण का कुल मूल्य ओहहम भागों के जड़त्व के क्षणों को जोड़कर प्राप्त करते हैं:

जड़ता के कुल क्षण में विमान के प्रत्येक भाग के योगदान का आकलन करने के बाद, निम्नलिखित प्राप्त हुआ:

  • विंग - 96.3%,
  • धड़ - 1.6%,
  • इंजन और बैटरी - 2%,
यह देखा जा सकता है कि जड़ता के कुल क्षण में मुख्य योगदान पंख द्वारा किया जाता है। यह इस तथ्य के कारण है कि पंख का अनुप्रस्थ आकार काफी बड़ा है (पंख का विस्तार - 1 मीटर):

इसलिए, इसके मामूली वजन (विमान के कुल टेक-ऑफ द्रव्यमान का लगभग 20%) के बावजूद, विंग में जड़ता का एक महत्वपूर्ण क्षण है।

मॉडल पैरामीटर. रोल पल के डेरिवेटिव और

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

ऑटोपायलट में मैन्युअल नियंत्रण और रिकॉर्डिंग मापदंडों के लिए फर्मवेयर लिखने के बाद, हमने विमान को इकट्ठा किया और इसे परीक्षण के लिए तैयार किया:

उड़ान प्रयोग में, एलेरॉन के विक्षेपण कोण और विमान के घूर्णन के कोणीय वेग पर डेटा प्राप्त करना संभव था। पायलट ने विमान को मैन्युअल रूप से नियंत्रित किया, चक्कर लगाए, घुमाया और रोल किया, और ऑन-बोर्ड उपकरण ने रिकॉर्ड किया और आवश्यक जानकारी ग्राउंड स्टेशन को भेजी। परिणामस्वरूप, आवश्यक निर्भरताएँ प्राप्त हुईं: (डिग्री/एस) और (बी/आर)। मान सामान्यीकृत एलेरॉन विक्षेपण कोण का प्रतिनिधित्व करता है: 1 का मान अधिकतम विक्षेपण से मेल खाता है, और -1 का मान न्यूनतम से मेल खाता है:

अब हम प्राप्त आंकड़ों से कैसे निर्धारित कर सकते हैं? इसका उत्तर ग्राफ़ और का उपयोग करके क्षणिक प्रक्रिया के मापदंडों को मापना है।

गुणांक k और T कैसे निर्धारित किए गए?

लाभ को स्थिर-अवस्था कोणीय वेग के मूल्य को एलेरॉन विक्षेपण के मूल्य से जोड़कर निर्धारित किया गया था:


एक उड़ान प्रयोग में प्राप्त एलेरॉन विक्षेपण कोण और रोल कोणीय वेग की समय पर निर्भरता

पिछले चित्र में, कोणीय वेग के स्थिर-अवस्था मान के अनुभाग लगभग अनुरूप हैं, उदाहरण के लिए, समय 422, 425 और 438 सेकेंड के निकट के अनुभाग (आकृति में गहरे लाल रंग में चिह्नित)।
समय स्थिरांक उसी ग्राफ़ से निर्धारित किया गया था। ऐसा करने के लिए, एलेरॉन विक्षेपण कोण में तेज बदलाव के क्षेत्र पाए गए, और फिर उस समय को मापा गया जिसके दौरान कोणीय वेग ने एक मान लिया जो स्थिर-अवस्था मान से 5% भिन्न था।


समय स्थिरांक और लाभ के मूल्यों को निर्धारित करने का परिणाम इस प्रकार है: , . जड़ता के क्षण के ज्ञात मूल्य वाले गुणांक के ये मान रोल पल के व्युत्पन्न के निम्नलिखित मूल्यों के अनुरूप हैं:

मॉडल सत्यापन

इसलिए, एपेरियोडिक लिंक के आधार पर एक मॉडल बनाया गया है

इसे उड़ान प्रयोग से प्राप्त सिग्नल को इनपुट पर लागू करके और प्रयोग में प्राप्त मूल्य के साथ मॉडल के आउटपुट सिग्नल की तुलना करके सत्यापित किया जा सकता है।

अनुकरण कैसे किया गया?

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

पिछले अनुभाग में हमने गुणांक और के मान प्राप्त किए। हम उनका उपयोग किसी विमान की गति का अनुकरण करने के लिए करते हैं। पिछले लेख से हमें याद आया कि विमान मॉडल का विन्यास जेएसबीसिमका उपयोग करके निर्दिष्ट किया गया है एक्सएमएलफ़ाइल। आइए अपना स्वयं का मॉडल बनाएं:
0.2 1.0 0.2 0.03 0.5 0.03 0.5 -0.025 0 0.05 0.018 0.018 0.018 1.2 0 0 0 एफसीएस/एलेरॉन-सीएमडी-मानदंड -1 1 रोल_मोमेंट_ड्यू_टू_रोल_रेट वेग/पी-एयरो-रेड_सेकंड -0.24 रोल_मोमेंट_ड्यू_टू_एलेरॉन एफसीएस/एलेरॉन-सीएमडी-मानदंड 2.4 वेग/vc-kts एयरो/अल्फाडॉट-डिग्री_सेकंड एयरो/बीटाडॉट-डीग_सेक एफसीएस/थ्रॉटल-सीएमडी-मानदंड बंद बंद बंद पर पर पर बंद बंद पर बंद बंद पर बंद
चूँकि हम केवल रोल में वाहन की गति का एक मॉडल बना रहे हैं, हम फ़ाइल के कई अनुभागों को खाली छोड़ देंगे। निम्नलिखित विशेषताएँ मॉडल फ़ाइल में क्रमिक रूप से निर्दिष्ट हैं।

ज्यामितीय आयामविमान अनुभाग में निर्दिष्ट हैं मेट्रिक्स: पंख क्षेत्र, विस्तार, माध्य वायुगतिकीय कॉर्ड लंबाई, क्षैतिज पूंछ क्षेत्र, क्षैतिज पूंछ भुजा, ऊर्ध्वाधर पूंछ क्षेत्र, ऊर्ध्वाधर पूंछ भुजा, वायुगतिकीय फोकस स्थिति।

बड़े पैमाने पर विशेषताएँविमान अनुभाग में निर्दिष्ट हैं द्रव्यमान संतुलन: विमान की जड़ता का टेंसर, खाली विमान का वजन, द्रव्यमान के केंद्र की स्थिति।

यह ध्यान देने योग्य है कि वायुगतिकीय फोकस और विमान के द्रव्यमान के केंद्र की पूर्ण स्थिति वाहन की गतिशीलता की गणना में शामिल नहीं है; उनका सापेक्ष स्थान महत्वपूर्ण है।
इसके बाद विमान के लैंडिंग गियर और उसके पावर प्लांट की विशेषताओं का वर्णन करने वाले अनुभाग हैं।

अगले भाग में, के लिए जिम्मेदार नियंत्रण प्रणाली, आइए रोल नियंत्रण के लिए जिम्मेदार चैनल भरें: एकमात्र इनपुट इंगित करें एफसीएस/एलेरॉन-सीएमडी-मानदंड, जिसका मान -1 से 1 तक सामान्यीकृत किया जाएगा।

वायुगतिकीय विशेषताएँअनुभाग में निर्दिष्ट हैं वायुगतिकी: बलों को वेग समन्वय प्रणाली में निर्दिष्ट किया जाता है, क्षण - संबंधित में। हम रोल मोमेंट में रुचि रखते हैं। अनुभाग में अक्ष नाम = "रोल"फ़ंक्शन निर्दिष्ट किए गए हैं जो अक्ष पर वायुगतिकीय बलों के क्षण के प्रक्षेपण के विभिन्न घटकों से बलों के क्षण को निर्धारित करते हैं बैलसंबद्ध समन्वय प्रणाली. हमारे मॉडल में ऐसे दो घटक हैं। पहला घटक अवमंदन क्षण है, जो कोणीय वेग और पहले से निर्धारित गुणांक के उत्पाद के बराबर है। दूसरा घटक एक निश्चित उड़ान गति पर एलेरॉन से आने वाला क्षण है: यह एलेरॉन विक्षेपण की मात्रा द्वारा पहले से निर्धारित गुणांक के उत्पाद के बराबर है।

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

बनाए गए मॉडल को उड़ान परीक्षणों के दौरान प्राप्त प्रायोगिक डेटा का उपयोग करके सत्यापित किया जा सकता है। ऐसा करने के लिए, निम्नलिखित सामग्री के साथ एक स्क्रिप्ट बनाएं:
सिम-टाइम-सेकंड जीई 0.0 एलेरॉन के लिए समय इतिहास इनपुट प्रदान करें सिम-टाइम-सेकंड जीई 0

सिम-टाइम-सेकंड 0 0.00075 0.1 0.00374 0.2 -0.00075 0.3 -0.00075 0.4 -0.00075 0.5 -0.00075 0.6 0.00075 0.7 0.00075 ... 48.8 -0.00075 48.9 0.00000 49 -0.00075

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


सत्यापन परिणाम चित्र में दिखाया गया है:


जैसा कि चित्र से देखा जा सकता है, मॉडल और वास्तविकता के बीच समझौता पूर्ण से थोड़ा कम है।

"बैरल" प्रदर्शन के लिए संश्लेषण को नियंत्रित करें

मॉडल प्राप्त करने के बाद, यह निर्धारित करना आसान है कि रोल करने के लिए एलेरॉन को कितनी मात्रा में और कितनी देर तक विक्षेपित करना आवश्यक है। एक विकल्प निम्नलिखित अस्वीकृति एल्गोरिथ्म है:



एलेरॉन डिफ्लेक्शन एल्गोरिदम की शुरुआत और अंत में 0.1 एस तक चलने वाले खंडों की उपस्थिति सर्वो ड्राइव की जड़ता का अनुकरण करती है, जो सतहों को तुरंत विक्षेपित नहीं कर सकती है। मॉडल से पता चलता है कि ऐसे एलेरॉन विक्षेपण कानून के साथ, विमान को अपनी धुरी के चारों ओर एक पूर्ण क्रांति करनी होगी ओह, क्या हम जांच करेंगे?

उड़ान प्रयोग

परिणामी एलेरॉन नियंत्रण कानून को विमान पर स्थापित ऑटोपायलट में प्रोग्राम किया गया था। प्रयोग का विचार सरल है: विमान को क्षैतिज उड़ान में ले जाएं, और फिर परिणामी नियंत्रण कानून का उपयोग करें। यदि विमान की वास्तविक रोल गति निर्मित मॉडल से मेल खाती है, तो विमान को "बैरल रोल" करना होगा - 360 डिग्री का एक पूर्ण घूर्णन।

हम विशेष रूप से अपने वफादार पायलट के काम, व्यावसायिकता और उसके प्रायर स्टेशन वैगन पर सुविधाजनक ट्रंक के लिए अपना आभार व्यक्त करते हैं!

प्रयोग के दौरान, यह स्पष्ट हो गया कि रोल मोशन मॉडल का निर्माण सफलतापूर्वक किया गया था - जैसे ही पायलट ने प्रोग्राम किए गए नियंत्रण कानून को सक्रिय किया, विमान ने एक के बाद एक "बैरल" का प्रदर्शन किया। निम्नलिखित चित्र प्रयोग के दौरान दर्ज किए गए और सिमुलेशन परिणामों से प्राप्त कोणीय वेग, साथ ही उड़ान प्रयोग से रोल और पिच कोण को दर्शाता है:


और निम्नलिखित आंकड़ा एलेरॉन, एलिवेटर (ईआर) और पतवार (आरयू) के लिए उड़ान प्रयोग में दर्ज संकेतों को दिखाता है:


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

टिप्पणियाँ

निष्कर्ष

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

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

मान लीजिए कि आप साइकिल चला रहे हैं और अचानक कोई आपको साइड से धक्का दे देता है। अपना संतुलन शीघ्रता से पुनः प्राप्त करने और गिरने से बचने के लिए, आप साइकिल के हैंडलबार को धक्का लगने की दिशा में मोड़ें। साइकिल चालक इसे सजगता से करते हैं, लेकिन यह आश्चर्यजनक है कि एक साइकिल यह क्रिया स्वयं ही कर सकती है। आधुनिक साइकिलें बिना नियंत्रण के चलते हुए भी स्वतंत्र रूप से संतुलन बनाए रख सकती हैं। आइए देखें कि इस प्रभाव को COMSOL मल्टीफ़िज़िक्स में कैसे मॉडलिंग किया जा सकता है।

हम स्व-संतुलन साइकिलों के बारे में क्या जानते हैं?

एक आधुनिक साइकिल इससे बहुत अलग नहीं है सुरक्षित बाइक- उन पहले डिज़ाइनों में से एक जो 19वीं सदी के 80 के दशक में सामने आए। सौ से अधिक वर्षों के बाद, वैज्ञानिक अभी भी यह पता लगाने की कोशिश कर रहे हैं कि कौन से प्रभाव साइकिल को आत्म-संतुलन बनाते हैं। दूसरे शब्दों में, एक अनियंत्रित साइकिल खड़ी रहने पर कैसे संतुलित रहती है? कई प्रकाशित रचनाएँ विश्लेषणात्मक समीकरणों का उपयोग करके साइकिल की गति का वर्णन करने के लिए समर्पित हैं। इस विषय पर पहले महत्वपूर्ण प्रकाशनों में से एक फ्रांसिस व्हिपल का एक पेपर था, जिसमें उन्होंने अपने हाथों का उपयोग किए बिना एक साइकिल चालक द्वारा नियंत्रित साइकिल की गतिशीलता के लिए सामान्य गैर-रेखीय समीकरण निकाले।

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

इस काम से प्रेरित होकर, हमने हाथों से मुक्त साइकिल चालक द्वारा नियंत्रित साइकिल की स्व-संतुलन गति को प्रदर्शित करने के लिए एक मल्टीबॉडी सिस्टम का एक गतिशील मॉडल बनाया।

अलग-अलग समय पर साइकिल की स्थिति.

मल्टीबॉडी साइकिल मॉडल

साफ व्हील रोलिंग सुनिश्चित करने और तीन दिशाओं में व्हील स्लिप को सीमित करने के लिए, हमें तीन सीमा शर्तों की आवश्यकता है।


एक पहिये का मॉडल जो उन दिशाओं को दर्शाता है जिनमें गति सीमित है।

निम्नलिखित प्रतिबंध लागू होते हैं: कोई फॉरवर्ड स्लिप नहीं:

(\frac(d\bold(u))(dt).\bold(e)_(2)=r\frac(d\bold(\theta)_s)(dt))

कोई पार्श्व फिसलन नहीं:

\frac(d\bold(u))(dt).\bold(e)_(3)=r\frac(d\bold(\theta)_(l))(dt)

ज़मीन संपर्क सतह पर लंबवत कोई फिसलन नहीं:

\frac(d\bold(u))(dt).\bold(e)_(4)=0

जहां \bold(e)_(2) , \bold(e)_(3) , और \bold(e)_(4) तात्कालिक दिशा (झुकी धुरी), अनुप्रस्थ दिशा (रोटेशन अक्ष) और सामान्य हैं सतह संपर्क (\bold(e)_(4)=\bold(e)_(2) \times\bold(e)_(3)), क्रमश;

\frac(d\bold(u))(dt) - अनुवादात्मक गति; r पहिये की त्रिज्या है; \frac(d\bold(\theta)_(s))(dt) - घूर्णन का कोणीय वेग; \frac(d\bold(\theta)_(l))(dt) कोणीय तिरछा वेग है।

चूँकि इन सीमा शर्तों को वेग पर लागू करना संभव नहीं है, इसलिए उन्हें समय के अनुसार अलग किया जाता है और निम्नानुसार लगाया जाता है:

(\bold(u)-\bold(u)_(p)).\bold(e)_(2)=r(\bold(\theta)_(s)-\bold(\theta)_(sp ))

(\bold(u)-\bold(u)_(p)).\bold(e)_(3)=r(\bold(\theta)_(l)-\bold(\theta)_(lp ))

(\bold(u)-\bold(u)_(p)).\bold(e)_(4)=0

जहां \bold(u)_(p) , \bold(\theta)_(sp) और \bold(\theta)_(lp) क्रमशः पिछली बार विस्थापन वेक्टर, रोटेशन और झुकाव कोण हैं।

अलग-अलग सीमा स्थितियों में जो फिसलन की अनुपस्थिति सुनिश्चित करते हैं, पिछले समय चरण पर पहिया की स्थिति की गणना के परिणाम का उपयोग किया जाता है। पिछले समय चरण में कठोर शरीर की स्थिति, घूर्णन और तात्कालिक अक्ष स्थिति को वैश्विक समीकरणों और एक नोड का उपयोग करके संग्रहीत किया जाता है पिछला समाधानएक गैर स्थिर सॉल्वर में.

स्व-संतुलन साइकिल की गति का अनुकरण

विश्लेषण के लिए, हमने 18° के स्टीयरिंग कोण वाली साइकिल को चुना। साइकिल की प्रारंभिक गति 4.6 मीटर/सेकेंड है। गति शुरू होने के 1 सेकंड बाद, बहुत कम समय के लिए साइकिल पर 500 N का बल लगाया जाता है। बल के प्रभाव में, साइकिल एक निश्चित दिशा में सीधे प्रक्षेपवक्र से भटक जाती है।

पहले सेकंड के दौरान, साइकिल स्थिर गति से प्रारंभिक निर्दिष्ट दिशा में आगे बढ़ती है। पार्श्व बल तब विक्षेपण का कारण बनता है। ध्यान दें कि साइकिल चालक अपने हाथ हैंडलबार पर नहीं रखता है और साइकिल के संतुलन को नियंत्रित नहीं कर सकता है। आगे क्या होता है? हम देख सकते हैं कि जैसे ही बाइक झुकना शुरू करती है, हैंडलबार गिरने की दिशा में मुड़ जाते हैं। गिरने की स्थिति में हैंडलबार की स्थिति ठीक करने से साइकिल का संतुलन बहाल हो जाता है।

साइकिल आगे बढ़ती रहती है और जैसे-जैसे आगे बढ़ती है, विपरीत दिशा में झुकने लगती है। यह झुकाव परिमाण में छोटा है, और स्टीयरिंग मूवमेंट एक मामूली अंतराल के साथ झुकाव का बारीकी से अनुसरण करता है। यह बाएँ-दाएँ दोलन जारी रहता है और अंततः ख़त्म हो जाता है। साइकिल सख्ती से ऊर्ध्वाधर स्थिति में आगे बढ़ती है और गति को थोड़ा बढ़ा देती है। स्टीयरिंग व्हील कंपन, मोड़ कोण और कोणीय वेग धीरे-धीरे कम हो जाते हैं और फीके पड़ जाते हैं।

एक सीधी रेखा से विचलित होने पर समतल सतह पर साइकिल की गति। तीर बाइक के झुकाव को दर्शाता है।

स्टीयरिंग व्हील (बाएं) के झुकाव और घूर्णन के कोण और साइकिल के सापेक्ष कोणीय वेग (दाएं) की गणना के परिणाम।

स्थिरता विश्लेषण का संचालन करना

इस प्रकार, हमने सीखा कि एक साइकिल स्वयं-संतुलन कर सकती है। अध्ययन से पता चला कि साइकिल की स्थिरता निर्धारित करने वाले किसी एक पैरामीटर को पहचानना असंभव है। बाइक का डिज़ाइन, वजन वितरण और सवारी की गति सभी कारक हैं जो स्थिरता को प्रभावित करते हैं। इस घटना को बेहतर ढंग से समझने के लिए, हमने दो मापदंडों- प्रारंभिक गति और स्टीयरिंग अक्ष झुकाव के प्रभाव की जांच करने के लिए अतिरिक्त विश्लेषण किया। हमने प्रारंभिक विन्यास के रूप में 18° के हैंडलबार कोण और 4.6 मीटर/सेकेंड की प्रारंभिक गति के साथ ऊपर वर्णित साइकिल मॉडल का उपयोग किया और इन दो कारकों के प्रभाव का एक पैरामीट्रिक विश्लेषण किया।

विभिन्न प्रारंभिक गति

स्थिर खड़े रहने पर साइकिल बिल्कुल सीधी स्थिति में नहीं रह सकती। इस पैरामीटर के प्रभाव का मूल्यांकन करने के लिए हमने 1 मीटर/सेकेंड के चरणों में गति की गति को 2.6 मीटर/सेकेंड से 6.6 मीटर/सेकंड तक भिन्न किया। 2.6-3.6 मीटर/सेकेंड की रेंज में बाइक बहुत अधिक झुक जाती है और अस्थिर होती है। 5.6 मीटर/सेकेंड की गति पर, झुकाव की गति शून्य हो जाती है, लेकिन झुकाव कोण स्वयं एक गैर-शून्य मान प्राप्त कर लेता है। हालांकि यह कॉन्फ़िगरेशन स्थिर है, बाइक थोड़ा झुककर एक सर्कल में चलेगी। 6.6 मीटर/सेकेंड पर, समय के साथ झुकाव और स्टीयरिंग कोण बढ़ता है, जिससे गति अस्थिर हो जाती है।

अस्थिर टिकाऊ अस्थिर
2.6 मी/से 3.6 मी/से 4.6 मी/से 5.6 मी/से 6.6 मी/से

स्थिर मामला 5.6 मीटर/सेकेंड (बाएं) की गति से मेल खाता है, और अस्थिर मामला 6.6 मीटर/सेकेंड (दाएं) की गति से मेल खाता है।

स्टीयरिंग कोण

साइकिल के सेल्फ-बैलेंसिंग के लिए स्टीयरिंग असेंबली बहुत महत्वपूर्ण है। यदि बाइक को नियंत्रित नहीं किया जा सकता है (उदाहरण के लिए, यदि हैंडलबार फंस गए हैं), तो बाइक झुकाव की भरपाई करने में सक्षम नहीं होगी, इसलिए वह अंततः गिर जाएगी। इस संबंध में, स्टीयरिंग अक्ष का घूर्णन, जो कांटे की यात्रा को नियंत्रित करता है, साइकिल के आत्म-संतुलन को भी प्रभावित करता है।

साइकिल की स्थिरता पर स्टीयरिंग अक्ष के घूमने के प्रभाव का विश्लेषण करने के लिए, हमने स्टीयरिंग कोणों को 1° की वृद्धि में 15° से 21° तक भिन्न किया। 15° के कोण पर, रेक और स्टीयरिंग कोण समय के साथ बढ़ते हैं, जिससे यह कॉन्फ़िगरेशन अस्थिर हो जाता है। बाइक 16° से 19° तक स्थिर है और उच्च कोण पर अस्थिर है। 19° से अधिक घूर्णन मान पर, पिच और घूर्णन कोण में उतार-चढ़ाव होता है, और ये दोलन समय के साथ बढ़ते हैं, जिससे स्थिरता का नुकसान होता है।

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

साइकिल का स्व-संतुलन कई कारकों का परिणाम है। हमारे विश्लेषण के माध्यम से और पिछले शोध के अनुरूप, हमने प्रदर्शित किया कि साइकिल की स्थिरता झुकने की दिशा में "चलाने" की क्षमता से संबंधित है।