প্যারাবোলিক আর্কে লক্ষ্য হিট করার জন্য প্রক্ষেপণের নূন্যতম বেগ গণনা করা হচ্ছে


20

আমার যদি এমন একটি পয়েন্ট থাকে যা আমি শেষের দিকে বা প্যারাবোলিক আরকের সময় হিট করতে চাই, তবে আমি কীভাবে প্রয়োজনীয় x এবং y বেগ গণনা করব?


উত্তর:


15

প্যারাবোলিক ট্রাইেক্টরি ফাংশনটি হিসাবে সংজ্ঞায়িত করা হয়:

   Fx = Vox*t + Ox;
   Fy = -0.5 * g * t * t + Voy*t + Oy;      
  • জ্ঞাত মান:

    P: the target point.
    O: the origin point.
    g: gravity.
    t: time needed to impact.
  • অজানা মান:

    Vo: Initial Velocity
  • 'ভিও' গণনা করার জন্য, আমরা F ফাংশনকে মান দিতে পারি:

    't' = flight time  'duration' 
    'F' = target point 'P'        
    
          (Px-Ox)
    Vox = --------
          duration
    
          Py + 0.5* g * duration * duration - Oy 
    Voy = ---------------------------------------
                     duration
  • উত্স থেকে এফ সমীকরণকে মান দেওয়ার জন্য আপনি এখন সমস্ত মান অর্জন করতে পারেন:

     When t = 0         => F == O (Origin)
     When t = duration  => F == P (Target)      

দুর্দান্ত উত্তর শুধু বুঝতে পারি যে জি স্বাক্ষরিত নয়। জি বৃদ্ধি হিসাবে, ভয়ে এছাড়াও বৃদ্ধি করা উচিত।
দুধপ্লাস

টি (প্রভাবিত করার জন্য সময় প্রয়োজন) কীভাবে জানা যায়?
দেওয়াল্ড স্বানিপল

13

আমাকে সম্প্রতি একটি অনুরূপ সমস্যা সমাধান করতে হয়েছিল, আমি ইতিমধ্যে উল্লিখিত উইকিপিডিয়া পৃষ্ঠায় 'ড্যান দ্য ম্যান'-এর সূত্রের ভিত্তিতে দুটি সমাধান নিয়ে এসেছি: একটি প্রক্ষিপ্তের ট্রাজেক্টোরি

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

সমাধান 1, প্রবর্তন কোণ স্থির হয়েছে, বেগ গণনা করুন:

g = 9.81; // gravity
x = 49; // target x
y = 0; // target y
o = 45; // launch angle
v = (sqrt(g) * sqrt(x) * sqrt((tan(o)*tan(o))+1)) / sqrt(2 * tan(o) - (2 * g * y) / x); // velocity

সমাধান 2, বেগ স্থির হয়েছে, প্রবর্তন কোণ গণনা করুন:

g = 9.81; // gravity
v = 40; // velocity
x = 42; // target x
y = 0; // target y
s = (v * v * v * v) - g * (g * (x * x) + 2 * y * (v * v)); //substitution
o = atan(((v * v) + sqrt(s)) / (g * x)); // launch angle

আমার ক্ষেত্রে এই সমাধানগুলি বেশ ভালভাবে কাজ করেছে।


2

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

আপনি এটির জন্য একটি সাইন ওয়েভ ব্যবহার করতে পারেন, -90 থেকে +90 (যেখানে -90 লাইন বিভাগের বাম পয়েন্ট, 90 ডান পয়েন্ট, এবং আপনি মাঝখানে লিরপ করুন) ব্যবহার করে, এবং ফলাফলটি গুণান একটি ধ্রুবক দ্বারা এটি স্কেল।

আপনার যদি খাঁটি সঠিক গাণিতিক / শারীরিক উত্তরের প্রয়োজন হয় তবে এটি কোনও লাভ করবে না। আপনি যদি না করেন তবে এটি সম্ভবত আপনার পক্ষে বেশ ভালভাবে কাজ করতে পারে!

ভুলে যাবেন না, গেম প্রোগ্রামিং হ'ল বাস্তববাদের পরিবর্তে সঠিক (এবং গণনা করার জন্য সস্তা) মায়াবোধ ব্যবহার করা using


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

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

আসলে আপনি যদি সাইন ওয়েভ ব্যবহার করতে চলেছেন তবে এটি 0 থেকে 180 (বা রেডিয়ায় 0 থেকে পাই) হওয়া উচিত
ড্যানিয়েল

2

আপনার যদি ঠিক এমন কিছু প্রয়োজন হয় যা ঠিক ঠিক হয় এবং একটি নির্দিষ্ট বেগ থাকে তবে আপনি এই খুব সরলিকৃত পদ্ধতিটি ব্যবহার করতে পারেন।

distance = to.x - from.x;
angleToPoint = atan2(to.y - from.y, to.x - from.x);
distanceFactor = 1/1000;
angleCorrection = (PI*0.18) * (distance * distanceFactor);
velocity.X = cos(angleToPoint+angleCorrection) * power;
velocity.Y = sin(angleToPoint+angleCorrection) * power;

দূরত্ব নেতিবাচক হতে পারে তবে এটি এখনও কাজ করবে কারণ কোণটি দূরত্বের উপরও নির্ভর করে। দূরত্বটি যদি negativeণাত্মক হয় তবে যে কোণটি যুক্ত করতে হবে তা negativeণাত্মক।

সঠিক মানটি খুঁজে পেতে আপনার দূরত্ব ফ্যাক্টরের সাথে চারপাশে খেলতে হবে। এটি অনুমানের মাধ্যাকর্ষণ এবং শক্তির উপর নির্ভর করে। এটি প্রজেক্টিলটি আবশ্যক সর্বোচ্চ দূরত্বে 1 টির কাছাকাছি হওয়া উচিত।


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