কীভাবে কেউ হোমিং ক্ষেপণাস্ত্রগুলিকে তাদের লক্ষ্যগুলি প্রদক্ষিণ করতে বাধা দেয়?


78

আমি কোনও ঘর্ষণ ছাড়াই একটি 2 ডি স্পেস গেমটি বিকাশ করছি এবং আমি একটি হোমিং ক্ষেপণাস্ত্রটিকে তার টার্গেটের কক্ষপথে তৈরি করা খুব সহজ খুঁজে পেয়েছি। আমি অ্যান্টি-প্রদক্ষিণ কৌশল সম্পর্কে কৌতূহলী।

একটি সাধারণ উদাহরণ হ'ল একটি হোমিং ক্ষেপণাস্ত্র যা সরাসরি তার টার্গেটের দিকে সরাসরি ত্বরান্বিত করে। যদি সেই লক্ষ্যটি ক্ষেপণাস্ত্রের গতিপথের দিকে লম্ব নিয়ে যেতে থাকে তবে থামানো উচিত, লক্ষ্যটির দিকে ক্ষেপণাস্ত্রটির ত্বরণ তার নিজস্ব বেগকে কাটিয়ে উঠতে যথেষ্ট হবে না, এবং ক্ষেপণাস্ত্র লক্ষ্যটির চারদিকে কক্ষপথে চালিত হতে পারে, যেমনটি চিত্রিত হয়েছে:

প্রদক্ষিণ সমস্যা

  • ফ্রেম 1 এ, মিসাইলটি সরাসরি তার টার্গেটের দিকে চলেছে, কোনও সমস্যা নেই।
  • ফ্রেম 2 এ, লক্ষ্য হিসাবে প্রদর্শিত হিসাবে একটি নতুন অবস্থানে চলে গেছে। ক্ষেপণাস্ত্রটি লক্ষ্যমাত্রার (লাল রঙের) দিকে সরাসরি ত্বরান্বিত হতে থাকে, যদিও এখনও সেখানে উপস্থিত ছিল যেখানে বিদ্যমান বেগের কারণে লক্ষ্যটি (কালোতে) ব্যবহৃত হত।
  • ফ্রেম 3 এ, ক্ষেপণাস্ত্রটির গতিবেগ লক্ষ্যবস্তু (কালো) এর পাশের চারদিকে ক্ষেপণাস্ত্র বহন করে চলেছে যখন ত্বরণকারী ভেক্টর লক্ষ্যবস্তুটির দিকে মিসাইলটি টানতে মরিয়া চেষ্টা করে।
  • ফ্রেম 4 এবং এর বাইরে, ক্ষেপণাস্ত্রগুলি লক্ষ্যের চারপাশে একটি সম্ভাব্য স্থিতী কক্ষপথে পড়ে এবং কখনই তার লক্ষ্যে পৌঁছায় না। কালো তীরগুলি একটি বেগ ভেক্টরকে নির্দেশ করে যখন লাল রেখাগুলি একই মুহুর্তে ত্বরণ ভেক্টরগুলিকে একই সাথে নির্দেশ করে।

মহাকাশে কোনও ঘর্ষণ নেই বলে বিবেচনা করে ক্ষেপণাস্ত্রটির গতি কমিয়ে কক্ষপথটি ভেঙে ফেলার মতো কিছুই নেই। সম্ভাব্য সমাধানটি লক্ষ্যটির "পিছনে" লক্ষ্য করা এবং এর ফলে কক্ষপথটি বন্ধ হয়ে যায়, তবে প্রোগ্রামিং দৃষ্টিকোণ থেকে এটি কীভাবে সম্পন্ন হয়?

কীভাবে আমি একটি হোমিং ক্ষেপণাস্ত্রকে তার লক্ষ্যে পৌঁছাতে পারি?


9
এটি আসলে স্টাফ কক্ষপথ তৈরি করার একটি দুর্দান্ত উপায়।
ডেরেক

এটি আমাকে ইউলার সংহতকরণের কথা মনে করিয়ে দেয়। আপনার যা করতে হবে তা হ'ল আপনার সময়কে ধাপে অগণিতভাবে ছোট করা, সমস্যা সমাধান করা!
জেফ

আমি আমার গেমটিতে এই প্রভাবটি প্রয়োগ করতে চাই! : ডি
জোলোমন


6
@ ডিজা এটি কক্ষপথের খুব সংজ্ঞা । প্রদক্ষিণ করা অবজেক্টটি কেন্দ্রিয় ক্ষেত্র বলের সাথে আরও কিছু বস্তুর কেন্দ্রের দিকে ত্বরান্বিত হচ্ছে।
বোবোবোবো

উত্তর:


49

