Javaプログラミング学習サイト ゆるゆるプログラミング

2016/02/21 公開

・逆三角関数 atan2

atan2(アークタンジェント、逆正接)は、座標(0,0)と引数(x,y)を結んだ直線とx軸の角度θ(ラジアン)を求めるものです。xとyと角度θの関係を図にすると以下のようになります。

atan2

Math.atan2メソッドにxとyを渡すとθが戻ります。y、xの順番で引数に渡す仕様になっています。注意して使用してください。

Math.atan2メソッド

public static double Math.atan2(double y, double x )
■引数x,yで指定した値の逆正接 (アークタンジェント)を返します。

  パラメータ y : y座標の値。
        x : x座標の値。

  戻り値     y/xの逆正接(アークタンジェント)をラジアンで戻す。

角度は、yが0以上の場合、x軸を基準に反時計周り(左周り)で求められ、戻り値の角度(ラジアン)の範囲は0以上、π以下です(πはパイ)。yの値が0以上の範囲は、下図の水色で表しています。

atan2

yが0未満の場合、角度はx軸を基準に時計周り(右周り)で求められ、戻り値の角度(ラジアン)の範囲は-πより大きい、0未満です(πはパイ)。yの値が0未満の範囲は、下図の水色で表しています。

atan2

ちなみに、x=0、y=0を引数として渡すと0が戻ります。実際には(0,0)の角度は不定ですが、JavaのMath.atan2は0を戻します。

Math.atan2メソッドを使ったJavaソースコードを紹介します。

Atan2Sample.java ← クリックしてダウンロードページに移動
001:    public class Atan2Sample {
002:    	public static void main(String[] args) {
003:    		// 右 0°(x軸上)
004:    		System.out.println( "x= 1, y= 0 : atan2=" + Math.atan2(  0.0,  1.0 ) );
005:    
006:    		// 右上 45°
007:    		System.out.println( "x= 1, y= 1 : atan2=" + Math.atan2(  1.0,  1.0 ) );
008:    
009:    		// 上 90°(y軸上)
010:    		System.out.println( "x= 0, y= 1 : atan2=" + Math.atan2(  1.0,  0.0 ) );
011:    
012:    		// 左上 135°
013:    		System.out.println( "x=-1, y= 1 : atan2=" + Math.atan2(  1.0, -1.0 ) );
014:    
015:    		// 右 180°(x軸上)
016:    		System.out.println( "x=-1, y= 0 : atan2=" + Math.atan2(  0.0, -1.0 ) );
017:    
018:    		// 左下 225°
019:    		System.out.println( "x=-1, y=-1 : atan2=" + Math.atan2( -1.0, -1.0 ) );
020:    
021:    		// 下 270°(y軸上)
022:    		System.out.println( "x= 0, y=-1 : atan2=" + Math.atan2( -1.0,  0.0 ) );
023:    
024:    		// 右下 315°
025:    		System.out.println( "x= 1, y=-1 : atan2=" + Math.atan2( -1.0,  1.0 ) );
026:    
027:    		// 原点(0,0)
028:    		System.out.println( "x= 0, y= 0 : atan2=" + Math.atan2(  0.0,  0.0 ) );
029:    	}
030:    }

Atan2Sampleを実行

C:\talavax\javasample>java Atan2Sample

x軸上、y軸上、第1~4象限、原点座標の(x,y)に対して、atan2メソッドの結果を表示しています。

AtanSample2.javaの出力結果

x= 1, y= 0 : atan2=0.0
x= 1, y= 1 : atan2=0.7853981633974483
x= 0, y= 1 : atan2=1.5707963267948966
x=-1, y= 1 : atan2=2.356194490192345
x=-1, y= 0 : atan2=3.141592653589793
x=-1, y=-1 : atan2=-2.356194490192345
x= 0, y=-1 : atan2=-1.5707963267948966
x= 1, y=-1 : atan2=-0.7853981633974483
x= 0, y= 0 : atan2=0.0

yが0以上の場合、0からπの値を返していることが分かります。yが0未満の場合、-0から-πの値を返していることが分かります。0からπの値を返していることが分かります。また、x=0、y=0の場合、0.0を返していることが確認できます。

■関連コンテンツ

逆三角関数 atan atanの意味と、Math.atanの使い方について解説
逆三角関数 atan3 角度0~2πを戻すアークタンジェントの作り方
円周率π(パイ) π(パイ)の意味と、Math.PIの使い方について解説
ラジアン←→角度 変換 角度、ラジアンの相互変換について解説
逆三角関数 asin asinの意味と、Math.asinの使い方について解説
逆三角関数 acos acosの意味と、Math.acosの使い方について解説
sinの意味と、Math.sinの使い方について解説-画像

三角関数 sin

sinの意味と、Math.sinメソッドの使い方をソースコードを使って解説しています。

cosの意味と、Math.cosの使い方について解説-画像

三角関数 cos

cosの意味と、Math.cosメソッドの使い方をソースコードを使って解説しています。

tanの意味と、Math.tanの使い方について解説-画像

三角関数 tan

tanの意味と、Math.tanメソッドの使い方をソースコードを使って解説しています。

π(パイ)の意味と、Math.PIの使い方について解説-画像

円周率π(パイ)

π(パイ)の意味と、Math.PIの使い方について解説

半径1の円-画像

単位円

単位円は半径が1の円のことです。単位円と三角関数(sinθ、cosθ)の関係についても解説しています。

単位ベクトルとは-画像

単位ベクトル

単位ベクトルは長さが1のベクトルのことです。任意の長さのベクトルを単位ベクトルに変換する方法も解説しています。

■新着情報

2021.06.18 変数の初期値 変数に値を代入しないで計算
2021.05.28 短針と長針の角度 短針と長針の角度は?
2021.05.19 各位(くらい)を求める 1の位の値は?10の位は?

■広告

Topへ