আমি কীভাবে 2 ডি ভেক্টরের লম্ব খুঁজে পেতে পারি?


20

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

আমি কীভাবে প্রদত্ত 2 ডি ভেক্টরের লম্ব ভেক্টরটি গণনা করতে পারি?

উত্তর:


41

অন্য 2 ডি ভেক্টরের 2D ভেক্টর লম্ব পেতে পেতে নতুন উপাদানটিকে উপেক্ষা করে কেবল Xএবং Yউপাদানগুলিকে সোয়াপ করুন Y। তাই { x, y }হয়ে যায় { y, -x }


10
মনে রাখবেন যে দুটি সম্ভাবনা রয়েছে এবং এটি আপনাকে বাম-হাতের লম্ব ভেক্টরটি পাবেন। (-y | x) হ'ল ডান পাশের ভেক্টর।
ট্র্যাভিসজি

1
Traditionalতিহ্যবাহী কনভেনশন দ্বারা সিসিডব্লু ঘোরানোর জন্য আপনার y অক্ষটিকে তুচ্ছ করা উচিত।
রেন্ডিগল

@ ট্র্যাভিসজি আমার মনে হয় আপনি বাম এবং ডান মিশ্রিত করেছেন? (-y, x) হ'ল বাম হাতের লম্ব ভেক্টর এবং (y, -x) আমার গণনা থেকে আরএইচএস।
পিটিউকে

12

আমার যখন প্রয়োজন হয় তখন এটি কীভাবে করা যায় আমি সবসময় ভুলে যাই তাই আমি বেশ কয়েকটি এক্সটেনশন পদ্ধতি লিখেছিলাম।

    public static Vector2 PerpendicularClockwise(this Vector2 vector2)
    {
        return new Vector2(vector2.Y, -vector2.X);
    }

    public static Vector2 PerpendicularCounterClockwise(this Vector2 vector2)
    {
        return new Vector2(-vector2.Y, vector2.X);
    }

এবং একটি ইউনিট পরীক্ষা

    [Test]
    public void Vector2_Perpendicular_Test()
    {
        var a = new Vector2(5, -10);
        var b = a.PerpendicularClockwise();
        var c = a.PerpendicularCounterClockwise();

        Assert.AreEqual(new Vector2(-10, -5), b);
        Assert.AreEqual(new Vector2(10, 5), c);
    }

লম্ব লাইন


যদি আপনার কোনও ভেক্টর থাকে (5, -10) তবে এটি চতুর্ভুজ 4 এ হবে, তাই না? তারপরে আপনি যদি এটি ঘড়ির কাঁটার দিকে ঘোরান, এটি চতুষ্কোণ 3 বা উভয় উপাদান নেতিবাচক হবে না? আপনার কাজগুলি মিশ্রিত হয়েছে?
পিটিউকে

তারা চারপাশে অন্য উপায়। লম্ব লম্বা কাউন্টারক্লকওয়াইসের (10,5) ফিরে আসা উচিত এবং লম্বক্লৌকিক দিকটি ফিরে আসা উচিত (-10, -5)।
opetroch

2
ওহ আমার .. এটা 3 বছর ধরে ভুল ছিল। যারা এটি ব্যবহার করেছে তার কাছে আমার ক্ষমা চাই। আমি এখন উত্তরটি স্থির করে দিয়েছি এবং একটি চিত্রটি এঁকেছি তা প্রমাণ করার জন্য যে এটি এটি এখন উপলব্ধি করে। এটি প্রকাশ করার জন্য @ পেট্রোক এবং পিটিউকে ধন্যবাদ Thanks দুঃখিত, এটি সংশোধন করতে এত দিন লেগেছে।
ক্র্যাফটওয়ার্কস

4

যদি (কুড়াল, আয়), তারপরে ঘড়ির কাঁটার বিপরীতে 90 ডিগ্রি দ্বারা প্রদত্ত একটি-পার্প, অর্থাৎ,(-হে, কুড়াল)

এই লিঙ্কটি দেখুন :)

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