প্রথমত, আপনি ক্ষেপণাস্ত্রের রেফারেন্সের ফ্রেমে কোন ত্বরণটি প্রয়োগ করতে হবে সে সম্পর্কে সমস্ত গণনা করা উচিত (এটিই ক্ষেপণাস্ত্রটি স্থির থাকে এবং এর চারপাশে সমস্ত কিছুই ঘোরাফেরা করে, যাকে প্রায়শই গেম ইঞ্জিনগুলিতে "অবজেক্ট কোঅর্ডিনেটস" বা "স্থানীয় স্থানাঙ্ক "ও বলা হয়, যদিও আমাদের ক্ষেত্রে আমরা বেগটিও ঠিক শূন্য হতে চাই)।

তারপরে ধারণাটি লক্ষ্যটির জন্য লক্ষ্য নয়, তবে লক্ষ্যটি প্রভাবের সময় নির্ধারিত সময়ে লক্ষ্য নির্ধারণ করা aim সুতরাং সাধারণ অ্যালগরিদম এরকম দেখাচ্ছে:

  1. ক্ষেপণাস্ত্রটি লক্ষ্যে পৌঁছাতে কত সময় লাগবে তা অনুমান করুন। লক্ষ্যটি যদি সরাসরি এটিতে উড়তে থাকে (মনে রাখবেন, ক্ষেপণাস্ত্রটি স্থির ), এটি দূরত্ব / গতি গণনার মতোই সহজ হতে পারে , অন্য ক্ষেত্রে এটি আরও জটিল হতে পারে। যদি লক্ষ্য চেষ্টা করে এবং এড়ানোর চেষ্টা করতে পারে তবে আপনি যেভাবেই একটি নিখুঁত অনুমান করতে সক্ষম হবেন না, তাই খুব সুনির্দিষ্ট না হওয়া ভাল ok

  2. লক্ষ্যটির ধ্রুবক গতি (1 ম ডিগ্রির প্রাক্কলন) বা ধ্রুবক ত্বরণ (2 ডিগ্রি অনুমান) অনুমান করে গণনা করুন এটি উপরের আনুমানিক সময়ে কোথায় হবে ulate

  3. ত্বরণ গণনা করুন যা ক্ষেপণাস্ত্রকে একই সময়ে একই জায়গায় হতে পারে।

  4. ক্ষেপণাস্ত্রের ফ্রেমটি বিশ্বব্যাপী রেফারেন্স থেকে ত্বরণ পুনরায় প্রকল্প করুন, এটি ব্যবহার করুন।

এখানে গুরুত্বপূর্ণ অংশটি হ'ল রুক্ষ বলপার্কে সময় অনুমান করা এবং ক্ষেপণাস্ত্রটির ত্বরণ করার ক্ষমতাগুলি ভুলে যাওয়া নয়। উদাহরণস্বরূপ, "টার্গেটটি সরাসরি আমাদের সামনে এবং আমাদের দিকে উড়ে" এর আরও ভাল অনুমান হবে সমীকরণটি সমাধান করা ..

দূরত্ব = গতি এক্স সময় + 1/2 এক্স ত্বরণ এক্স সময় 2

... এর জন্য সময় (সোজা উড়ন্ত অবজেক্টের জন্য নেতিবাচক গতি ব্যবহার দূরে ক্ষেপণাস্ত্র থেকে), সমাধান সঙ্গে আপনি স্ট্যান্ডার্ড ব্যবহার করার জন্য খুঁজছেন দ্বিঘাত সূত্র হচ্ছে ...

সময় = (√ ( গতি 2 + 2 এক্স ত্বরণ এক্স দূরত্ব ) - গতি ) / ত্বরণ

অতিরিক্ত পরামিতি যুক্ত করা - উদাহরণস্বরূপ টেনে আনুন, কোনও বীজগণিতিক সমাধান ছাড়াই দ্রুত এটিকে ডিফারেনশিয়াল সমীকরণে রূপান্তরিত করে। এই কারণেই রকেট বিজ্ঞান এত কঠিন।


আমি মনে করি এটি ঠিক আমার প্রয়োজন। আমি আগে কখনও স্থানীয় স্থানাঙ্কে চিন্তা করি না।
জন ম্যাকডোনাল্ড

5
দুর্দান্ত উত্তর। পার্শ্ব নোট হিসাবে, অনেক ট্র্যাকিং মিসাইলগুলি স্বয়ংক্রিয়ভাবে এই কনডেশনগুলিতে বিস্ফোরণে ডিজাইন করা হয়েছে: 1) ট্র্যাকের একটি নির্দিষ্ট দূরত্বের মধ্যে পৌঁছেছে এবং 2) ট্র্যাকের দূরত্ব এখন বাড়ছে। এটি অল্প ব্যয়ে সামান্য সুন্দর আচরণ যুক্ত করতে পারে।
প্যাট্রিক হিউজেস

