2013-07-26 7 views
5

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

मुझे यकीन नहीं है कि मैं इसके बारे में सही तरीके से सोच रहा हूं ... मैं डिग्री के संदर्भ में निर्देशांक लगाने की कोशिश कर रहा हूं।

डिग्री तो पिक दिया ... आप उन डेल्टा ले जाएगा, तो मिलता है ...

डिग्री = Math.atan2 (विपरीत/आसन्न) = (-4/-2)

enter image description here

मेरे कोड

public class Calculate { 

public Calculate() { 
    System.out.println(getCalc(7,5,4,0));  
} 

public double getCalc(int x1, int x2, int y1, int y2) { 
    double deltaX = Math.abs(x2-x1); 
    double deltaY = Math.abs(y2-y1); 
    double degrees = Math.toDegrees((java.lang.Math.atan2(deltaX, deltaY))); 

    return degrees; 
} 

}

उत्पादन देता है: 26.56505117707799

तो अब मुझे पता है कि गेंद 26 डिग्री पर दीवार को प्रतिबिंबित करेगी (क्योंकि यह घटनाओं का कोण है)। लेकिन मैं नहीं चाहता कि गेंद प्रत्येक दीवार से समान रूप से समान रूप से प्रतिबिंबित करे ताकि यह विविधता को जोड़ सके।

मेरे सवालों का:

  • Am मैं सही ढंग से गेंद के कोण की गणना?
  • मैं दीवार पर कहां हिट करता हूं, इस आधार पर बाउंस में विविधता कैसे जोड़ सकता हूं?
  • एक बार मेरे पास डिग्री में कोण हो जाने के बाद, मैं इसे वापस निर्देशांक में कैसे अनुवाद कर सकता हूं?

धन्यवाद!

उत्तर

2

क्या मैं गेंद के कोण को सही ढंग से गणना कर रहा हूं?

आपकी ड्राइंग स्केल नहीं है। 26 डिग्री को रेखा से लंबवत रेखा से मापा जाता है।

मैं दीवार पर कहां हिट करता है, इस आधार पर बाउंस में विविधता कैसे जोड़ सकता हूं?

आपने पहले ही एक यादृच्छिक कोण सुझाया है। आप दीवार के केंद्र से दूरी के आधार पर प्रतिबिंब के कोण को भी समायोजित कर सकते हैं।

प्रतिबिंब गणना के अपने कोण को अपनी विधि में रखें। आप गणना को तब तक समायोजित कर सकते हैं जब तक आपकी गणना आपको "यादृच्छिकता" न दे।

एक बार मेरे पास डिग्री में कोण हो जाने के बाद, मैं इसे वापस निर्देशांक में कैसे अनुवाद कर सकता हूं?

डिग्री को रेडियंस में कनवर्ट करें, फिर SAS of the triangle की गणना करें। बस मॉडल में रेडियंस में अपने कोण छोड़ दें, और अपने प्रदर्शन/नैदानिक ​​तरीकों में डिग्री में कनवर्ट करें।

+0

प्रतिक्रिया गिल्बर्ट के लिए धन्यवाद। मैंने उपरोक्त अपना चित्र अपडेट किया ... क्या यह सही है? – Growler

+0

@ ग्रोलर: हां, थेटा वह कोण है जिसकी आप गणना कर रहे हैं। –

+0

मेरा मतलब था, एक बार मेरे पास डिग्री में कोण हो ... मैं देख रहा हूं कि नए वृद्धिशील मूल्यों को कैसे प्राप्त किया जाए जो उस कोण का प्रतिनिधित्व करते हैं (जरूरी नहीं कि आपके लिंक एसएएस का उपयोग करके दिखाए जाते हैं)। जैसा कि .. x और y increments के लिए 'x + = newVal;' और 'y + = newVal' में' newVal' क्या है? – Growler

1

मुझे लगता है कि सतह से गेंद की दूरी वास्तव में कोण पर प्रभाव नहीं डालती है। सतह को मारने से पहले गेंद का कोण वही होना चाहिए (दर्पण प्रतिबिंबित) जब यह प्राकृतिक होने के लिए सतह छोड़ देता है।

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

एक बार आपके पास कोण होने के बाद, यह एक बार फिर त्रिकोणमिति तक गिर जाता है। आपके पास एक कोण है, और आप hypotenuse जानते हैं (मुझे लगता है कि आपकी फ्रेम दर और गेंद की गति के आधार पर गेंद सतह से एक निश्चित राशि यात्रा कर लेती है)। तो उस से आपको त्रिकोण के आसन्न और विपरीत रेखाएं प्राप्त करने की आवश्यकता है।

उदाहरण के लिए:

sin(angle) * hypothenuse = opposite (so Y offset from the surface).

cos(angle) * hypothenuse = adjacent (so X offset from the point of contact).

बस जोड़ सकते हैं या (दिशा के आधार पर) संपर्क बिंदु के निर्देशांकों से हटाने के निकट है और विपरीत मूल्यों।

1

यदि आप इसे थोड़ा यादृच्छिक लगाना चाहते हैं, तो आप कुछ हद तक स्पिन मॉडल कर सकते हैं - इसे बहुत जटिल नहीं होना चाहिए।

यदि यह 45 डिग्री कोण पर दीवार को कताई और हिट नहीं कर रहा था, तो यह गेंद को एक स्पिन प्रदान करेगा। जब यह अगली दीवार पर मारा जाता है, तो स्पिन कोण में जोड़ दिया जाएगा और कोण से स्पिन बढ़ाया जाएगा (या कमी)। मुझे लगता है कि स्पिन/कोण संयोजन उस गति को भी प्रभावित करेगा जिस पर यह दीवार से निकलता है (केवल वास्तविक जीवन स्थितियों को देखता है)

इससे यह वास्तव में यादृच्छिक होने के बिना भिन्न हो जाएगा - लेकिन मुझे नहीं पता कि कैसे यह वास्तव में दिखता है - आपको अन्य प्रतिबंध लागू करना पड़ सकता है (मुझे लगता है कि अधिकतम स्पिन को सीमित करने का एक तरीका होना चाहिए)।

मुझे यकीन है कि वहां एक साधारण भौतिकी पुस्तक है जो गणित में बहुत गहराई से बिना मॉडल के लिए पर्याप्त दे सकती है अगर आप नियम बनाना नहीं चाहते थे।

संबंधित मुद्दे