मैं अपने साइड-स्कॉलर के लिए कुछ अल्पविकसित एअर इंडिया बना रहा हूं और मुझे यह जानना होगा कि क्या कोई एआई इकाई केवल एक कूदने से बिंदु ए से बिंदु बी तक पहुंच सकती है।
मेरे पात्रों की उड़ान प्रक्षेपवक्र थोड़ी असामान्य है क्योंकि वे मध्य-वायु में बल लगा सकते हैं (उदाहरण के लिए जैज़ जैकबबिट 2 में), इसलिए एक प्रक्षेप्य के क्लासिक प्रक्षेपवक्र के विपरीत जो ...
पथ कि फेंक दिया या प्रक्षेपित प्रक्षेप्य (बिना) प्रणोदन के बिना ले जाएगा।
... मुझे लगता है कि मेरी समस्या प्रणोदन (जैसे रॉकेट) के साथ एक प्रक्षेप्य के बारे में अधिक है ।
यह वर्णन करने के लिए, यह है कि फ्लाइट वक्र मेरे चरित्र के लिए कैसा दिखता है अगर मैं कूदता हूं और "बाएं बटन" को लगातार दबाता हूं (यह बाएं छोर पर अलग दिखता है, यह वह जगह है जहां मैं मध्य हवा में कुछ पैंतरेबाज़ी कर रहा था):
उड़ान के दौरान लगाया गया बल हमेशा X अक्ष के समानांतर होता है, इसलिए यह F = (-f, 0) है अगर मैं "बाएं" रखता हूं और यह F = (f, 0) है अगर मैं "सही" रखता हूं।
वह स्की जम्पर की तरह बहुत आगे बढ़ सकता है:
तो यह क्लासिक प्रक्षेपवक्र से बहुत भिन्न होता है जो बस एक परवलय है (स्रोत: विकिपीडिया ):
इसे और अधिक कठिन बनाने के लिए, मैं सरल वायु प्रतिरोध का अनुकरण कर रहा हूं ताकि मेरे पात्र केवल कुछ अधिकतम गति मान तक ही तेजी ला सकें।
यह यात्रा के विपरीत दिशा में एक छोटा बल लगाने से होता है :
b2Vec2 vel = body->GetLinearVelocity();
float speed = vel.Normalize(); //normalizes vector and returns length
body->ApplyForce( AIR_RESISTANCE_MULT * speed * speed * -vel, body->GetWorldCenter() );
AIR_RESISTANCE_MULT एक स्थिरांक है जो मेरे मामले में 0.1 के बराबर है।
मान लेते हैं कि मेरा चरित्र एक असीम रूप से छोटा बिंदु है।
और मैं अवरोधों पर विचार नहीं कर रहा हूं , इसलिए मेरा प्रश्न इस तरह से है ...
कैसे निर्धारित किया जाए (कम से कम विश्वसनीय रूप से अनुमान लगाया जाए), प्रारंभिक वेग V, एक आवेग J = (0--j), जिसे मैं छलांग पर वर्ण पर लागू करता हूं, गुरुत्वाकर्षण G = (0, g) , बल F = (+ -f) , 0) उड़ान और AIR_RESISTANCE_MULT के दौरान लगातार लागू किया जाता है , अगर हम वास्तव में हवाई प्रतिरोध को ध्यान में रखते हुए निर्णय लेते हैं (यह वैकल्पिक है) , क्या एक बिंदु मेरे चरित्र द्वारा उठाए गए वक्र से नीचे झूठ होगा?
मुझे सचमुच पता नहीं है कि गणना के साथ कहां से शुरू करना है और वास्तव में, मुझे जरूरी नहीं कि सटीक उत्तर में दिलचस्पी हो; एक अच्छी तरह से काम कर हैक / सन्निकटन एअर इंडिया के रूप में महान होगा कोई मतलब नहीं पूरी तरह से काम करने की जरूरत है।
संपादित करें: मैंने सिमुलेशन का उपयोग करके इसे हल करने का फैसला किया है क्योंकि जेसन का सुझाव है, लेकिन इस तरह के मामले को कैसे संभालना है?
क्या मुझे C से D तक का सेगमेंट आकर्षित करना चाहिए और जांचना चाहिए कि वांछित बिंदु इस सेगमेंट के नीचे है या नहीं?
या क्या मुझे उस बिंदु की तलाश के लिए सी और डी के बीच टाइमस्टेप को बाइनरी खोजना चाहिए जो कि वांछित बिंदु तक क्षैतिज दूरी में पर्याप्त है, और उसके बाद ही ऊर्ध्वाधर अंतर की जांच करें? (मेरे लिए थोड़ा अधिक लगता है)