なす角
y 軸 (0,1,0) と適当なベクトル (a,b,c) のなす角をプログラムで求めるには、どの式を使えばより正確に求まるのだろうか。
- を
acos()
で計算- 小数で割り算して渡すので、精度の問題がある。
- [−1, 1] をはみ出すとエラーとなることに注意が必要。計算誤差でそうなることはよくあるのだが、いちいち
errno
でチェックするのはだるいので、std::max(-1.0, std::min(x, 1.0))
のように、クリップするとよい。
- を
atan2()
で計算- 分子・分母を別々に渡すので、関数がよきに計らってくれることが期待できる。
- (0, 0) でなければ、エラーにならない。