কিভাবে একটি ক্ষেপণাস্ত্র ঘুরে শিরোনাম গণনা?


14

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

সম্পাদনা

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

ক্ষেপণাস্ত্রটি চালু হওয়ার পরে মানচিত্রটি এই লাইনটিতে ক্ষেপণাস্ত্র ট্র্যাকিংকে তার বিমানের পথের ইঙ্গিত হিসাবে দেখায়।

আমি যা করছি তা সিমুলেটরটিতে কাজ করছে যা অপারেশনাল সফ্টওয়্যারটির নকল করে। সুতরাং মিসাইলটি চালুর অনুমতি দেওয়ার আগে আমার গণনা করা বিমানের পথ আঁকতে হবে।

দুটি লক্ষ্যবস্তু লক্ষ্য করে দুটি মিসাইল

এই উদাহরণে লক্ষ্যগুলি লঞ্চ গাড়ির পিছনে রয়েছে তবে পূর্বনির্ধারিত পথগুলি টানা হয়।


1
শিরোনামটি পূর্বনির্ধারিত বা ট্রাজেক্টোরির সময় এটি পরিবর্তন হয়? (একটি হোমিং মিসাইলের মতো?)
জোনাথন কনেল

1
(X2-x1) ^ 2 + (y2-y1) ^ 2 = r ^ 2, যেখানে (x1, y1) বর্তমান ক্ষেপণাস্ত্রের অবস্থান এবং (x2, y2) লক্ষ্যবস্তু হলে তা কী হবে না?
কমিউনিস্ট হাঁস

আপনি যা চান সেটি আঁকতে হবে।
aaaaaaaaaaaa

3
এটি কি 2 ডি বা 3 ডি সমস্যা?
স্টিভ এইচ

আপনি যদি কোনও হোমিং-মিসাইলের মতো কিছু খুঁজছেন তবে আপনি কোনও ত্রিকোণমিতি ব্যবহার না করে এটি করতে পারেন। এই প্রশ্নটি
ব্লুরাজা - ড্যানি ফ্লুঘুফুট

উত্তর:


9

আমার গণিতটি কিছুটা ভুল হতে পারে, তাই আমি উত্তরটি উইকেড করেছি।

আমি ধরে নিয়েছি যে আপনি নিয়মিতভাবে হোমিংয়ের দৃশ্যটি করতে চান - যেখানে মিসাইল P1 একটি বেগ V1 এ ভ্রমণ করে ক্রমাগত প্লেয়ার P2 এর দিকে যাওয়ার চেষ্টা করে; তবে সীমিত টার্নিং হারে।

  1. প্লেয়ার এবং ক্ষেপণাস্ত্রের মধ্যে ভেক্টর নির্ধারণ করুন।

    V2 = P2 - P1
  2. তাদের ইউনিট ভেক্টরগুলিতে পরিণত করুন।

    V3 = UNIT(V1)
    V4 = UNIT(V2)
  3. ভেক্টরগুলির মধ্যে কোণ নির্ধারণ করুন।

    a = ARCCOS(V3 * V4) (* indicating dot product)
  4. তাদের মধ্যে कोणের মান সীমাবদ্ধ করুন (আপনার ট্রিগ ফাংশনগুলি সম্ভবত রেডিয়ানগুলির সাথে কাজ করে মনে রাখুন, সুতরাং টার্নিং হার হিসাবে 0.1 চেষ্টা করুন)।

    a = SIGN(a) * MINIMUM(ABS(a), MaximumTurningRate)
  5. নতুন মুভমেন্ট ভেক্টর তৈরি করুন।

    V1 = UNIT(V3.x + SIN(a), V4.y + COS(a)) * MissileSpeed

সম্পাদনা: এটির কোনও 'প্রারম্ভিক বিন্দু' নেই কারণ এটি নিয়মিতভাবে আসন্ন দৃশ্যের জন্য আরও দৃust় (এবং একটি সহজ বাস্তবায়ন)। আপনাকে একটি বৃত্তের জন্য কোনও প্রারম্ভিক বিন্দু খুঁজে বের করতে হবে না - কেবল ক্ষেপণাস্ত্রটির দিক পরিবর্তন করতে পারে এমন হারকে সীমাবদ্ধ করুন এবং বাকীটি মেশিনের ভূতের কারণে ঘটে happens


