আমি কীভাবে একটি প্রক্ষিপ্ত প্রবর্তনের কোণটি খুঁজে পেতে পারি?


9

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

সংক্ষেপে আমি v0, R এবং g জানি এবং আমাকে কোণ (বা উচ্চতা?) সন্ধান করতে হবে।

আমি http://en.wikedia.org/wiki/Projectil_motion পড়েছি , তবে আমার যা প্রয়োজন তার সাথে সম্পর্কিত কিছু খুঁজে পাচ্ছি না।


এটি নির্ভর করে যদি আপনি বাস্তববাদী ব্যালিস্টিক বক্ররেখার সাথে লেগে থাকতে চান বা একটি পার্বোবোলার যথেষ্ট ভাল।
এবি।

আপনি কি বায়ু অন্তর্ভুক্ত করতে চান? নাকি অন্য কোনও অনুভূমিক ত্বরণ? (এটি অবশ্যই গণিতকে শক্ত করে তোলে)
শেঠ ব্যাটিন


আমি একটি বাস্তববাদী প্রক্ষিপ্ত গতি অর্জন করতে চাই এবং এতে কোনও বাতাস জড়িত নেই।
korn3l

উত্তর:


11

কোণটি খুঁজে পাওয়ার সূত্রটি

সূত্র

যেখানে v প্রাথমিক প্রবর্তনের গতি, জি মাধ্যাকর্ষণ ধ্রুবক, x এবং y হ'ল লক্ষ্যটির দূরত্ব এবং উচ্চতা।

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

আপনি বিভিন্ন লক্ষ্য মান এবং একটি ধ্রুবক প্রবর্তন বেগ সহ নীচে এই সমীকরণের একটি জিআইএফ দেখতে পারেন।

সূত্রটি অ্যানিমেটেড জিআইএফ হিসাবে আঁকিয়েছে

এই উইকিপিডিয়া নিবন্ধ থেকে সংস্থান


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

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

@ স্টেফেনটিয়ার্নি উত্তরের জন্য আপনাকে ধন্যবাদ। এই আমি খুঁজছিলাম ছিল।
korn3l

এই সমস্যার অনেক সহজ সমাধান খুঁজে পেলেন
স্টিফেন টের্নি

2

এই বছরের শুরুতে আমি একটি সাধারণ শীর্ষ ডাউন শ্যুটার তৈরি করেছি created আমি নিম্নলিখিত পদ্ধতিটি ব্যবহার করেছি:

পূর্বের উত্তর: /programming/15364852/move-sprite-diagonally/15365570#15365570

public static class Helper_Direction
{

    // Rotates one object to face another object (or position)
    public static double FaceObject(Vector2 position, Vector2 target)
    {
        return (Math.Atan2(position.Y - target.Y, position.X - target.X) * (180 / Math.PI));
    }

    // Creates a Vector2 to use when moving object from position to a target, with a given speed
    public static Vector2 MoveTowards(Vector2 position, Vector2 target, float speed)
    {
        double direction = (float)(Math.Atan2(target.Y - position.Y, target.X - position.X) * 180 / Math.PI);

        Vector2 move = new Vector2(0, 0);

        move.X = (float)Math.Cos(direction * Math.PI/180) * speed;
        move.Y = (float)Math.Sin(direction * Math.PI / 180) * speed;

        return move;
    }
}

এটি দুটি অবস্থানের মধ্যে একটি ট্রাজেক্টরি গণনা করে।

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