कोई अपने लक्ष्य की परिक्रमा करने से मिसाइलों को कैसे रोक सकता है?


78

मैं बिना किसी घर्षण के 2 डी स्पेस गेम विकसित कर रहा हूं, और मुझे यह बहुत आसान लग रहा है कि मैं एक होमिंग मिसाइल को अपना लक्ष्य बनाऊं। मैं विरोधी परिक्रमा की रणनीतियों के बारे में उत्सुक हूं।

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

परिक्रमा समस्या

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

यह देखते हुए कि अंतरिक्ष में कोई घर्षण नहीं है, मिसाइल के वेग को धीमा करने और कक्षा को ढहाने के लिए कुछ भी नहीं है। एक संभावित समाधान लक्ष्य को "पीछे" करना होगा, और यह कक्षा को बंद कर देगा, लेकिन यह एक प्रोग्रामिंग दृष्टिकोण से कैसे किया जाता है?

मैं अपने लक्ष्य तक पहुँचने के लिए एक स्वदेशी मिसाइल कैसे बनाऊँ?


9
यह वास्तव में स्टफ ऑर्बिट बनाने का एक बेहद शानदार तरीका है।
डेरेक

यह मुझे यूलर एकीकरण की याद दिलाता है। आपको बस इतना करना होगा कि आप अपने समय के कदम को असीम रूप से छोटा, समस्या का हल बना लेंगे!
जेफ

मैं इस प्रभाव को अपने खेल में लागू करना चाहता हूं! : डी
ज़ोलोमन


6
@ डिजा यह कक्षा की बहुत परिभाषा है। किसी अन्य वस्तु के केंद्र की ओर केन्द्रक बल के साथ परिक्रमा वस्तु तेज हो रही है।
बोब्बोबो

जवाबों:


49

सबसे पहले, आपको सभी गणना करना चाहिए कि मिसाइल के संदर्भ के फ्रेम में लागू करने के लिए कौन सी त्वरण है (यह है कि मिसाइल कहां स्थिर है और बाकी सब कुछ इसके चारों ओर चलता है, जिसे अक्सर खेल इंजनों में "ऑब्जेक्ट निर्देशांक" या "स्थानीय निर्देशांक" भी कहा जाता है। हालांकि हमारे मामले में हम चाहते हैं कि वेग बिल्कुल शून्य हो)।

विचार तब लक्ष्य के लिए लक्ष्य नहीं है, बल्कि उस स्थान के लिए लक्ष्य करना है जहां लक्ष्य प्रभाव के अनुमानित समय पर होगा। तो सामान्य एल्गोरिथ्म इस तरह दिखता है:

  1. अनुमान लगाएं कि मिसाइल को लक्ष्य तक पहुंचने में कितना समय लगेगा। यदि लक्ष्य सीधे इस पर उड़ान भर रहा है (याद रखें, मिसाइल स्थिर है ), यह दूरी / गति की गणना के रूप में सरल हो सकता है , अन्य मामलों में यह अधिक जटिल हो सकता है। यदि लक्ष्य कोशिश कर सकता है और बच सकता है तो आप किसी भी तरह एक सही अनुमान नहीं लगा पाएंगे, इसलिए यह बहुत सटीक नहीं है।

  2. लक्ष्य की निरंतर गति (1 डिग्री अनुमान) या निरंतर त्वरण (2 डिग्री अनुमान) को मानते हुए, गणना करें कि यह ऊपर के अनुमानित स्थान पर कहां होगा।

  3. त्वरण की गणना करें जो मिसाइल को एक ही समय में लगभग उसी स्थान पर ले जाएगा।

  4. ग्लोबल एक के संदर्भ में मिसाइल के फ्रेम से त्वरण वापस प्रोजेक्ट करें, उस का उपयोग करें।

यहाँ महत्वपूर्ण हिस्सा मोटे बॉलपार्क में समय का अनुमान लगाना है, और ऐसा करते समय मिसाइल के त्वरण क्षमताओं को नहीं भूलना है। उदाहरण के लिए, "लक्ष्य सीधे हमारे आगे है और हमारी दिशा में उड़ रहा है" के लिए एक बेहतर अनुमान समीकरण को हल करने के लिए होगा।

