C++ で 2つのベクトル間の角度を計算する

Muhammad Adil 2023年10月12日
C++ で 2つのベクトル間の角度を計算する

ベクトル数学は、大きさと方向を持つ幾何学的オブジェクトであるベクトルを扱う数学の一分野です。 たとえば、ベクトルの尾部によって形成される角度は、2つのベクトルによって形成される角度に等しくなります。

2つのベクトルによって形成される角度は、180° の間にあることに注意してください。 この記事では、2つのベクトル間の角度を計算する方法について説明します。

C++ で 2つのベクトル間の角度を計算する

A と別のベクトル B の内積を取ることで、ベクトル A の角度を計算できます。 内積 は、それらの大きさを乗算し、それらの角度を加算することによって計算されます。 以下でそれを学びましょう。

C++ の内積

内積は、2つのベクトルを受け入れてスカラーを返す数学演算の 1つです。 したがって、たとえば、ベクトル A の角度は、A と別のベクトル B の内積を取ることで計算できます。

内積は、それらの大きさを乗算し、それらの角度を加算することによって計算されます。 ベクトルの大きさは、原点から先端までの線分の長さであり、ベクトルの方向はその特定の方向を指します。

2D および 3D 平面で角度を見つける手順

2D 平面と 3D 平面で 2つのベクトル間の角度を求める手順は次のとおりです。

  • 長さと方向を持つ 2つのベクトルを宣言します。
  • 各ベクトルの大きさを見つけます。
  • これら 2つのベクトルの内積を計算します。
  • ベクトルが 2D 平面にある場合は、θ = Cos-1 [(a · b) / (|a| |b|)] を使用して 2つのベクトル間の角度を見つけます。
  • ベクトルが 3D 平面にある場合は、次の式を使用します θ = Cos-1 [(a · b · c) / (|a| |b| |c|)]

2D および 3D プレーンとは別に、プログラマーとして知っておく必要がある重大な例外があります。

ベクトルがランダムに配置されているのではなく、既知の法線ベクトル n を持つ平面内に配置されている場合、回転軸は n と同じ方向に向けられ、n の向きは その軸。

この状況では、行列式に n を追加してサイズを大きくすることにより、θ = Cos-1 [(a · b) / (|a| |b|)] を変更できます。

float Angles(const x &a, const y &b) {
  float d = dot(a, b) / (length(v0) * length(v1));
  return acos(demo(d, 3, 4f)) * RAD2DEG;
}
著者: Muhammad Adil
Muhammad Adil avatar Muhammad Adil avatar

Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.

Facebook

関連記事 - C++ Vector