কয়েকটি ভিন্ন জিনিস। প্রথমত, আমাদের সনাক্ত করতে হবে যে এটি একটি সীমাবদ্ধ সমস্যা। এটি হ'ল থ্রাস্টারগুলির অনেকগুলি বিভিন্ন সংমিশ্রণ রয়েছে যা একই দিকে ঘোরার ফলে গুলি চালাতে পারে। আমি ধরে নিচ্ছি যে আপনার পরিস্থিতিতে থ্রাস্টারদের জন্য কেবল দুটি চালু আছে, "চালু", এবং "বন্ধ", এবং সমস্ত থ্রাস্টার সমান শক্তি আউটপুট।
দ্বিতীয়ত, আপনার মডেলটিকে চোখের সামনে দেখে মনে হচ্ছে আপনার "ভর কেন্দ্র" আসলে আপনার ভর কেন্দ্র নয়। ভাগ্যক্রমে, এটি টর্কের জন্য আপনার গণনাগুলিকে প্রভাবিত করবে না। তবে এটি গণ-স্থানচ্যুতি কেন্দ্রের জন্য আপনার গণনাগুলিকে প্রভাবিত করবে। আমি নিশ্চিত নই যে আপনি যদি সেই স্তরের নির্ভুলতার বিষয়ে চিন্তা করেন তবে আপনার "ভর কেন্দ্র" কমপক্ষে ভরয়ের প্রকৃত কেন্দ্রের নিকটতম বর্গক্ষেত্র।
তৃতীয়, আপনি যদি কোনও নির্দিষ্ট থ্রাস্টার ঘূর্ণনকে কীভাবে প্রভাবিত করবেন তা গণনা করতে চান তবে আপনার এটি ঠিক আছে, যদিও আপনি একটি অযোগ্য সূত্র ব্যবহার করছেন। টর্ক হিসাবে গণনা করা যেতে পারে r x F
, যার দৈর্ঘ্য রয়েছে r*F*sin(theta)
। তবে, এই ক্ষেত্রে কোণগুলি গণনা করা একটি অদক্ষ পদ্ধতি। পরিবর্তে, আপনার সরাসরি টর্কের ক্রস-প্রোডাক্ট সংজ্ঞাটি ব্যবহার করা উচিত, কারণ আপনার উপস্থাপনাগুলি ব্যবহার করে এটি আরও সহজ হবে। আপনার সমস্ত ভেক্টরগুলির কোনও জেড উপাদান নেই বলে ক্রস প্রোডাক্টের সূত্রটি খুব সহজ করে।
আপনার গণনার ফলাফলকে কোনও পরিবর্তন না করেই আমরা কেবল আপনার কোড আপডেট করতে পারি
private function thrustTorque():Float
{
var torque = distToCOM.x*dir.y-distToCOM.y*dir.x;
return torque;
}
এটি অনেক সুন্দর (এবং দ্রুত)।
আপনি আপনার নিজের উত্তরে পরামর্শ দিচ্ছেন যে আপনার সমাধানটি হ'ল সমস্ত থ্রাস্টারকে সঠিক দিকে টর্কের সাহায্যে সরিয়ে দেওয়া। এখন, এটি আপনার জিজ্ঞাসিত প্রশ্নটির সমাধান করে। যাইহোক, আমি প্রত্যাশা করি যে লাইনের কিছু অংশে, আপনি দেখতে পাচ্ছেন যে আপনার কৌশলটি এতটা সন্তোষজনক নয়, যদি কোনও ব্যবহারকারী "ঘোরান" বোতামটি ধরে রাখেন, এবং সমস্ত থ্রাস্টার একটি ইতিবাচক টর্কে ঘোরান, সম্ভাব্যত তাদের শীর্ষে নিয়ে যান তাদের ঘোরানোর (আমি আপনার সিমুলেশনটির বিশদের স্তরের বিষয়ে নিশ্চিত নই, আপনি যদি থ্রাস্টারদের থেকে বাহিনীগুলি গণনা করেন তবে আপনি যদি কেবল দৃষ্টি দিয়ে তাদের গুলি চালিয়ে দেখান এবং তারপরে একটি ধ্রুবক ত্বরণ বা কিছু দিয়ে আপনার মডেলটি ঘোরান ither হয়) উপায়, আপনি চান থ্রাস্টাররা কমপক্ষে নির্ভুলভাবে গুলি চালাবেন)।
আপনি জাহাজের নেট ফোর্সের কোনও বিবেচনা করবেন না। আপনার যদি নির্বিচারে থ্রাস্টারের পরিমাণ থাকে তবে এটি একটি বেশ জটিল সমস্যার মধ্যে পরিণত হতে পারে। তবে, যেহেতু আমাদের থ্রাস্টারদের কেবল দুটি রাজ্য রয়েছে, তাই এটি বিশ্লেষণ করা বেশ সহজ। আমাদের লক্ষ্যটি এখানে ঠিক কী তা আমি নিশ্চিত নই, সুতরাং আমি দুটি ভিন্ন ভিন্ন ধারণা করতে পারি: প্রথমত, আমরা টর্কে আমাদের যে দিকে চাই সেদিকে রেখে, আমরা মোট শক্তিটি হ্রাস করতে চাই। দ্বিতীয়ত, আমরা মোট শক্তির সাথে টর্ক অনুপাতটি সর্বোচ্চ করতে চাই।
অন্যদিকে, যদি আপনি অতিরিক্ত "থ্রাস্টার ভলিউম" নিয়ন্ত্রণের কল্পনা করতে পারেন যা একই সাথে সমস্ত থ্রাস্টারের শক্তিকে প্রভাবিত করে , তবে আপনি এই নিয়ন্ত্রণটি সেট করতে পারেন যাতে আপনার দুটি সমাধানের মধ্যে সমান পরিমাণে টর্ক থাকে এবং আপনি দেখতে পান যে দ্বিতীয় সমাধানটি কেবল একটিতে থাকতে পারে প্রথম চেয়ে ছোট স্থানচ্যুতি। তবে, আমাদের মনে রাখা দরকার যে যদি থ্রাস্টারগুলিকে আগুন দেওয়া সম্ভব হয় যাতে আপনি কেবল ঘোরান এবং মোটেও সরান না, তবে উভয় সমাধান একই হবে the
সুতরাং, আমরা দ্বিতীয় অনুচ্ছেদের যুক্তির ভিত্তিতে দ্বিতীয় সমাধানটি নিয়ে যাচ্ছি। এখন, মোট শক্তি বিশ্লেষণ করার সময়, আমরা কেবলমাত্র লক্ষ্য করতে পারি যে ইঞ্জিনগুলি কেবলমাত্র চারটি দিক নির্দেশ করতে পারে। সুতরাং এক্স দিকের মোট শক্তিটি কেবল বাম বিয়োগফলকে ডান দিক নির্দেশক সংখ্যাটি নির্দেশকারী থ্রেস্টারের সংখ্যা এবং একইভাবে y দিকের জন্য।
এ পর্যন্ত লেখার পরে, এটিকে অপ্টিমাইজ করার জন্য আমাকে অ্যালগরিদম সম্পর্কে আরও কিছু ভাবতে হবে। আমার মনে হয় আমার বাকী পোস্টটি যেমন রয়েছে তেমন সহায়ক, তাই আমি এটি পোস্ট করছি তবে আমি এই কনফিগারেশনটি অনুকূল করার সর্বোত্তম উপায় বের করার সময় আপডেট করব (আনুমানিক উত্তর পাওয়ার কয়েকটি উপায় সম্পর্কে আমি ভেবেছিলাম, তবে তাদের কোনওটিই সঠিক নয়)।