दूरी = गति x समय + १/२ x त्वरण x समय

... के लिए समय (सीधे उड़ान वस्तुओं के लिए नकारात्मक गति का उपयोग दूर मिसाइल से), समाधान के साथ आप मानक का उपयोग कर के लिए देख रहे द्विघात सूत्र जा रहा है ...

समय = ( x ( गति 2 + 2 x त्वरण x दूरी ) - गति ) / त्वरण

अतिरिक्त मापदंडों को जोड़ना - खींचें, उदाहरण के लिए - यह जल्दी से बिना बीजीय समाधानों के साथ अंतर समीकरणों में बदल जाता है। यही कारण है कि रॉकेट विज्ञान इतना कठिन है।


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

5
बहुत बढ़िया जवाब। एक साइड नोट के रूप में, कई ट्रैकिंग मिसाइलों को इन कंडोमों पर स्वचालित रूप से विस्फोट करने के लिए डिज़ाइन किया गया है: 1) ट्रैक की एक निश्चित दूरी के भीतर हो गई और 2) ट्रैक की दूरी अब बढ़ रही है। यह कम लागत पर थोड़ा अच्छा व्यवहार जोड़ सकता है।
पैट्रिक ह्यूजेस

1
यह एक बेहतरीन जवाब है। मैंने हथियार के लिए एक निरंतर त्वरण का उपयोग करके समाप्त किया (मुझे लगा कि यह सबसे यथार्थवादी था), अनुमान लगाया कि आने में समय लगेगा (डी = वी टी + 1/2 * ए टी * टी और टी के लिए हल करें)। गुप्त सॉस परियोजना के समय के अनुमान को वापस करने में लगा था, जहां लक्ष्य को वर्तमान वेग और प्रभाव को अनुमानित समय दिया जाएगा। अच्छा काम करता है।
बोब्बोबो

1
मुझे लगता है कि यह एक प्रकार का डेड-
रेकनिंग

42

@ मर्टिन सोज्का ने आपको पहले ही बता दिया था कि क्या करना है। मैं उसकी प्रतिक्रिया में सुधार करने के बजाय आपको एक और सरल aproach प्रस्तावित करना चाहता हूं: DELOCK

जैसा कि मैंने एक वाहन के प्रक्षेपवक्र प्रक्षेप में कहा था ? सीमित स्टीयरिंग क्षमताओं वाली वस्तुएं, छाया वाले जोड़े की एक जोड़ी को "प्रोजेक्ट" करती हैं: दो क्षेत्र जो प्रत्यक्ष स्टीयरिंग (एक टोरस और उच्च आयामों में एक हाइपरटोरस) के माध्यम से नहीं पहुंच सकते हैं।

जब आप देखते हैं कि आप लक्ष्यीकरण ऐसी स्टीयरिंग छाया में से एक में प्रवेश कर रहे हैं, तो आप अपने लक्ष्य को होम करना बंद कर सकते हैं और सीमित समय के लिए दूसरी दिशा रख सकते हैं।

डॉकिंग ट्रिगर आसानी से गणना की जा सकती है आपके टोरी को एक (डबल) शंकु के साथ: *

Delock ट्रिगर

आपको अपने (सामान्यीकृत) दिशा वेक्टर और अपने लक्ष्य विस्थापन वेक्टर ( लक्ष्य - वस्तु / लक्ष्य - वस्तु ) के बीच अदिश उत्पाद की गणना करनी होगी ।

जैसे ही स्केलर उत्पाद शून्य पर जाता है, आपकी लक्ष्य दिशा आपकी दिशा की ओर लंबवत हो जाती है जिससे एक गोल प्रक्षेपवक्र ** की ओर जाता है। जब लक्ष्य सियान क्षेत्र में आता है तो आप अपनी स्टीयरिंग दिशा को उल्टा कर सकते हैं ताकि आप इसे पहुंच से बाहर रख सकें और घर वापस ला सकें।

* ईमानदार होने के लिए यह एक शंकु नहीं है ... एक अन्य प्रकार की शासित सतह है (अर्ध) दो गैर समानांतर रेखाओं की क्रांति, जो अक्षीय रेखा के चारों ओर से गुजरती है और द्विध्रुवीय रेखा से लंबवत होती है; 2 डी विमान पर प्रक्षेपण दोहरे शंकु के समान है, लेकिन रोटेशन अक्ष उस शंकु के लिए लंबवत है।