1
মিম ... স্মৃতি যদি পরিবেশন করে তবে আমি মনে করি যে কোণটির দিকনির্দেশ পেতে আপনার ক্রস-পণ্য করা উচিত। আপনি যদি কেবল একটি বিন্দু পণ্য করেন তবে আপনি কোণটির মাত্রা জানেন তবে দিকটি নয় (যেহেতু বিন্দু পণ্যগুলিতে ভি 3 * ভি 4 = ভি 4 * ভি 3 থাকতে পারে, মনে হয় ওরিয়েন্টেশনে পার্থক্য লক্ষ করার কোনও উপায় নেই)। সুতরাং, বিন্দু পণ্যটি করুন এবং তারপরে ক্রস প্রোডাক্টটি করুন - জেড কোঅর্ডিনেটের চিহ্নটি পরীক্ষা করে - অভিযোজনটি সন্ধান করুন।
ক্রিসই

@ ক্রিসি উদাহরণটি 2 ডি-তে রয়েছে (5 দেখছে), সুতরাং মূল ওরিয়েন্টেশন এবং কোণ প্রস্থটি যথেষ্ট হওয়া উচিত।
কেবলব্রক্স

মধ্যবর্তী কোণটি গণনা করা সঠিক, তবে আমি নিশ্চিত নই যে আপনার পদক্ষেপ 5 এর সাথে বর্ণিত উদ্দেশ্যটি কী বা এটি কী উত্পাদন করে। 5 ম পদক্ষেপটি মনে করুন যে v3 এ কোণ যুক্ত করুন কারণ আমি গণিতটি বুঝতে পারি না।
dlots

@ ডলটস পদক্ষেপ 5 বর্তমান চলমান ভেক্টরে নতুন 'সীমিত টার্ন রেট এঙ্গেল' যুক্ত করার কথা রয়েছে - মূলত এটি ক্ষেপণাস্ত্রটির দিক পরিবর্তন করে।
জোনাথন ডিকিনসন


2

আমি ধরে নিলাম আপনি লক্ষ্য শিরোনামে প্রবর্তন শিরোনাম পরিবর্তন করে দিক পরিবর্তন করতে চান তবে সরাসরি লক্ষ্যটিতে চালিয়ে যান (বাঁকানোর সময় লক্ষ্যটিকে আঘাত করা আরও মজাদার সমস্যা হওয়া উচিত!)।

আমাকে ধরে নিতে হবে যে আপনি একই দিকের ব্যাসার্ধটি সমস্ত দিকে ঘুরিয়ে নিতে সক্ষম হয়েছেন (এটি এমন একটি সরলীকরণ যা বাস্তব ক্ষেপণাস্ত্রগুলিতে দেখা শক্ত)।

সবচেয়ে সহজ সমাধানটি 90 ° নমনটি ব্যবহার করা : ক্ষেপণাস্ত্রের ফাইলগুলি যতক্ষণ না তার ট্রাজেক্টোরি লক্ষ্য সহ একটি সঠিক কোণ তৈরি করে। আপনি যদি 90 ° পয়েন্টে হুবহু ঘুরিয়ে নেন তবে টার্নের ব্যাসার্ধের মাধ্যমে আপনি লক্ষ্যটি হারাবেন ঠিক কারণ আপনি নিজেই টার্নিংয়ের বিষয়টি বিবেচনা করতে হবে। সমাধানটি হ'ল 90 ° পয়েন্টে পৌঁছানোর আগে ঠিক "টার্ন ব্যাসার্ধ" মিটার (?) ঘুরতে শুরু করা, তারপরে সরাসরি আপনার টার্গেটে যাওয়ার জন্য 90 (° অনুমান করার চেষ্টা করুন) গঠন করা।

এই সমাধানটি সবসময় সম্ভব হয় না, উদাহরণস্বরূপ যখন আপনি 90 ° পাথ (বিল্ডিং বা অন্যান্য বাধা) তে দৃশ্যমানতা না পান।