1
এটি একটি দুর্দান্ত উত্তর। আমি অস্ত্রটির জন্য ধ্রুবক ত্বরণ ব্যবহার করে শেষ হয়েছি (আমি মনে করি এটি সবচেয়ে বাস্তববাদী), এটি আসতে যে সময় লাগবে তা অনুমান করেছিলাম (d = v t + 1/2 * a t * t এবং টিয়ের জন্য সমাধান করুন) re গোপন সস প্রকল্পটি নির্ধারণের সময় অনুমানকে ফিরিয়ে দেয় যেখানে লক্ষ্যটিকে তার বর্তমান গতিবেগ এবং প্রভাবের জন্য আনুমানিক সময় দেওয়া হবে। ভাল কাজ করে.
বোবোবোবো

1
আমার ধারণা এটি এক ধরণের মৃত-গণনা করা অ্যালগরিদম
bobobobo

42

@ মার্টিন সোজকা আপনাকে ইতিমধ্যে জানিয়েছে কী করতে হবে। তার প্রতিক্রিয়াটি উন্নত করার পরিবর্তে আমি আপনাকে আরও একটি সহজ অ্যাপ্রোচ প্রস্তাব করতে চাই: ডলোক

যেমনটি আমি কোনও গাড়ির প্রজেক্ট ট্রাজেক্টোরিতে বলেছি ? , সীমিত স্টিয়ারিং ক্ষমতা সহ বস্তুগুলি "প্রজেক্ট" কে কয়েক ছায়া সিরিল দেয়: দুটি অঞ্চল যা সরাসরি স্টিয়ারিংয়ের মাধ্যমে পৌঁছানো যায় না (উচ্চতর মাত্রায় একটি টরাস এবং একটি হাইপারটরাস)।

আপনি যখন লক্ষ্য করেন যে আপনি এই জাতীয় কোনও স্টিয়ারিং শ্যাডোতে প্রবেশ করছেন, তখন আপনি আপনার টার্গেটটি হোমিং বন্ধ করতে পারেন এবং সীমিত সময়ের জন্য অন্য দিকটি রাখতে পারেন।

আপনার টোরিকে একটি দ্বিগুণ শঙ্কু * দিয়ে অ্যাপ্রোক্সিমাইটিং করে সহজেই গণনা করা যায়:

ডেলক ট্রিগার

আপনাকে কেবল আপনার (সাধারণীকৃত) দিকনির্দেশক ভেক্টর এবং আপনার লক্ষ্য স্থানচ্যুতি ভেক্টর ( টার্গেট - অবজেক্ট / | টার্গেট - অবজেক্ট |) এর মধ্যে স্কেলার পণ্যটি গণনা করতে হবে ।

স্কেলারের পণ্য শূন্যে চলে যাওয়ার সাথে সাথে আপনার টার্গেটের দিকটি আপনার দিকের দিকে লম্ব হয়ে যায় যা একটি বৃত্তাকার ট্রাজেক্টোরি ** এর দিকে নিয়ে যায়। লক্ষ্যটি যখন সায়ান অঞ্চলে পড়ে আপনি আপনার স্টিয়ারিং দিকটি উল্টিয়ে দিতে পারেন যাতে আপনি এটিকে অ্যাক্সেসযোগ্য জায়গার বাইরে রেখে পুনরায় হোমিং করতে পারেন।

* সত্য কথা বলতে গেলে এটি কোনও শঙ্কু নয় ... একটি অন্য ধরণের সমান্তরাল রেখার চৌম্বকটি এবং দ্বিখণ্ডকরেখার লম্বের মধ্য দিয়ে লম্বালম্বের মধ্য দিয়ে দুটি সমান্তরাল রেখার (আধা) বিপ্লব দ্বারা উত্পাদিত অন্য ধরণের নিয়ন্ত্রিত পৃষ্ঠ; 2 ডি প্লেনের অভিক্ষেপগুলি ডাবল শঙ্কুর সমান, তবে ঘূর্ণন অক্ষটি শঙ্কু উত্পন্ন করার জন্য লম্ব হয়।

** এই পথটি বৃত্তাকার বা উপবৃত্তাকার বা এমনকি বন্ধ হওয়ার সম্ভাবনা কম। সম্ভাবনা হ'ল ট্রাজেক্টোরিটি 3D এবং তারপরের মাত্রায় 2D বা এমনকি অন্যান্য দানবগুলির মতো পথ (একটি হাইপোট্রোকাইড) এর মতো একটি স্পিরোগ্রাফ অনুসরণ করবে। আপনি যাইহোক এই জাতীয় বক্ররেখার কেন্দ্রে পৌঁছাতে পারবেন না এবং এগুলি "বৃত্তাকার" ট্রাজেক্টরির মতো চেনাশোনাগুলির মতো দেখায়।


+1 যে ক্ষেত্রে ক্ষেপণাস্ত্রের ত্বরণ ভেক্টরটি ভ্রমণের দিকের দিকে লম্ব করতে সীমাবদ্ধ সে ক্ষেত্রে দুর্দান্ত ধারণা। যদিও আমি এই প্রশ্নের ক্ষেত্রে এটি মনে করি না।
মার্টিন সোজকা