** उस प्रक्षेपवक्र के परिपत्र या अण्डाकार या बंद होने की संभावना नहीं है। संभावना है कि प्रक्षेपवक्र 2 या 3 आयामों में 2 डी या यहां तक ​​कि अन्य राक्षसों में पथ (एक हाइपोथ्रोइड) की तरह एक स्पाइरोग्राफ का पालन करेगा। आप वैसे भी इस तरह के वक्रों के केंद्र तक नहीं पहुंच सकते हैं और वे हलकों की तरह दिखते हैं ताकि "परिपत्र" प्रक्षेपवक्र हो।


+1 उस मामले के लिए अच्छा विचार जहां मिसाइल का त्वरण वेक्टर यात्रा की दिशा के लंबवत होने के लिए प्रतिबंधित है। मुझे नहीं लगता कि यह इस सवाल के लिए मामला है।
मार्टिन सोज्का

@ मर्टिन सोज्का त्वरण वेक्टर को दो घटकों में विभाजित किया जा सकता है एक रेडियल और दूसरी दिशा के लिए स्पर्शरेखा। पहला व्यक्ति बताता है कि आप कितना बदल सकते हैं, दूसरा आप कितना तेजी से गिर सकते हैं / डीलेरेट कर सकते हैं।
FxIII

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

@Martin Sojka त्वरण पर कोई बाधा नहीं है?
FxIII

1
+1 यह बहुत अच्छा है। मैंने पहले कभी ऐसा नहीं सोचा था। मैं शायद @ Matin के जवाब के साथ संयोजन के रूप में इसका इस्तेमाल करने की कोशिश करूंगा
जॉन मैकडॉनल्ड्स

8

आपकी मार्गदर्शन प्रणाली इस धारणा पर बनी है कि लक्ष्य की ओर सीधे बढ़ते हुए अंततः वस्तुओं के टकराने का कारण बनेगी। चूंकि यह धारणा गलत है, इसलिए उस धारणा के आधार पर मार्गदर्शन AI असफल है।

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

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

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


2
"लक्ष्य विशेष रूप से फुर्तीला नहीं हैं
बोब्बोबो

5

खेलों (और वास्तविक जीवन) में इसके लिए उपयोग करने के लिए सबसे सरल और उन्नत तरीका आनुपातिक नेविगेशन है।

लगातार असर घटाना रेंज (सीबीडीआर) तर्क, जब दो वस्तुओं (मिसाइल और लक्ष्य) एक दूसरे के बीच sightline में बदलाव के बिना एक ही दिशा में यात्रा कर रहे हैं के तहत, वे जाएगा टकराते रहते हैं।

Sightline, या Line of Sight (LOS) मिसाइल और लक्ष्य के बीच की काल्पनिक रेखा है - मिसाइल की स्थिति और लक्ष्य की स्थिति के बीच की वेक्टर। इस LOS के कोणीय परिवर्तन की दर LOS रोटेशन दर है।

जब LOS रोटेशन रेट शून्य हो जाता है, तो दृश्य रेखा नहीं बदलती है - दोनों ऑब्जेक्ट अब टकराव के पाठ्यक्रम पर हैं। फुटबॉल / फ़ुटबॉल खेलने के दौरान किसी का पीछा करने के बारे में सोचें। यदि आप उसे इस तरह से आगे बढ़ाते हैं कि उसका शरीर आपकी दृष्टि के क्षेत्र में "जमे हुए" दिखता है (आपके और उसके बीच अब कोई बदलाव नहीं है), तो आप उसके साथ तब तक टकराते रहेंगे, जब तक आप अपने शरीर में जमे हुए दिखाई देने के लिए अपनी दौड़ने की गति बनाए रखते हैं। आपकै विचार।

