質問: 空間座標の角度の求め方 空間座標内の3点a(a1,a2,a3),b(b1,b2,b3),c(c1,c2,c3)で定義される三角形の∠bacを求めたいのですが、どのような方法があるでしょうか。できれば、aからbへ向かう辺を角度ゼロとして、三点の座標を入力するだけで(ベクトルの正規化等を用いず)∠bacを0度~360度の値(ラジアンでもいいです)で返すような式が欲しいです。 よろしくお願いします。
回答: 空間座標でも、角度を求めるときは平面座標と同じ次の公式を使えます。 ※ab, acはベクトル cosθ = (ab・ac) / (|ab|*|ac|) 次のように計算すればいいでしょう。ただし、cosθからθを求める関数(アークコサイン関数)が必要です。 ∠bac を θ とおきます。 ab = (b1-a1, b2-a2, b3-a3) ac = (c1-a1, c2-a2, c3-a3) |ab| = √((b1-a1)^2 + (b2-a2)^2 + (b3-a3)^2) |ac| = √((c1-a1)^2 + (c2-a2)^2 + (c3-a3)^2) ab・ac = (b1-a1)*(c1-a1) + (b2-a2)*(c2-a2) + (b3-a3)*(c3-a3) cosθ = (ab・ac) / (|ab| * |ac|) θ = cos^(-1)θ ←アークコサイン関数 これを一つの式にまとめれば一発で計算できます。