দুটি ভেক্টরের মধ্যে একটি কোণ পেতে আমি কীভাবে বিন্দু পণ্যটি ব্যবহার করব?


16

আমি আমার গেমগুলিতে নরমালাইজড ভেক্টর ব্যবহার করতে শিখছি।

আমি শিখেছি যে দুটি ভেক্টরের মধ্যে কোণটি জানতে, আমি বিন্দু পণ্যটি ব্যবহার করতে পারি। এটি আমাকে -1 এবং 1 এর মধ্যে একটি মান দেয় যেখানে

  • 1 এর অর্থ ভেক্টরগুলি সমান্তরাল এবং একই দিকের মুখোমুখি (কোণটি 180 ডিগ্রি)।
  • -1 এর অর্থ তারা সমান্তরাল এবং বিপরীত দিকের মুখোমুখি (এখনও 180 ডিগ্রি)।
  • 0 মানে তাদের মধ্যে কোণটি 90 ডিগ্রি।

আমি জানতে চাই যে কীভাবে দুটি ভেক্টরের বিন্দু পণ্যকে ডিগ্রিগুলিতে একটি প্রকৃত কোণে রূপান্তর করা যায়। উদাহরণস্বরূপ, যদি দুটি ভেক্টরের ডট পণ্য 0.28হয় তবে 0 এবং 360 ডিগ্রির মধ্যে সংশ্লিষ্ট কোণটি কী?


1
নোট করুন যে আপনার বিন্দু পণ্যটির ব্যবহার কেবল তখনই কাজ করবে যখন প্রাথমিক ভেক্টরগুলি ইউনিট ভেক্টর হয়।
সাম হোচেভার

@ সামোহেশ্বর হ্যাঁ, আমি এটাই বোঝাতে চাইছি।
ব্যবহারকারী 3150201


1
@ user3150201 অ্যালেক্সের উত্তরটি সঠিক, তবে আপনার আদৌ কোন ডিগ্রীতেও কোণটি পাওয়া দরকার কিনা তাও আপনার বিবেচনা করা উচিত। কেবল যেখানে আমি ভাবতে পারি যেখানে এটি সত্যই প্রয়োজন তা হ'ল ইউআইতে ডিগ্রীতে কিছু প্রদর্শন করা। অন্যথায়, সম্ভবত কয়েকটি অ্যাপ্লিকেশন রয়েছে যেখানে আপনি সরাসরি সাইন এবং কোসাইন দিয়ে কাজ করতে পারেন না।
ট্র্যাভিসজি

উত্তর:


22

dot(A,B) = |A| * |B| * cos(angle)
যা পুনরায় সাজানো যেতে পারে
angle = arccos(dot(A,B) / (|A|* |B|))

এই সূত্রের সাহায্যে আপনি দুটি ভেক্টরের মধ্যে ক্ষুদ্রতম কোণটি খুঁজে পেতে পারেন, যা 0 এবং 180 ডিগ্রির মধ্যে হবে। আপনার যদি 0 থেকে 360 ডিগ্রির মধ্যে এটির প্রয়োজন হয় এই প্রশ্ন আপনাকে সহায়তা করতে পারে।


যাইহোক, একই দিকে নির্দেশ করে দুটি সমান্তরাল ভেক্টরের মধ্যবর্তী কোণটি 0 ডিগ্রি হওয়া উচিত, 180 নয়।


"1 এর জন্য, যাইহোক, একই দিকে নির্দেশ করে দুটি সমান্তরাল ভেক্টরগুলির মধ্যবর্তী কোণটি 0 ডিগ্রি হওয়া উচিত, 180 নয়। "
তারা

8

ট্র্যাভিসজির মন্তব্যে আমি কিছুটা প্রসারিত করব এবং আরও একটি উত্তর দেব, আপনার প্রশ্নের "2D" ট্যাগ রয়েছে তা ব্যবহার করে।

আপনি ডট পণ্যটি ব্যবহার করে দুটি ভেক্টরের মধ্যবর্তী কোণটি পেতে পারেন তবে এটি ব্যবহার করে দুটি ভেক্টরের মধ্যে স্বাক্ষরিত কোণটি আপনি পেতে পারেন না । অন্য একটি উপায় রাখুন, আপনি যদি সময়ের সাথে সাথে একটি পয়েন্টের দিকে কোনও অক্ষর ঘুরিয়ে রাখতে চান তবে ডট পণ্যটি আপনাকে কতটা ঘুরিয়ে দেবে তবে কোন দিকে নয়। তবে আরও একটি সহজ সূত্র রয়েছে, যা ডট পণ্যের সাথে একত্রিত হয়ে খুব কার্যকর। শুধু আপনার না