সুসংবাদটি হ'ল সমাধানটি প্রতিটি কোণে কাজ করে (কেবলমাত্র পৌরাণিক 90 not নয়) কৌশলটি হ'ল আগে ঘুরিয়ে ঘুরিয়ে দেওয়ার জন্য প্রয়োজনীয় স্থানটি বিবেচনা করা।

এর আগে কত? এই কারণেই 90 ° স্টাফ হ'ল সহজ সমাধান ...

ধরা যাক যে আপনি দৃশ্যমানতা বা সর্বোত্তম লক্ষ্য শিরোনামে পৌঁছেছেন যখন ফায়ারিং পাথটি angle of এর একটি কোণ গঠন করে, তখন আপনার ঘুরিটিটি অনুমান করা উচিত:

(sec(90° - θ°) + tan(90° - θ°)) * turning_radius

... যেখানে সেকান্ট কোজিনের পারস্পরিক কাজ। প্রমাণটি তুচ্ছ এবং পাঠকের কাছে রেখে দেওয়া হয়েছে।

গুরুতরভাবে, সূত্রটি একটি সাধারণ জ্যামিতিক নির্মাণ থেকে আসে।

টার্নিং পয়েন্ট গ্রাফ

ব্ল্যাক লাইনটি ফায়ারিং পাথ, যখন পাতলা কালো রেখাটি একই পথটি টার্নিং_রেডিয়াস ইউনিটগুলি লক্ষ্যবস্তুর দিকে নিয়ে গেছে; লক্ষ্যগুলি হ'ল লালগুলির জন্য একই।

সবুজ বিভাগগুলি দৈর্ঘ্যে বাঁকানো_প্রাণিক হয় যাতে আপনার এটি দেখতে পাওয়া উচিত:

এবি হ'ল 90 ° - θ ° এর স্পর্শক °

বিসি হলেন সেকেন্ড।

টার্নিং পয়েন্ট থেকে আসা সবুজ রেখা উভয়ই দৈর্ঘ্যে বাঁকানো_প্রাণ এবং দুটি পথের জন্য লম্ব হয়; মানে টার্নিংয়ের ব্যাসার্ধটি সঠিক এবং চাপটি উভয় পথেই স্পর্শকাতর (যেমনটি আপনি শারীরিক প্রতিবন্ধকতার অধীনে ঘুরিয়ে নিলে হওয়া উচিত)।

আপনি যদি কিছু ত্রুটি দেখতে পান তবে আমাকে জানান।

সম্পাদনা করুন:

আপনার পোস্ট করা অঙ্কনটি দেখায় যে স্থির শ্যুটার এবং টার্গেট সহ পথের জন্য একাধিক পছন্দ রয়েছে আপনি এখানে দেখতে পাচ্ছেন:

এখানে চিত্র বর্ণনা লিখুন

একবার লক্ষ্যটি চয়ন করা গেলে আপনি উপরে যা বলেছিলাম তা সঠিক কোণগুলির সাথে প্রয়োগ করতে পারেন।


দয়া করে মনে রাখবেন যে এটি একটি নিয়মিত আপডেটিং সিস্টেম নয়। যেহেতু হোমিংয়ের আরও সিপিইউ প্রয়োজন (প্রচুর), তাই এটি নির্দিষ্ট লক্ষ্যগুলির জন্য সঠিক পদ্ধতির বিবেচনা করা উচিত বা যদি কেউ "আধা-বোবা" ক্ষেপণাস্ত্র অবশ্যই প্রয়োগ করতে চায় hant ট্র্যাজেক্টোরিটি 3 টি উপপথের মধ্যে টি বিভাজন করে কেবল প্যারামিট্রাইজ করা যায় এবং চাপটি বেজিয়ার বক্ররেখা দ্বারা প্রায় অনুমান করা যায়।
FxIII

1