@ মার্টিন সোজকা ত্বরণ ভেক্টর এমনকি দুটি অংশে বিভক্ত হতে পারে একটি রেডিয়াল এবং অন্যটি স্পর্শকাতর দিকে। প্রথমটি আপনাকে বলতে পারে আপনি কতটা ঘুরতে পারবেন, দ্বিতীয়টি আপনাকে কতটা ত্বরণ / বিলোপ করতে পারে।
FxIII

1
হ্যাঁ, এবং যদি আপনি একে অপরের থেকে স্বতন্ত্রভাবে তাদের আপেক্ষিক শক্তি চয়ন করতে স্বাধীন হন (তবে, যদি ত্বরণ ভেক্টরের দিক এবং শক্তি আন্দোলনের ভেক্টর থেকে স্বতন্ত্র থাকে), আপনার "বর্জনীয় বৃত্তগুলি" বিলুপ্ত হবে।
মার্টিন সোজকা

@ মার্টিন সোজকা কি এক্সিলারেশন স্ট্রিংহটে কোনও বাধা নেই?
FxIII

1
+1 এটি দুর্দান্ত। আমি এর আগে কখনও ভাবিনি। আমি সম্ভবত @ মতিনের উত্তরের সাথে এটি ব্যবহার করার চেষ্টা করব
জন ম্যাকডোনাল্ড

8

আপনার গাইডেন্স সিস্টেমটি এই ধারণায় তৈরি করা হয়েছে যে সরাসরি টার্গেটের দিকে ত্বরান্বিত করার ফলে অবশেষে বস্তুগুলির সংঘর্ষ ঘটবে। যেহেতু এই অনুমানটি মিথ্যা, সেই অনুমানের উপর ভিত্তি করে গাইড এআই একইভাবে ব্যর্থ।

সুতরাং সরাসরি লক্ষ্যের দিকে ত্বরণ বন্ধ করুন । লক্ষ্যটির অবস্থানটি ক্ষেপণাস্ত্রের গতির দিকের দিকে কিছুটা লম্বিত কিনা তা সনাক্ত করতে কিছু যুক্তি যুক্ত করুন। যদি তা হয়, তবে ক্ষেপণাস্ত্রটি লক্ষ্যটির দিকে ত্বরান্বিত করতে হবে, তবে এর এগিয়ে চলার গতিটিও ধীর করবে। সুতরাং সরাসরি টার্গেটের দিকে যাওয়ার পরিবর্তে, এটি তার ত্বরণের দিকটিকে পক্ষপাতদুষ্ট করে তোলে যাতে তার গতির দিকের বর্তমান গতিটি ধীর হয়ে যায়।

এছাড়াও, আপনি খুব ধীরগতিতে যাচ্ছেন না তা নিশ্চিত করতে আপনার একটি ট্রিগার প্রয়োজন। সুতরাং কিছু প্রান্তিক গতি যুক্ত করুন যে আপনি যদি এই প্রান্তিকের নীচে হন, আপনি পক্ষপাতদুষ্ট করা বন্ধ করুন।

একটি শেষ জিনিস: কোনও নির্দেশিকা সিস্টেম নিখুঁত হবে না। ক্ষেপণাস্ত্রগুলি বাস্তব জীবনে লক্ষ্যগুলি বাধা দিতে পারে তার কারণ হ'ল লক্ষ্যগুলি মিসাইলগুলির চেয়ে অনেক ধীর গতিতে চলে যায় এবং লক্ষ্যগুলি বিশেষভাবে নিমজ্জিত হয় না (তুলনামূলকভাবে কথা বলা) speaking যদি আপনার মিসাইলগুলি যে লক্ষ্যগুলি তাড়া করে তার চেয়ে বহুগুণ দ্রুত না হয় তবে তারা অনেক বেশি মিস করবে।


2
"লক্ষ্যগুলি বিশেষত চূড়ান্ত নয়" .. তাই না?
বোবোবোবো

5

গেমসে (এবং বাস্তব জীবন) এর জন্য এটি ব্যবহার করার জন্য সবচেয়ে সহজ এবং উন্নত পদ্ধতিটি হ'ল আনুষঙ্গিক নেভিগেশন।

কনস্ট্যান্ট বেয়ারিং ডিক্রেসিং রেঞ্জ (সিবিডিআর) যুক্তির অধীনে, যখন দুটি বস্তু (ক্ষেপণাস্ত্র এবং লক্ষ্য) একে অপরের মধ্যে দৃষ্টিশক্তি পরিবর্তন না করে একই দিকে যাত্রা করছে, তখন তাদের সংঘর্ষ হবে

