2016.02.21

逆三角関数 atan2

atan2

はじめに

atan2(アークタンジェント逆正接)は、座標(0,0)とメソッド引数(x,y)を結んだ直線x軸角度θラジアン)を求めるものです。

xとyと角度θの関係を図にすると以下のようになります。

アークタンジェント
アークタンジェント

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)の角度は不定ですが、JavaMath.atan2は0を戻します。

Javaソースコード

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

Atan2Sample.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
public class Atan2Sample {
	public static void main(String[] args) {
		// 右 0°(x軸上)
		System.out.println( "x= 1, y= 0 : atan2=" + Math.atan2(  0.0,  1.0 ) );

		// 右上 45°
		System.out.println( "x= 1, y= 1 : atan2=" + Math.atan2(  1.0,  1.0 ) );

		// 上 90°(y軸上)
		System.out.println( "x= 0, y= 1 : atan2=" + Math.atan2(  1.0,  0.0 ) );

		// 左上 135°
		System.out.println( "x=-1, y= 1 : atan2=" + Math.atan2(  1.0, -1.0 ) );

		// 右 180°(x軸上)
		System.out.println( "x=-1, y= 0 : atan2=" + Math.atan2(  0.0, -1.0 ) );

		// 左下 225°
		System.out.println( "x=-1, y=-1 : atan2=" + Math.atan2( -1.0, -1.0 ) );

		// 下 270°(y軸上)
		System.out.println( "x= 0, y=-1 : atan2=" + Math.atan2( -1.0,  0.0 ) );

		// 右下 315°
		System.out.println( "x= 1, y=-1 : atan2=" + Math.atan2( -1.0,  1.0 ) );

		// 原点(0,0)
		System.out.println( "x= 0, y= 0 : atan2=" + Math.atan2(  0.0,  0.0 ) );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis Atan2Sample.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac Atan2Sample.java

実行

C:\talavax\javasample>java Atan2Sample

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

実行結果

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を返していることが確認できます。

以上です。

関連コンテンツ

sin(サイン)の意味と、Math.sinメソッドの使い方をソースコードを使って詳しく解説しています。

2020.03.23

cos(コサイン)の意味と、Math.cosメソッドの使い方をソースコードを使って詳しく解説しています。

2020.03.23

tan(タンジェント)の意味と、Math.tanメソッドの使い方を解説しています。

2020.03.23

円周率、πってどうゆう意味?

2020.03.23

逆正接 atanと、Math.atanメソッドの使い方をソースコードを使って詳しく解説しています。

2016.02.21

xとyを引数として渡し、x軸からの反時計周り(左周り)の角度θ(ラジアン)を0~2πの値で戻すメソッドの作り方を説明します。

2016.02.21

国際単位系における角度の単位のラジアンについて説明しています。興味のある方は、記事をご覧ください。

2016.01.26

逆正弦 asinと、Math.asinメソッドの使い方をソースコードを使って詳しく解説しています。

2016.01.07

逆余弦 acosと、Math.acosメソッドの使い方をソースコードを使って詳しく解説しています。

2016.01.07

単位円の意味をくわしく解説しています。

2020.03.23

単位ベクトルの意味と、単位ベクトルの求め方を解説しています。

2020.03.23

Javaのmainメソッドで受け取るパラメータについて解説しています。

2017.09.26

mainメソッドで受け取るパラメータの数の取得の仕方について解説しています。

2019.05.14

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

プログラムの最初に実行されるメソッドは?

2022.12.13

プログラミングで使う変数って何?

2020.03.23

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

Javaのプログラムを作ってみませんか?プログラミングに必要なものの用意から実行までを説明しています。

2020.03.23

Javaの学習に役立つソースコードを多数紹介しています。是非、ご覧ください。

2022.09.10

Swingパッケージを使ってグラフィック表示を行う方法を解説しています。

2020.03.23

画像フォーマット形式・色・大きさ・傾きなどの変更、特定の図形(文字・記号など)を見つけたり、取り出したりする画像処理について詳しく解説。

2015.11.29

繰り返し処理を使ったJavaのソースコードサンプルを紹介しています。

2020.03.23

配列を使うJavaソースコードを多数紹介しています。

2021.05.18

数学に関係するJavaのメソッドやソースコードなどを紹介しています。

2022.10.25

三角形、台形、円などいろいろな図形の面積を計算するプログラムを紹介しています。詳しくは、記事をご覧ください。

2021.05.18

StringクラスとStringBuilderクラスを利用したプログラミングの仕方を紹介しています。

2016.12.16

Javaを使った簡単な応用プログラム(生年月日から年齢を計算プログラムなど)を紹介しています。

2022.07.07

プログラミング、ITに関する用語をまとめています。

2022.10.17

日本で使われてきた伝統文様「和柄」について解説しています。

2022.07.27

平面上の位置を表す座標系の1つXY座標系について詳しく解説。

2020.03.23

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

メソッドを抜けるときに使用するreturn文について説明しています。

2020.03.20

プログラミング言語とは?種類や特徴について説明しています。

2022.08.03

XY平面座標の4つの領域について解説しています。

2017.02.24

「ゆるゆるプログラム」のコンテンツを紹介しています。興味のある方はこの記事をご覧ください。

2020.03.23

広告