dot(A,B) = |A| * |B| * cos(angle)

আপনার আরও একটি সূত্র থাকতে পারে (যার নামটি আমি রাজনৈতিক নির্ভুলতার জন্য তৈরি করেছি):

pseudoCross(A,B) = |A| * |B| * sin(angle)

যেখানে যদি A = (a, b), B = (x, y) হয়, তবে সিউডোক্রসকে (A, B) ক্রস পণ্যটির তৃতীয় উপাদান হিসাবে চিহ্নিত করা হয়েছে (a, b, 0) x (x, y, 0) )। অন্য কথায়:

a*x+b*y = |A| * |B| * cos(angle)

-b*x+a*y = |A| * |B| * sin(angle)

সম্পূর্ণ স্বাক্ষরিত কোণটি তখনই রয়েছে angle=atanfull(-b*x+a*y,a*x+b*y)(আপনি অ-সাধারণীকৃত মানগুলিতে পাস হলে অ্যাটানফুল বা অ্যাটান 2 ফাংশন আপনাকে ক্ষমা করে দেবে)। যদি এ এবং বিকে স্বাভাবিক করা হয় তবে এটি যদি |A|=|B|=1কেবলমাত্র:

a*x+b*y = cos(angle)

-b*x+a*y = sin(angle)


আরও গভীর ব্যাখ্যার জন্য নোট করুন যে উপরের সমীকরণগুলি ম্যাট্রিক্স সমীকরণ দ্বারা প্রকাশ করা যেতে পারে:

[ a,b]   [x]   [cos(angle)]
[-b,a] * [y] = [sin(angle)]

কিন্তু a ও b যেমন প্রকাশ করা যেতে পারে a=cos(ang1), b=sin(ang1)কিছু মান ang1(নাangle )। সুতরাং, বামদিকে ম্যাট্রিক্স একটি ঘূর্ণন ম্যাট্রিক্স যা ভেক্টরকে (x, y) -আং 1 দ্বারা ঘোরায়। এটি রেফারেন্সের ফ্রেমে স্যুইচ করার সমতুল্য যেখানে ইউনিট ভেক্টর "এ" ভেক্টর / অক্ষ হিসাবে ধরা হয় (1,0)! সুতরাং কেবলমাত্র এই ফ্রেমে ইউনিট বৃত্ত / ডান ত্রিভুজ অঙ্কন করে আপনি দেখতে পাচ্ছেন যে কেন সেই পণ্যটির ফলস্বরূপ ভেক্টরটি (কোস (কোণ), পাপ (কোণ) হয়।

আপনি যদি মেরু আকারে (ক, খ) এবং (x, y) লিখেন, এবং কোণ পার্থক্য সূত্র প্রয়োগ করেন cos(l)*cos(m)+sin(l)*sin(m)=cos(l-m)এবংsin(l)*cos(m)-cos(l)*sin(m)=sin(l-m) , আপনি পুনরায় প্রকাশ করেন যে (এলএম) = কোণ থেকে এই পণ্য দ্বারা সাইন / কোসাইন দেওয়া হয়েছে। বিকল্পভাবে, ident পরিচয়গুলি উপরে বর্ণিত লিনিয়ার পণ্যটি কোনও ভেক্টরকে কেন ঘুরিয়ে দেয় তা দেখতে ব্যবহার করা যেতে পারে।

এই সমস্ত পরিচয়ের অর্থ আপনার খুব কমই কোণ দরকার। যেহেতু কোণগুলি অদ্ভুত হতে পারে - রেডিয়ান / ডিগ্রি, বিপরীত সাইন / কোসিনের জন্য সম্মেলন, তারা প্রতি 2 * পিআই পুনরাবৃত্তি করে - এটি আসলে আরও কার্যকর হতে পারে এবং আপনাকে "যদি (অ্যাঙ্গ <180)" ইত্যাদির যুক্তি দেয় তবে সেগুলি আরও কার্যকর হয়।

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