2017-02-25 1 views
-3

X軸を基準とする2つの点の間の角度を度単位で測定しようとしています。他人を度数に変換するときにMath.Atan2の値が正しくない

private double GetAngleBetweenTwoPoints(double x1, double y1, double x2, double y2) 
{ 
    return Math.Atan2(y2 - y1, x2 - x1) * 180.0/Math.PI; 
} 

問題があり、これはいくつかの値のために正常に動作するようだが、ではない:スタックオーバーフロー上の他の記事を見てから

、私は次のコードを使用してきました。たとえば、(0、0、1、1)を渡すと値45が正しく返されます。ただし、(0、0、2、1)を渡すと、22.5を予想すると26.565051177078が返されます。

私は間違っていますか?

+1

何も間違っていません。それは正しいです、あなたはちょうど間違っていると思っています – Li357

+0

うん、これは今よく分かります。お返事ありがとうございます。 –

答えて

2

0.5の逆正接は、22.5度ではなく26.565度です。

接線を26.565度とすると、0.5に非常に近い数値が得られますが、22.5度の接線は約0.414です。 (1,1)

(正接が周期的であるようにNBが、tan xが0.5 xれる他の値の無限の数があるが、それはこの問題に関連しない。)

+0

ありがとうございます。私はちょうど問題について間違って考えていたと感じていました。それが45度の二等分線に非常に近いという事実は、私に悪い仮定をさせました。 –

0

角に対する半角ラインであります半径がsqrt(2)の円の上にある(1,1)(sqrt(2),0)の中点を通る角度二等分線。したがって、22.5°の角度の点(0.5+\sqrt(0.5), 0.5)を探しています。

関連する問題