आनुपातिक नेविगेशन (पीएन) के तहत, मिसाइल LOS रोटेशन दर की तुलना में "N" गुना तेज है। यह मिसाइल को लक्ष्य का नेतृत्व करने के लिए मजबूर कर देगा जब तक कि LOS रोटेशन रेट शून्य नहीं हो जाता है - यानी, मिसाइल और लक्ष्य राज्य में जमे हुए दिखाई देते हैं क्योंकि अब दृश्य परिवर्तन नहीं होता है - वे अब टक्कर के पाठ्यक्रम पर हैं। चर "एन" को नेविगेशन कॉन्स्टेंट (एक स्थिर गुणक) के रूप में जाना जाता है।

मिसाइल का मार्गदर्शन कमांड निम्नानुसार दिया जाना चाहिए:

त्वरण = समापन वेग * N * LOS दर

LOS वेक्टर को LOS वेक्टर (लक्ष्य स्थिति - मिसाइल स्थिति) को मापकर और इसके वेरिएबल को स्टोर करके आसानी से प्राप्त किया जा सकता है। नए फ्रेम (LOS1) से LOS वेक्टर LOS के डेल्टा को उत्पन्न करने के लिए LOS वेक्टर द्वारा पुराने फ्रेम (LOS0) से घटाया जाता है - अब आपके पास एक आदिम LOS रोटेशन दर है।

क्लोज़िंग वेलोसिटी को सरल बनाने के लिए, आप इसके स्थान पर वर्तमान LOS वेक्टर का उपयोग कर सकते हैं, इस प्रकार:

त्वरण = (target_pos - missile_pos) * LOS_delta * N

एन नेविगेशन स्थिरांक है - वास्तविक दुनिया में, यह आम तौर पर 3 से 5 के बीच सेट होता है, लेकिन गेम में वास्तविक व्यावहारिक आंकड़ा नमूना दर पर निर्भर होता है जिस पर आप LOS दर / डेल्टा प्राप्त कर रहे हैं। जब तक आप गेम में वांछित अग्रणी प्रभाव न देखें, यादृच्छिक संख्या (3 से शुरू) और 1500, 2000 आदि तक बढ़ाएँ। ध्यान दें कि नेविगेशन निरंतर उच्चतर होता है, जितनी तेज़ी से मिसाइल उड़ान में जल्दी LOS दर परिवर्तनों पर प्रतिक्रिया करेगा। यदि आपका होमिंग रॉकेट सिमुलेशन मॉडल कुछ हद तक यथार्थवादी है, तो अत्यधिक नेविगेशन स्थिरांक आपकी मिसाइल की वायुगतिकीय क्षमता को अधिभारित कर सकता है, इसलिए आपको परीक्षण और त्रुटि के आधार पर संतुलित संख्या का उपयोग करना चाहिए।


4

जैसा कि मार्टिन और निकोल के अन्य उत्तर बताते हैं, आप संभवतः अपनी मिसाइल को सीधे लक्ष्य पर नहीं गाइड करना चाहते हैं, लेकिन एक तरह से जो बाद में लक्ष्य से टकराएगा। हालांकि, मार्टिन द्वारा वर्णित विधि जटिल है और निकोल द्वारा वर्णित एक अयोग्य है।

एक सरल तरीका है - लेकिन अभी भी बहुत कुशल है - एक मिसाइल का मार्गदर्शन करने के लिए मिसाइल और लक्ष्य के बीच कोण परिवर्तन के अनुसार अपने कोण को समायोजित करके है। प्रत्येक टिक पर आप मिसाइल से लक्ष्य तक कोण की गणना करते हैं, और पिछले टिक से कोण के साथ तुलना करें। अंतर वह सटीक अंतर है जो आप मिसाइल के कोण पर बनाना चाहते हैं। इसलिए यदि कोण एक टिक में 0.77 और अगले में 0.75 है, तो आप मिसाइल के कोण को -0.02 से समायोजित करना चाहते हैं। यह विधि सरल है, और जब तक लक्ष्य मिसाइल के "सामने" है, यह चुने गए मार्ग के संदर्भ में बहुत कुशल है। यह सिर्फ 2d में ही नहीं, किसी भी संख्या में आयामों पर लागू होता है।