আমি মিসাইলটির জন্য "স্টিয়ারিং আচরণ" বাস্তবায়ন করব। ক্ষেপণাস্ত্রটিতে রয়েছে: একটি বেগ (একটি সংখ্যা), একটি অবস্থান (একটি ভেক্টর) এবং একটি (বর্তমান) ঘূর্ণন। আপনার গেমের প্রতিটি আপডেটে / প্রতিটি ফ্রেমে, ক্ষেপণাস্ত্রের ঘূর্ণনটি কিছুটা পরিবর্তিত হয় (লক্ষ্যটির দিকে)। তারপরে ক্ষেপণাস্ত্রটি তার বর্তমান ঘূর্ণন এবং বর্তমান গতি অনুসারে এগিয়ে চলেছে।

স্পষ্টতই 2D এবং 3D এর জন্য কাজ করে, কারণ পার্থক্য কেবলমাত্র একটি অতিরিক্ত মাত্রা।

আর একটি সম্ভাবনা হ'ল ক্ষেপণাস্ত্রটি জ্বালানোর আগে তার পথ গণনা করা। দেখুন বেজিয়ে রেখাচিত্র বা স্প্লাইন


এখানে একটি স্প্লাইন ব্যবহার করে সমস্যাটি হ'ল লক্ষ্যটি চলে গেলে আপনার নিয়মিত নিয়ন্ত্রণ পয়েন্টগুলি আপডেট করতে হবে। এখানে একটি সাধারণ স্টিয়ারিং আলগো গণনাগতভাবে সস্তা হতে পারে।
ক্রিসই

প্রকৃতপক্ষে আমি লক্ষ্যের পথে প্রাক্কুলেট করার চেষ্টা করছি। আমি যা কাজ করছি তা হ'ল কিছু বাস্তব সরঞ্জামের জন্য একটি সিমুলেটর এবং আমি প্রকৃত সরঞ্জামগুলির আচরণ অনুকরণ করার চেষ্টা করছি।
টনি

0

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


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

0

আমি মনে করি সহজ অ্যালগরিদম কেবল দুটি নিয়ম অনুসরণ করবে:

  1. যদি বর্তমান লক্ষ্যটি টার্নিং ব্যাসের চেয়ে মিসাইলের আরও কাছাকাছি থাকে তবে সোজা হয়ে যেতে থাকুন going এটি ক্ষেপণাস্ত্রগুলি আসলে তাদের কাছে না গিয়ে কাছের লক্ষ্যগুলি প্রদক্ষিণ করে এড়িয়ে যায়।

  2. অন্যথায় আপনি লক্ষ্য না করা অবধি লক্ষ্যটির দিকে ঘুরুন।

পয়েন্টটি যেখানে 2D তে শেষ হয় তা গণনা করতে:

  1. আপনি যেদিকে বাঁক দেওয়া শুরু করতে চান সেখানে মোড় ঘুরিয়ে দেওয়ার কেন্দ্রটি আপনার বাঁক ব্যাসার্ধের একটি দূরত্বে বর্তমান শিরোনামের লম্ব একদিকে অবস্থিত। মনে রাখবেন যে এই দুটি পয়েন্টের মধ্যে দুটি রয়েছে - আপনি সম্ভবত আপনার টার্গেটের সবচেয়ে কাছের একটিটি চান। সেই অবস্থানটি গণনা করুন এবং এটিকে পি কল করুন।

  2. আপনি এখন স্পর্শকালে ডান কোণ দিয়ে একটি সমকোণী ত্রিভুজ এবং দুটি পরিচিত পয়েন্ট - পি এবং আপনার গন্তব্য তৈরি করতে পারেন। এটি আপনাকে পাইথাগোরাসের সাথে স্পর্শকাতর থেকে আপনার টার্গেট পয়েন্টের দূরত্বটি গণনা করতে দেয়। একে ডি বলুন।

  3. এখন আপনার বাঁক ঘুরিয়ে আপনার গন্তব্যস্থলে ব্যাসার্ধ D এর বৃত্তের ছেদটি গণনা করতে হবে । আপনি দুটি সমাধান পাবেন যা সেই বৃত্তের দুটি স্পর্শক পয়েন্ট যেখানে ক্ষেপণাস্ত্রটি ঘুরিয়ে দেওয়া বন্ধ করবে (চক্রের চারদিকে ভ্রমণের প্রতিটি দিকের জন্য একটি)। ক্ষেপণাস্ত্রের সামনের পয়েন্টটি বেছে নিন - এটি আপনার উত্তর।

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