कणों के साथ दबाव का अनुकरण कैसे करें?


11

मैं एक एकता के खेल में गोलाकार कणों के संग्रह के साथ दबाव का अनुकरण करने की कोशिश कर रहा हूं। समस्या के बारे में एक दो नोट:

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

मैं सोच रहा हूँ कि कुछ दृष्टिकोण क्या हैं जो मैं इन समस्याओं से निपटने के लिए ले सकता हूं ...

  1. यह जानने के लिए कि कब पता लगाना है कि कब जगह भरना है और फिर अंतरिक्ष में गोले जोड़ें।
  2. जब यह सिकुड़ रहा है तो अंतरिक्ष से गोले निकालना।
  3. गोलक पर दबाव का अनुकरण करने के लिए रणनीतियाँ जैसे कि वे "बाहर की ओर विस्फोट" करते हैं जब अधिक स्थान बनाया जाता है।

मैं जिस वर्तमान दृष्टिकोण पर विचार कर रहा हूं वह लगातार चलती हुई दीवार का उपयोग कर रहा है, जो स्क्रीन से दूर है और स्क्रीन के साथ चलती है, क्योंकि यह चित्र दिखाता है:

दबाव!

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

अग्रिम में बहुत धन्यवाद आपकी बुद्धि के लिए!

जवाबों:


6

मुझे बिल्कुल यकीन नहीं है कि यह क्या है जिसे आप प्राप्त करना चाहते हैं, क्या दीवार कणों को धक्का दे रही है क्योंकि अंतरिक्ष स्क्रीन से एक खेल मैकेनिक को रोल करता है?

आपके तीन बिंदुओं के अनुसार, मुझे लगता है कि यदि आप अपने कणों के साथ ऐसा व्यवहार करते हैं तो वे सभी व्यवहार उभर आएंगे: क्या प्रत्येक कण हर दूसरे कण को ​​दूरी के विपरीत आनुपातिक रूप से चुकाते हैं, और उन्हें रोकने के लिए आपके अंतरिक्ष की दीवारों से भी टकराते हैं।

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

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

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

तो आप एक कारक को प्रतिकर्षण गणना में शामिल करना चाहते हैं, कह सकते हैं कि 1.0 से शुरू करें और जब आप x कण जोड़ते हैं, तो नया कारक n / (n + x) बनाएं जहां n नए को जोड़ने से पहले कुल कणों की संख्या है।


2

दबाव (एक गैस की तरह) सिर्फ आपके कणों के बीच और कणों और दीवार के बीच सादे लोचदार टकराव का परिणाम है। आप बस अपने दबाव के लिए एक मूल्य प्राप्त करने के लिए दीवारों के साथ टकराव के समय को मापते हैं।

आपके द्वारा दिए गए 2 विचारों का दबाव से कोई सीधा संबंध नहीं है, क्योंकि दबाव एक बंद वॉल्यूमिना और एक दिए गए तापमान में कणों के एक निरंतर एम्माउंट के साथ दिया जाता है (जिसके परिणामस्वरूप कणों में तेजी या धीमी गति से चलती है)।

यदि आप इस बंद प्रणाली में कण जोड़ते हैं, तो दबाव बढ़ जाना चाहिए, क्योंकि पूरे सिस्टम में अधिक ऊर्जा है (आपने दिए गए तापमान के साथ एक नया कण जोड़ा है <-> गति)।


कणों को लोचदार टकरावों के लिए एक द्रव्यमान होना चाहिए, क्योंकि दीवारों को एक द्रव्यमान के पास माना जाता है + अनंत
Aron_dc

मैंने कहा "दबाव दीवारों के साथ प्रति समय टकराव का एक बड़ा हिस्सा है" 100% सटीक thats। एक लोचदार टक्कर में आप उस कण का आवेग लेते हैं और मापते हैं कि दीवार को कितना आवेग दिया गया है। इसलिए यदि कोई कण दीवार से एक ऊर्ध्वाधर दिशा में टकराता है तो दीवार को 2mv (कण का द्रव्यमान = v = कण का वेग) का आवेग मिलता है। तो आप वास्तव में दीवार पर आने वाले आवेग को मापते हैं। कण बस परावर्तित होता है (टकराव के पहले v (टक्कर के बाद -v)। यह विभिन्न गैसों (कणों के लिए अलग-अलग मीटर) के मिश्रण के दबाव को मापने में भी मदद करता है।
अरोन_डेक

0

प्रत्येक लूप, आपको अपने सभी कणों के माध्यम से पुनरावृत्त करना चाहिए, और फिर उस कण पर एक अंतिम बल की गणना करना चाहिए। मूल रूप से, दीवार हमेशा उन्हें एक्स अक्ष पर एक सकारात्मक बल वेक्टर देती है, अगर वे इसके साथ टकरा रहे हैं (particle.x - particle.r <= 0)।

फिर, उनके द्वारा टकराए जाने वाले प्रत्येक कण को ​​उनके बीच के कोण के आधार पर, एक बल वेक्टर भी दिया जाता है। आप सभी कणों के लिए इन कोणों को इकट्ठा करते हैं, औसत की गणना करते हैं, और वहां आप जाते हैं!

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

यह गस्सेस का अनुकरण करेगा, मूल रूप से, और यदि आप उन्हें एक निरंतर बल, तरल पदार्थ भी देते हैं, तो मुझे लगता है।

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

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