2012-09-11 14 views
8

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

मैं एक-दूसरे के चारों ओर ग्रहण करने वाले ग्रह बनाना चाहता हूं (जरूरी नहीं कि पूरी तरह परिपत्र कक्षा में, वेग पर निर्भर करता है)। तो हर वस्तु को अन्य वस्तुओं को प्रभावित करना चाहिए।

क्या मैं अभी:

bulletAppState.getPhysicsSpace().setGravity(Vector3f.ZERO); 

वैश्विक गुरुत्वाकर्षण को बंद करने क्षेत्रों आरंभ और भौतिकी अंतरिक्ष में जोड़ने से

Sphere sphere = new Sphere(50, 50, 5); 
Geometry sun = new Geometry("Sun", sphere); 

sun.setMaterial(stone_mat); 
rootNode.attachChild(sun); 
sun.setLocalTranslation(0, 0, 0); 

sunPhysics = new RigidBodyControl((float) (50*Math.pow(10, 5))); 
sun.addControl(sunPhysics); 
bulletAppState.getPhysicsSpace().add(sunPhysics); 

Geometry mercury = new Geometry("Mercury", sphere); 

mercury.setMaterial(stone_mat); 
rootNode.attachChild(mercury); 
mercury.setLocalTranslation(15f, 0, 0); 

mercuryPhysics = new RigidBodyControl((float) (5)); 
mercury.addControl(mercuryPhysics); 
bulletAppState.getPhysicsSpace().add(mercuryPhysics); 

मैंने देखा है कि वहाँ विधि setGravity RigidBodyControl कक्षा में, लेकिन यह सिर्फ दिशा निर्धारित करता है। तो वस्तु गायब होने तक उस तरह से जाती है।

मैं वास्तव में उत्तर के लिए तत्पर हूं।

उत्तर

1

बुलेटफिसिक्स में गुरुत्वाकर्षण सभी वस्तुओं के लिए एक दिशा है।

आप की तरह तुमने किया था 0 के गुरुत्वाकर्षण की स्थापना की और भी सभी वस्तुओं हर अनुकरण कदम सूत्र

F = m * a 

F - force 
m - objects mass 
a - acceleration 
हर पर

पृथ्वी पर नियमित रूप से त्वरण g == 9.8

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

आप एंग्री बर्ड्स स्पेस की तरह खेल अनुकरण करने के लिए तो आप उस खेल http://www.wired.com/wiredscience/2012/03/the-gravitational-force-in-angry-birds-space/

+0

आप – Max

+0

धन्यवाद हालांकि applyCentralForce विधि के साथ बल लागू कर सकते हैं, मैं हो सकता है कि लागू करने के लिए "और अधिक सरल" जिस तरह से।लेकिन कोई समस्या नहीं है, मैं इसे सुझाए गए तरीके से कोशिश करूंगा :) –

0

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

सौर मंडल जैसी चीजों के लिए, मैं ग्रहों के लिए किनेमेटिक मोड का उपयोग करूंगा (उन्हें स्वयं ले जाएं) और जहाजों, क्षुद्रग्रहों आदि के लिए बल का उपयोग करें।

3

(जब तक आप सौर मंडल में biliard बनाने) गुरुत्वाकर्षण का नियम कहते हैं F = G (m1 * m2)/r^2 जहां m1 और m2 दो शरीर की जनता हैं, और r दूरी है। G गुरुत्वाकर्षण निरंतर है।

न्यूटन के दूसरे नियम F = m * a कहते हैं, इसलिए अगर हम उन्हें एक साथ रखा, बड़े पैमाने पर m1 के साथ शरीर a = G * m2/r^2 के एक त्वरण गुरुत्वाकर्षण बल से शरीर से बड़े पैमाने पर m2 साथ का अनुभव होगा।

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

a(body1) = G * sum[ mass(body2)/dist(body1, body2)^2 , for each body2 ] 
संबंधित मुद्दे