সাইটলাইন, বা লাইন অফ দ্য সাইট (এলওএস) হ'ল ক্ষেপণাস্ত্র এবং লক্ষ্যটির মধ্যে কাল্পনিক লাইন - ক্ষেপণাস্ত্রের অবস্থান এবং লক্ষ্য অবস্থানের মধ্যে ভেক্টর। এই এলওএসের কৌণিক পরিবর্তনের হার হ'ল লস রোটেশন রেট।

যখন লোস রোটেশন রেট শূন্য হয়ে যায়, তখন দৃষ্টিশক্তি আর পরিবর্তন হয় না - দুটি বস্তু এখন সংঘর্ষের পথে রয়েছে। নিজেকে ফুটবল / সকার খেলতে গিয়ে কাউকে তাড়া করতে বলে ভাবেন। যদি আপনি তাকে এমনভাবে নেতৃত্ব দেন যা আপনার দৃষ্টির ক্ষেত্রগুলিতে তাঁর শরীর "হিমশীতল" দেখায় (আপনার এবং তাঁর মধ্যে দৃষ্টিশক্তি আর পরিবর্তিত হয় না), আপনি যতক্ষণ না তাঁর দেহকে হিমায়িত রাখতে আপনার চলমান ত্বরণ বজায় রাখবেন ততক্ষণ আপনি তার সাথে সংঘর্ষ করবেন you আপনার মতামত

আনুপাতিক নেভিগেশন (পিএন) এর অধীনে, ক্ষেপণাস্ত্রগুলি LOS ঘূর্ণন হারের চেয়ে "N" গতিবেগকে ত্বরান্বিত করে। এটি ক্ষেপণাস্ত্রকে লস রোটেশন রেট শূন্য না হওয়া পর্যন্ত লক্ষ্যবস্তুতে নেতৃত্ব দিতে বাধ্য করবে - অর্থাৎ, ক্ষেপণাস্ত্রটি এবং লক্ষ্যটিকে স্থিরভাবে দৃশ্যমান স্থানে পরিবর্তন করার কারণে হিমায়িত প্রদর্শিত হবে - তারা এখন সংঘর্ষের পথে রয়েছে। পরিবর্তনশীল "এন" নেভিগেশন কনস্ট্যান্ট (একটি ধ্রুবক গুণক) হিসাবে পরিচিত।

মিসাইলের গাইডেন্স কমান্ড নীচে দেওয়া উচিত:

ত্বরণ = বন্ধের বেগ * এন * লস হার

লস রেট সহজেই লস ভেক্টর (টার্গেট পজিশন - ক্ষেপণাস্ত্রের অবস্থান) পরিমাপ করে এবং এর ভেরিয়েবলটি সংরক্ষণ করে উদ্ভূত হতে পারে। নতুন ফ্রেমের (এলওএস 1) থেকে লস ভেক্টরটি লস ডেল্টা তৈরি করতে পুরানো ফ্রেম (লস 0) থেকে লস ভেক্টর দ্বারা বিয়োগ করে - এখন আপনার কাছে আদিম লস রোটেশনের হার রয়েছে।

সমাপনী বেগটি সহজ করার জন্য, আপনি কেবলমাত্র বর্তমান লস ভেক্টরকে তার জায়গায় ব্যবহার করতে পারেন, এভাবে:

ত্বরণ = (লক্ষ্য_পোস - মিসাইল_পোস) * লস_ডেলটা * এন _

এন নেভিগেশন ধ্রুবক - আসল বিশ্বে এটি সাধারণত 3 থেকে 5 এর মধ্যে সেট করা থাকে তবে গেমের আসল কার্যক্ষম চিত্রটি কিছুটা নমুনা হারের উপর নির্ভরশীল যেখানে আপনি লস রেট / ডেল্টা অর্জন করছেন। যতক্ষণ না আপনি খেলায় পছন্দসই নেতৃস্থানীয় প্রভাব না দেখেন একটি এলোমেলো সংখ্যা চেষ্টা করুন (3 থেকে শুরু করুন) এবং 1500, 2000 ইত্যাদি পর্যন্ত বৃদ্ধি করুন। দ্রষ্টব্য যে নেভিগেশন ধ্রুবক যত বেশি হবে, দ্রুত ক্ষেপণাস্ত্রটি ফ্লাইটের প্রথম দিকে LOS হারের পরিবর্তনের প্রতিক্রিয়া জানাবে। যদি আপনার আসন্ন রকেট সিমুলেশন মডেলটি কিছুটা বাস্তবসম্মত হয় তবে অতিরিক্ত নেভিগেশন ধ্রুবকটি আপনার ক্ষেপণাস্ত্রের বায়ুবিদ্যুতের ক্ষমতা বাড়িয়ে তুলতে পারে, সুতরাং আপনার পরীক্ষা এবং ত্রুটির উপর ভিত্তি করে ভারসাম্যপূর্ণ নম্বর ব্যবহার করা উচিত।


4

