二つのベクトルがつくる角度を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-角度にする。
ベクトルbのY成分がマイナスなら、360-角度にする。
ベクトルaは[1,0,0]。
ベクトルbは[-0.7,-0.7,0]。
●例2:ベクトルaからbまで右回りで0~360度を求めたい場合
ベクトルbのX成分がマイナスなら、360-角度にする。
ベクトルbのX成分がマイナスなら、360-角度にする。
ベクトルaは[0,1,0]。
ベクトルbは[-0.7,0.7,0]。
ピンバック: [Unreal Engine]Actorの角度を0~360の範囲で取得したい | NG録