Programming Serendipity

気まぐれに大まかに生きるブログ

Y座標を無視して2つのオブジェクト間の角度を取る方法

Y(上下)を考えずに、3D空間上の2点間の角度を取得する方法です。

とりあえずコードはざっとこんな感じです。

gist.github.com

角度がどっちだったらマイナスにするか、とかはニーズに応じて変えてください。

コード的には、

Unity5 メモ4 - Programming Serendipity

で書いたコードと基本的な考えは同じですが、(マイナスを含む)相対的な角度を出す計算で、 2Dの場合XY平面なので、そこの外積から出たZの値で判別していたのを、 XZ平面上のベクトルで外積を計算するとYに出てくるのが面白いですね。 外積の定義から言えば当たり前といえば当たり前かもですが。

ちなみに

外積を結構適当に理解してましたが、

Cross product - Wikipedia

↑のNamesの節の左にある画像が素晴らしくわかりやすいです。この画像を見てやっと外積の何たるかを理解したかもしれない。 wikipediaはたまに、日本語版の解説より英語版の画像のほうがわかりやすいことがあるんですよね。