মার্টিন এবং নিকোলের অন্যান্য উত্তরগুলি যেমন উল্লেখ করেছে, আপনি সম্ভবত আপনার ক্ষেপণাস্ত্রকে সরাসরি লক্ষ্যবস্তুতে নয়, বরং এমন একটি উপায়ে নির্দেশ করতে চান যা পরবর্তী সময়ে লক্ষ্যটির সাথে সংঘর্ষে পরিণত হয়। তবে মার্টিন বর্ণিত পদ্ধতিটি জটিল এবং নিকোল বর্ণিত পদ্ধতিটি অদক্ষ।

একটি মিসাইলকে গাইড করার সহজ উপায় - তবে এখনও বেশ দক্ষ - ক্ষেপণাস্ত্র এবং লক্ষ্যটির মধ্যে কোণ পরিবর্তন অনুসারে এর কোণটি সামঞ্জস্য করা। প্রতিটি টিকের উপরে আপনি ক্ষেপণাস্ত্র থেকে লক্ষ্য পর্যন্ত কোণটি গণনা করুন এবং এটি আগের টিকের কোণের সাথে তুলনা করুন। পার্থক্য হ'ল ক্ষেপণাস্ত্রের কোণে আপনি যে সঠিক পার্থক্য তৈরি করতে চান তা। সুতরাং যদি কোণটি একটি টিকের মধ্যে 0.77 এবং পরের দিকে 0.75 হয়, আপনি ক্ষেপণাস্ত্রের কোণটি -0.02 দ্বারা সামঞ্জস্য করতে চান। এই পদ্ধতিটি সহজ, এবং যতক্ষণ পর্যন্ত লক্ষ্যটি ক্ষেপণাস্ত্রের "সামনে" থাকে, ততক্ষণ পর্যন্ত এটি বেছে নেওয়া রুটের ক্ষেত্রে অত্যন্ত দক্ষ। এটি কেবলমাত্র 2 ডি-তে নয়, যে কোনও পরিমাণের জন্য প্রযোজ্য।

মনে রাখবেন, যদিও:

  • ক্ষেপণাস্ত্র এবং লক্ষ্যটি একই গতিতে এবং সমান্তরালে ভ্রমণ করলে এই পদ্ধতিটি ভেঙে যায়। ভাল এটি এখনও তাত্ত্বিকভাবে ক্ষেপণাস্ত্রটির জন্য একটি সংঘর্ষের কোষ তৈরি করেছে, এটি অসীম সময় নেয় :) অনুশীলনে মিসাইলটি সবসময় লক্ষ্যের চেয়ে দ্রুত হওয়া উচিত, তবে যদি তাদের অভিন্ন গতি থাকে তবে এটি সমান্তরাল কিনা তা চিহ্নিত করার জন্য আপনাকে একটি কোণার কেস যুক্ত করতে হবে ।

  • লক্ষ্য এবং ক্ষেপণাস্ত্রগুলি একই একই লাইনে তবে বিপরীত দিকগুলিতে উড়তে থাকলে পদ্ধতিটি ভেঙে যায়। সত্যিকারের বিশ্বে এটি সত্যিই ঘটতে পারে না তবে এটি একটি বিচ্ছিন্ন খেলায় খুব বেশি অস্বাভাবিক নয়। এটি পরীক্ষা করার জন্য আপনাকে উপরের অ্যালগরিদমে একটি কর্নার কেস যুক্ত করতে হবে।

  • যদি আপনার ক্ষেপণাস্ত্রের সীমাবদ্ধ বাঁকানোর ক্ষমতা থাকে তবে প্রতিবার যত বেশি ঘুরিয়ে নেওয়ার প্রয়োজন হয় কেবল সর্বাধিক ঘুরিয়ে ফেলুন। যতক্ষণ ক্ষেপণাস্ত্র যথেষ্ট পরিমাণে এটি এখনও কাজ করবে। এটি খুব কাছাকাছি থাকলে শেষ বুলেটটি দেখুন।

  • সংঘর্ষের চেক করার সময় লেন্সেন্ট হওয়ার কথা মনে রাখবেন। বাস্তব বিশ্বে অনেক ক্ষেপণাস্ত্রগুলি "কিল জোন" তৈরি করতে তাদের যুদ্ধের মাথায় ভরসা করে, তাই কেবলমাত্র লক্ষ্যটির কাছাকাছি পৌঁছানো দরকার, আসলে এটির সাথে সংঘর্ষ নয়।

  • অবশেষে, অনুশীলনে মিসাইলটি এখনও মিস করতে পারে , যা আমাদের আপনার মূল প্রশ্নে ফিরে আসে। আমি মনে করি একটি ভাল উপায় হ'ল কিছু টিকের জন্য হোমিংকে অক্ষম করা, এটি কিছুটা দূরত্ব অর্জন করতে দেওয়া, এবং তারপরে আবার এটিকে হোমিং করা। আমি মনে করি মৃত অঞ্চলগুলি সনাক্ত করতে fxiii দ্বারা প্রস্তাবিত পদ্ধতিটি আপনার কখন হোমিং বন্ধ করার দরকার তা সনাক্ত করার একটি দুর্দান্ত উপায়।