हालांकि, ध्यान रखें:

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

  • यदि लक्ष्य और मिसाइल ठीक उसी रेखा पर लेकिन विपरीत दिशाओं में उड़ान भर रहे हैं तो विधि टूट जाती है। यह वास्तव में वास्तविक दुनिया में नहीं हो सकता है, लेकिन एक असतत खेल में भी असामान्य नहीं है। इसके लिए परीक्षण करने के लिए आपको उपरोक्त एल्गोरिथ्म में एक कोने का मामला जोड़ना होगा।

  • यदि आपकी मिसाइल में सीमित टर्निंग क्षमता है, तो बस इसे हर बार अधिकतम मोड़ दें, जिससे इसे अधिक से अधिक मोड़ना पड़े। जब तक मिसाइल काफी दूर है तब तक यह काम करेगा। यदि यह बहुत करीब है, तो आखिरी गोली देखें।

  • टक्कर की जाँच करते समय संयम रखना याद रखें। वास्तविक दुनिया में कई मिसाइलें "मार क्षेत्र" का निर्माण करने के लिए अपने वारहेड पर भरोसा करती हैं, इसलिए उन्हें केवल लक्ष्य के करीब पहुंचने की आवश्यकता होती है, वास्तव में इसके साथ टकराने की नहीं।

  • अंत में, अभ्यास में मिसाइल अभी भी छूट सकती है , जो हमें आपके मूल प्रश्न पर वापस लाती है। मुझे लगता है कि एक अच्छा तरीका वास्तव में कुछ टिक्स के लिए होमिंग को अक्षम करना है, जिससे इसे कुछ दूरी हासिल होती है, और फिर इसे फिर से होम करना होता है। मुझे लगता है कि मृत क्षेत्रों की पहचान करने के लिए fxiii द्वारा प्रस्तावित विधि का पता लगाने का एक शानदार तरीका है जब आपको घर बंद करने की आवश्यकता होती है।


1

सरल विकल्पों में से कुछ जो मुझे पिछले दिनों में काम किए गए खेलों के लिए काफी अच्छे लगते हैं:

1) यदि आप जिस दृश्य को देख रहे हैं, उसका रिज़ॉल्यूशन इसे अनुमति देता है, तो वस्तु तब विस्फोट कर सकती है जब वह नियर टारगेट के पास हो (जो कि मेरा मानना ​​है कि सबसे आम दिन की मिसाइलें वास्तव में किसी भी मामले में काम करती हैं)। यदि आपकी परिक्रमा सीमा वस्तु के आकार से दुगुनी दूरी पर है, तो यह आपके लिए काम नहीं करेगा क्योंकि यह खराब लग रहा है।

यदि आपके समाधान में आपका अंतिम लक्ष्य बस यह सुनिश्चित करना है कि आपकी मिसाइल लक्ष्य को मारती है, तो मैं यह लक्ष्य बनाने के लिए बस बना रहा हूं। फिर, यह सिर्फ इस बात पर निर्भर करेगा कि समाधान कैसा दिखता है।

2) यदि आप पाते हैं कि आपकी मिसाइल आपके लक्ष्य के लिए एक समकोण पर है, तो यह वह बिंदु हो सकता है जहां ताला 'टूटता' है, और मिसाइल बस सीधे चलती है जब तक कि लक्ष्य दोबारा 'मिसाइल' के सामने नहीं आता।

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

उम्मीद है की यह मदद करेगा।


0

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

चूंकि हम एक ऐसी मिसाइल के साथ काम कर रहे हैं जो अभी भी ट्रैक कर सकती है और फिर भी जोर लगा सकती है, अगर लक्ष्य एफएक्सओआई के पोस्ट के बारे में बात करता है, तो ज़ोन में से एक में एक कक्षा की स्थिति मिलती है।

हालांकि, मैं समस्या के उनके समाधान से असहमत हूं। इसके बजाय, मैं मिसाइलों को इस प्रकार प्रोग्राम करूंगा:

