मैं एक खिड़की के चारों ओर एक गेंद उछाल करने की कोशिश कर रहा हूं। इस पर निर्भर करता है कि गेंद कितनी दूर दीवार को हिट करती है और किस कोण पर इसका प्रतिबिंब निर्धारित होगा। आप तस्वीर में देख सकते हैं कि काला प्रक्षेपण आंतरिक आधे पर विपरीत दीवार को हिट करता है ... और ग्रे प्रक्षेपवक्र का प्रतिनिधित्व करता है अगर यह प्रतिबिंबित करने और दूसरे आधा हिट करने के लिए होता है ... जो प्रतिबिंब के कोण को कम करेगा।बाउंसिंग बॉल के यादृच्छिक कोण
मुझे यकीन नहीं है कि मैं इसके बारे में सही तरीके से सोच रहा हूं ... मैं डिग्री के संदर्भ में निर्देशांक लगाने की कोशिश कर रहा हूं।
डिग्री तो पिक दिया ... आप उन डेल्टा ले जाएगा, तो मिलता है ...
डिग्री = Math.atan2 (विपरीत/आसन्न) = (-4/-2)
मेरे कोड
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 मैं सही ढंग से गेंद के कोण की गणना?
- मैं दीवार पर कहां हिट करता हूं, इस आधार पर बाउंस में विविधता कैसे जोड़ सकता हूं?
- एक बार मेरे पास डिग्री में कोण हो जाने के बाद, मैं इसे वापस निर्देशांक में कैसे अनुवाद कर सकता हूं?
धन्यवाद!
प्रतिक्रिया गिल्बर्ट के लिए धन्यवाद। मैंने उपरोक्त अपना चित्र अपडेट किया ... क्या यह सही है? – Growler
@ ग्रोलर: हां, थेटा वह कोण है जिसकी आप गणना कर रहे हैं। –
मेरा मतलब था, एक बार मेरे पास डिग्री में कोण हो ... मैं देख रहा हूं कि नए वृद्धिशील मूल्यों को कैसे प्राप्त किया जाए जो उस कोण का प्रतिनिधित्व करते हैं (जरूरी नहीं कि आपके लिंक एसएएस का उपयोग करके दिखाए जाते हैं)। जैसा कि .. x और y increments के लिए 'x + = newVal;' और 'y + = newVal' में' newVal' क्या है? – Growler