1

আমি অতীতে কাজ করা গেমগুলির জন্য বেশ কয়েকটি সহজ বিকল্প যা 'যথেষ্ট ভাল' বলে প্রমাণিত হয়েছে:

1) আপনি যে দৃশ্যের দিকে তাকিয়েছেন তার সমাধান যদি এটির অনুমতি দেয় তবে লক্ষ্যটির নিকটে থাকা অবস্থায় বস্তুটি বিস্ফোরিত হতে পারে (যা আমি বিশ্বাস করি যে বেশিরভাগ সাধারণ দিনের হোমিং মিসাইলগুলি আসলে যে কোনও ক্ষেত্রেই কাজ করে)। যদি আপনার প্রদক্ষিণের পরিসরটি বস্তুর আকারের প্রায় দ্বিগুণ হয় তবে এটি সম্ভবত আপনার পক্ষে কাজ করবে না কারণ এটি দেখতে খারাপ দেখাবে।

যদি আপনার সমাধানে আপনার শেষ লক্ষ্যটি কেবল আপনার ক্ষেপণাস্ত্রটি লক্ষ্যবস্তুতে চলে আসে তা নিশ্চিত করে তোলা হয়, তবে লক্ষ্যটিকে আঘাত করার জন্য আমি সবই আছি। আবার, এটি সমাধানটি কীভাবে দেখায় তার উপর নির্ভর করবে।

২) যদি আপনি দেখতে পান যে আপনার ক্ষেপণাস্ত্রটি আপনার টার্গেটের একটি সঠিক কোণে রয়েছে, তবে এটি লকটি 'ব্রেক' হয়ে যায় এবং ক্ষেপণাস্ত্রটি সরাসরি 'ক্ষেপণাস্ত্রের' সামনে না পৌঁছালে সরাসরি সরানো যায়।

আমি যখনই সম্ভব সহজ সমাধানগুলি পছন্দ করি। আপনি যদি এমন কোনও গেম তৈরি করছেন যেখানে হোমিং ক্ষেপণাস্ত্রটি ব্যবহৃত একটি অস্ত্রের মধ্যে কেবল একটি তবে আপনি সম্ভবত এগুলি থেকে দূরে সরে যেতে পারেন কারণ প্লেয়াররা সম্ভবত একটি সালভোকে গুলি করে এবং যত তাড়াতাড়ি সম্ভব তাদের ধ্রুবক ব্যস্ততার অস্ত্রগুলিতে ফিরে যেতে পারে। আপনি যদি একটি ক্ষেপণাস্ত্র সিমুলেশন তৈরি করে থাকেন তবে স্পষ্টভাবে অন্য উত্তরগুলির মধ্যে একটি হ'ল আরও ভাল পছন্দ।

আশাকরি এটা সাহায্য করবে.


0

যেমনটি বলা হয়েছে যে লক্ষ্যটি এখনই যেখানে রয়েছে তার চেয়ে আপনি যখন সেখানে পৌঁছবেন তখন লক্ষ্যটি কী হবে বলে আশা করা হচ্ছে তার জন্য আপনার ক্ষেপণাস্ত্রটি লক্ষ্য করা উচিত। এটি সর্বাধিক ক্ষেপণাস্ত্রগুলি কক্ষপথে যেতে বাধা দেবে তবে লক্ষ্যটি ঠিক সঠিকভাবে এড়ালে যদি একটি কক্ষপথ এখনও সম্ভব হয়। আগত ক্ষেপণাস্ত্রগুলিকে ছোটাছুটি করতে বিমান বিমান চালকরা এটি বৈধ কৌশল - (যদিও আপনি এখনও নিকটবর্তী বিস্ফোরণ থেকে ঝুঁকির মধ্যে পড়তে পারেন))

যেহেতু আমরা এমন একটি ক্ষেপণাস্ত্র নিয়ে কাজ করছি যা এখনও ট্র্যাক করতে পারে এবং এখনও জোর করে ফেলেছে যদি লক্ষ্য FxIII এর পোস্টের কথা বলে যে কোনও একটি অঞ্চলে adesুকে পড়ে তবে আপনি একটি কক্ষপথ পরিস্থিতি পেতে পারেন।

তবে আমি তার সমস্যার সমাধানের সাথে একমত নই। পরিবর্তে, আমি মিসাইলগুলি এভাবেই প্রোগ্রাম করব:

ক্ষেপণাস্ত্রটি যদি আপনি কক্ষপথে থাকেন তবে 360 ডিগ্রি গতিবেগের জন্য এটি 90 গিগাবাইট গতিবেগের দিকে রেখেছে। গতির রেখা থেকে থ্রাস্টটি 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 (a, b) ফাংশনটি a / b এর বিপরীতমুখী টানটি গণনা করে তবে কোণগুলি একটি বৃত্তের সঠিক কোয়াড্রেন্টে বসার বিষয়টি নিশ্চিত করে, যার জন্য a এবং b উভয়ের চিহ্ন জানতে হবে।

আমার ক্ষেত্রে, একবার আমার ত্বরণ হওয়ার পরে আমি গতিটি আপডেট করার জন্য এটি প্রয়োগ করি

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)

আমি কোনও খেলোয়াড় নির্ভর সর্বাধিক গতির বিপরীতে নতুন গতিটিও পরীক্ষা করে দেখি এবং এটি এটি ক্যাপ করি। একটি ক্ষেপণাস্ত্র, গাড়ি বা সর্বাধিক টার্নিং রেট (টিকের প্রতি ডিগ্রীতে) সহ কোনও কিছুর ক্ষেত্রে আপনি কেবল গণনা করা আদর্শের তুলনায় গতির বর্তমান কোণটি দেখতে পারেন এবং যদি এই পরিবর্তনটি অনুমোদিতের চেয়ে বেশি হয় তবে কেবল কোণ হিসাবে পরিবর্তন করুন যতটা সম্ভব আদর্শের দিকে।

এটির উত্পন্নকরণে আগ্রহী যে কোনও ব্যক্তির জন্য, আমি টাইমস্টেপের পরে প্লেয়ার এবং লক্ষ্যের মধ্যে দূরত্ব লিখেছিলাম, প্রাথমিক অবস্থান, গতি, ত্বরণ হার এবং ত্বরণ কোণের দিক দিয়ে, তারপর ত্বরণের কোণটির সাথে সম্মতি নিয়ে ডেরাইভেটিভ নিয়েছি। এটি শূন্যে সেট করা ত্বরণের কোণের একটি কার্য হিসাবে টাইমস্টেপের পরে প্লেয়ার-লক্ষ্য দূরত্বের মিনিমা খুঁজে পায়, যা আমরা জানতে চাই। মজার বিষয় হল, ত্বরণের হারটি মূলত সমীকরণগুলিতে থাকলেও, আপনি প্রকৃতপক্ষে কতটা ত্বরণ করতে সক্ষম তার থেকে এটি সর্বোত্তম দিকটিকে স্বাধীন করে তোলা বাতিল করে দেয়।


কিছু পরিস্থিতিতে আমি প্রায় সরাসরি বেগ নির্ধারণের পরামর্শ দিয়েছিলাম - যদিও এটি বেশিরভাগ বলের উপর নির্ভরশীল পদার্থবিজ্ঞানের সাথে একীকরণ করা কঠিন হতে পারে। যদি এটি এমন একটি খেলা হয় যেখানে ক্ষেপণাস্ত্রগুলি নিয়মিত চালিত হয়, "ডডজিং" একটি উল্লেখযোগ্য গেম মেকানিক না হয়ে থাকে তবে আপনি পদার্থবিজ্ঞানের পথে যাওয়ার ক্ষুদ্র ঝুঁকি এড়াতে চাইতে পারেন, এবং কেবল নিশ্চিত করুন যে এই মেকানিকটি খেলোয়াড়ের প্রত্যাশা মতো কাজ করে প্রতিবার। এটি স্পেস অ্যাকশন গেমের চেয়ে আরটিএসে আরও বেশি অর্থবহ হতে পারে।
কাতানা 314

0

আপনি একটি স্থির টার্ন রেট ব্যবহার করছেন। ঠিক এটিই পুরোপুরি সুন্দর পুরোপুরি কক্ষপথ তৈরি করছে।

গাইডেন্স সিস্টেমের জন্য আরও বাস্তবসম্মত দৃষ্টিভঙ্গি হ'ল বিপরীত লক্ষ্যমাত্রার দূরত্ব (কম দূরত্ব -> আরও টার্ন রেট) সহ টার্নের হারের পরিবর্তিত হয়। এটি কক্ষপথের পরিবর্তে একটি সর্পিল দেবে এবং ধীর লক্ষ্যের সাথে সংঘর্ষের গ্যারান্টি দেবে।

এটি আরও অনেক বেশি বাস্তবসম্মত বিমানের পথ দেয়। ধ্রুবক টার্ন রেট অপ্রাকৃতভাবে নিখুঁত। টার্বুলেন্স অনুকরণের জন্য আপনি টার্ন রেটে এলোমেলো প্রকরণও যুক্ত করতে পারেন। আবারও অনেক বেশি বাস্তববাদী এবং প্রকৃতপক্ষে স্থির-রাষ্ট্রের প্রদক্ষিণের পরিস্থিতি এড়াতে পারে।

আংশিক সমীকরণের দরকার নেই।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.