यदि मिसाइल 90 डिग्री पर गति कर रही है तो यह 360 डिग्री गति के लिए गति की रेखा है जो आप कक्षा में हैं। गति की रेखा से जोर को 120 डिग्री पर समायोजित करें। मिसाइल की कक्षा और चौड़ी हो जाएगी क्योंकि यह कठोर नहीं हो रही है लेकिन मिसाइल भी धीमी हो जाएगी, इस प्रकार यह युद्धाभ्यास को बेहतर बना देगा। जब लक्ष्य की सीमा 1.25x से मृत क्षेत्र का व्यास खुलता है (ध्यान दें कि यह व्यास केवल और केवल मिसाइल की गति पर आधारित है, रनटाइम के दौरान कोई जटिल गणना की आवश्यकता नहीं है) यह मिसाइल सामान्य ट्रैकिंग व्यवहार पर लौटती है।

वैकल्पिक रूप से, डम्बर साधक प्रमुखों का उपयोग करें - जब सीमा को लक्षित करने के लिए आप नीचे गिना जाता है।


0

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

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

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

मैं इस की व्युत्पत्ति पोस्ट करूँगा, लेकिन मैंने पाया है कि इस साइट पर कोई गणित मार्कअप समर्थित नहीं है। बू! आपको बस यह विश्वास करना होगा कि यह इष्टतम समाधान है, मेरे असर में है कि मुझे त्वरण दिशा पर कोई प्रतिबंध नहीं है, जो कि मिसाइल प्रकार की वस्तु के लिए नहीं है, इसलिए इसके लिए कुछ अतिरिक्त बाधाओं की आवश्यकता होगी।

कोड अजगर में है, लेकिन किसी भी भाषा की पृष्ठभूमि के साथ पठनीय होना चाहिए। सादगी के लिए, मुझे लगता है कि हर बार कदम 1 की लंबाई है और प्रतिबिंबित करने के लिए उपयुक्त इकाइयों में वेग और त्वरण व्यक्त करते हैं।

self.x = # current x co-ordinate
self.y = # current y co-ordinate
self.angle = # current angle of motion
self.current_speed = # current magnitude of the velocity
self.acc # Maximum acceleration player can exert on themselves
target_x = # x co-ordinate of target position or projection of it
target_y = # y co-ordinate of target position or projection of it
vx = self.current_speed * math.cos(self.angle) # current velocity x component
vy = self.current_speed * math.sin(self.angle) # current velocity y component
# Find best direction to accelerate
acc_angle = math.atan2(self.x + vx - target_x,self.y + vy - target_y)

ध्यान दें कि atan2 (ए, बी) फ़ंक्शन एक / बी के उलटा तन की गणना करता है, लेकिन यह सुनिश्चित करता है कि कोण एक सर्कल के सही चतुर्थांश में बैठता है, जिसे ए और बी दोनों के संकेत को जानने की आवश्यकता होती है।

मेरे मामले में, एक बार मेरे पास त्वरण है जो मैं लागू करता हूं कि वेग को अपडेट करने के लिए

vx_new = vx + self.acc * math.cos(acc_angle)
vy_new = vy + self.acc * math.sin(acc_angle)
self.current_speed = math.sqrt( vx_new**2 + vy_new**2)
self.angle = math.atan2(vy_new,vx_new)

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

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


कुछ परिदृश्यों में मैं लगभग सीधे वेग स्थापित करने की सलाह दूंगा - हालांकि यह एक भौतिकी प्रणाली के साथ एकीकृत करने के लिए कठिन हो सकता है जो ज्यादातर बल पर निर्भर करता है। यदि यह एक ऐसा खेल है जहां मिसाइलों को नियमित रूप से निकाल दिया जाता है, "चकमा देने वाला" एक उल्लेखनीय खेल मैकेनिक नहीं है, तो आप रास्ते में भौतिकी के छोटे जोखिम से बचना चाह सकते हैं, और बस आश्वासन दें कि यह मैकेनिक खिलाड़ी के रूप में काम करता है। हर बार यह अंतरिक्ष एक्शन गेम की तुलना में आरटीएस में अधिक समझ में आता है।
कटाना ३१४

0

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

एक मार्गदर्शन प्रणाली के लिए एक अधिक यथार्थवादी दृष्टिकोण विपरीत लक्ष्य दूरी (कम दूरी -> अधिक मोड़ दर) के साथ मोड़ दर में भिन्नता होगी। यह कक्षा के बजाय एक सर्पिल देगा, और धीमी लक्ष्य के साथ टकराव की गारंटी देगा।

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

आंशिक समीकरणों की जरूरत नहीं।

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