কোনও বস্তুর লক্ষ্য স্থির করার জন্য শত্রু অবস্থানের পূর্বাভাস


13

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

গণিত, অ্যালগরিদম ইত্যাদির বিবরণ দেওয়া নিবন্ধগুলির কোনও লিঙ্ক প্রশংসা করা হবে!



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

@ ল্যারোলারো আমি আমার উত্তরে একটি গ্রাফিকাল প্রদর্শন প্রদর্শন করেছি যাতে আপনি এটি আরও ভালভাবে বুঝতে পারেন।
jmacedo

উত্তর:


5

GameDev উপর এই প্রশ্নের আর Stackoverflow উপর এই প্রশ্নের উত্তর আপনি যা খুঁজছেন সঙ্গে আপনি প্রদান করা উচিত। :)


1
ধন্যবাদ :) আমি দ্বিতীয় লিঙ্কটি থেকে কোডটি ব্যবহার করে একটি সমাধান প্রয়োগ করতে সক্ষম
হয়েছি

3

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

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

Reduce[{BPx, BPy} + t*{BVx, BVy} == {OPx, OPy} + t*OV*{Cos[OA], Sin[OA]} && t != 0 && OV != 0, {OA}]
  • {বিপিএক্স, বিপিআই blue নীল রঙের বর্তমান অবস্থান

  • {বিভিএক্স, বিভিআই blue নীল রঙের বেগ ভেক্টর

  • {OPx, OPy orange কমলা রঙের বুলেট অবস্থান

  • ওভি কমলার বুলেট বেগের ভেক্টরের আদর্শ (মোট গতি)

  • ওএ কমলা রঙের বুলেট কোণ (বেগের ভেক্টরের কোণ)

  • গুলিটি নীল রঙের আঘাতের জন্য সময় প্রয়োজন t

আমি শর্তগুলিতে t> 0 &&V> 0 লাগানোর চেষ্টা করেছি তবে গণিতিকা চিরতরে নেবে তাই আমি শুধু টি ব্যবহার করেছি! = 0 &&V! = 0 তাই আমি যে সমাধানগুলি এখানে দেব তা ঠিক যখন নীল ঠিক না থাকে কমলা হিসাবে একই অবস্থান এবং যখন কমলা এর বুলেট সত্যিই সরানো (স্থির থাকার পরিবর্তে)

আউটপুটটি বিশাল: http://freetexthost.com/xzhhpr5e2w

তবে আমরা যদি OA == _ অংশগুলি বের করি তবে আমরা এটি পাই:

http://freetexthost.com/iyrhqoymfo

ওএর যে মানগুলি রয়েছে সেগুলি হ'ল (প্রতিটি ক্ষেত্রে বৈধ হওয়ার জন্য বিভিন্ন শর্ত প্রয়োজন)।

আরও কিছু বিশ্লেষণের সাথে ওভির নেতিবাচক হতে হবে এমন সমাধানগুলি বের করে যা আমরা চাই না, আমি এটি পেয়েছি:

http://freetexthost.com/iy4wxepeb6

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

Reduce[{BPx, BPy} + t*{BVx, BVy} == {OPx, OPy} + t*OV*{Cos[OA], Sin[OA]} && t != 0 && OV != 0, {t}]

আউটপুট:

(BVy - OV Sin[OA] != 0 && BPx == (BPy BVx + BVy OPx - BVx OPy - BPy OV Cos[OA] + OPy OV Cos[OA] - OPx OV Sin[OA])/(BVy - OV Sin[OA]) && t == (-BPy + OPy)/(BVy - OV Sin[OA]) &&  BPy OV - OPy OV != 0) || 
(BVy == OV Sin[OA] && BPy == OPy && BVx - OV Cos[OA] != 0 && t == (-BPx + OPx)/(BVx - OV Cos[OA]) && BPx OV - OPx OV != 0) || 
(BVy == OV Sin[OA] && BVx == OV Cos[OA] && BPy == OPy && BPx == OPx && OV t != 0)

সুতরাং কেবলমাত্র সেই সমাধানগুলি বিবেচনা করুন যেখানে এটি যাচাই করে (আপনাকে টি == _ অংশগুলি যাচাই করার দরকার নেই They এগুলি হ'ল অন্যান্য শর্তগুলি বৈধ হলে আপনার গুলি বুলেটটিকে গাড়িতে আঘাত করার জন্য প্রয়োজনীয় সময় দেয় Notice টি নেতিবাচক মানের ফলাফল দেয়, আপনি প্রদত্ত ওএটিকে বৈধ সমাধান হিসাবে বিবেচনা করতে পারবেন না, এমনকি যদি এটি অন্যান্য শর্তগুলিও যাচাই করে (এটি কারণ আমরা টি> 0 কমিয়ে টি 0 এর পরিবর্তে ব্যবহার করেছি)।

এই সম্পর্কে /math// এ জিজ্ঞাসা করা ভাল ধারণাও হতে পারে ।

সম্পাদন করা

আমি এই প্রশ্নের জন্য কিছুটা আগ্রহ বাড়িয়েছি, তাই আমি যা কিছু ব্যাখ্যা করেছি তার গ্রাফিকাল প্রদর্শন সহ একটি মন্তব্য নোটবুক তৈরি করেছি। এটি এখানে ডাউনলোড করুন:

http://www.2shared.com/file/pXhYyhN1/towerBullet.html
বা এখানে: http://www.2shared.com/file/W01g4sST/towerBullet.html

(এটি প্রকাশিত সংস্করণ, এবং এটি দেখার জন্য আপনার কেবল গণিতের প্লেয়ার দরকার wh যা নিখরচায়। যদি আপনার কাছে গাণিতিক না থাকে তবে এই উপায়)

স্ক্রীনশট:


আমি গুণের চিহ্ন (*) দিয়ে শর্তাদি এবং সমাধানগুলি সরবরাহ করতে পারি যাতে আপনার সেগুলি আপনার প্রোগ্রামিং ভাষায় পোর্ট করা আপনার পক্ষে সহজ হয় (তারপরে আপনাকে কেবল আর্কট্যান প্রতিস্থাপন করতে হবে [...], পাপ [...], Cos [...], স্কয়ার্ট [...] এবং শেষ পর্যন্ত পাওয়ার সাইন (^)
jmacedo

হাহ, এই সমাধানটি ভুলে যাও এখন যেহেতু এই প্রশ্নটি একত্রীকরণ করা হয়েছে, আরও ভাল উত্তরগুলির জন্য প্রথম উত্তরের লিঙ্কগুলি সীম am
jmacedo
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.