web-dev-qa-db-ja.com

Javaでラジアンから度に変換する

ユーザーがオブジェクトを作成するときに、x、yから度単位のアルファ角を取得しようとしています。

次のコンストラクタを作成しました。

public class Point
{
    private double _radius , _alpha;    

    public Point ( int x , int y )
    {
        _radius = Math.sqrt ( Math.pow(x,2) + Math.pow (y,2) ) ;
        _alpha = ( ( Math.atan (y/x) ) * 180 ) / Math.PI;
    }

}
  1. _alphaがatan()メソッドから得たラジアンではなく度単位の角度になったと思いますか?

  2. そうする簡単な方法はありますか?

ありがとう!

30
Master C

組み込みメソッドMath.toDegrees()を使用しない理由は、Java SEが付属しています。

96
mP.

アイデアは問題ないように見えますが、Math.atanの代わりに Math.atan2 を使用することをお勧めします。

5
MAK

これは、最短で最も簡単な方法である必要があります。

        _radius = Math.hypot(x, y);
        _alpha = Math.toDegrees(Math.atan2(y, x));

この方法で計算すると、_alphaの値は-180〜180度です。

1
Przemek