二つのベクトルがつくる角度を求める

二つのベクトルがつくる角度を0~360度の範囲で求めたい。

内積関数に2つのベクトルを渡し、
返ってきた値を、アークコサイン関数に渡す。
そうすると角度が返ってくる。

このやり方で求めることが出来るのは、
右回り、左回り0~180度の範囲。
0~360度の範囲で角度を求めることが出来ない。

▼どちらも角度を求めると90度

▼左回りで0~360度の範囲で角度を求めたい場合
360から角度を引けばいい。

図で見るなら感覚的にわかるけど、
プログラミングで判別するためにはどうすればいいのか?

▼方法1
2つのベクトルの外積を求める事で判別できる。

ベクトルaからbが右回りだったら、
360度から角度を引けば良い。
右回りか、左回りか、どう判別するのか?

求めた外積のZ成分がプラスだったら左回り。
求めた外積のZ成分がマイナスだったら右回り。

実際に計算して確かめてみる。

↓外積の式

▼例1
ベクトルaからbが左回り。
ベクトルaとbの外積のZ成分がプラスになるか確かめる。

▼例2
ベクトルaからbが右回り。
ベクトルaとbの外積のZ成分がマイナスになるか確かめる。

確かにベクトルaからbが左回りの時は、外積のZ成分がプラスになり、
ベクトルaからbが右回りの時は、外積のZ成分がマイナスになる事が確認できた。

▼方法2
ベクトルbがどの象限にあるかで判別する。

ベクトルbが第二象限か、第三象限にあるなら、
ベクトルbのX成分はマイナスだと分かる。

ベクトルbが第三象限か、第四象限にあるなら、
ベクトルbのY成分はマイナスだと分かる。

●例1:ベクトルaからbまで左回りで0~360度を求めたい場合
ベクトルbのY成分がマイナスなら、360-角度にする。

ベクトルaは[1,0,0]。
ベクトルbは[-0.7,-0.7,0]。

●例2:ベクトルaからbまで右回りで0~360度を求めたい場合
ベクトルbのX成分がマイナスなら、360-角度にする。

ベクトルaは[0,1,0]。
ベクトルbは[-0.7,0.7,0]。

▼参考リンク
外積とは何か。ベクトルの外積の定義・意味・大きさについて アタリマエ!

広告

二つのベクトルがつくる角度を求める」への3件のフィードバック

  1. ピンバック: [Unreal Engine]Actorの角度を0~360の範囲で取得したい | NG録

  2. 2つのベクトルがxy平面にある例で説明されていますが、2つのベクトルがxy平面上になくても(z成分が0でなくても)、外積のz成分の符号で判断可能でしょうか?

    • わかりません。

      2つのベクトルがxy平面上にない場合は、
      行列と反転行列を使い、
      XY平面でベクトルを捉えなおしてから計算する方法で
      求めることが出来る気がします。

      暇があれば試してみて、
      うまくいけば記事にしたいと思います。

コメントを残す

メールアドレスが公開されることはありません。

スパム対策用の計算式と画像認証です。↓の欄を入力しないとコメントが出来ません。 *

*