2016.02.21

逆三角関数 atan3

はじめに

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

下図は、xとyとθの関係を表したものです。

atan2

メソッドの作り方

それでは、作り方を説明します。

Javaには、既にxとyからθを求めるMath.atan2メソッドが有ります。このメソッドは、yが0以上のときθを0~π、yが0未満のときθを-π~0の値を戻します。

yが0以上の場合は、Math.atan2の戻り値x軸からの反時計周りの角度なのでそのまま使います。yが0未満の場合、戻り値角度が-π~0となるので、この値を反時計周りの角度に変換します。変換方法は簡単で、戻り値に2πを足すだけです。

Javaソースコード

以下のJavaソースコードのatan3メソッドが、xとyを引数として渡し、x軸からの反時計周り(左周り)の角度θラジアン)を0~2πの値で戻すメソッドです。

Atan3Sample.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
031
032
033
034
035
036
037
038
039
040
041
042
043
public class Atan3Sample {
	// Math.atan2メソッドを利用し、角度の戻り値を0~2πにしたもの
	private static double atan3( double y, double x )
	{
		// yが0以上の場合
		if ( 0.0 <= y )
			return Math.atan2( y, x );

		// yが0未満の場合
		return Math.atan2( y, x ) + 2.0 * Math.PI;
	}


	// メイン
	public static void main(String[] args) {
		// 右 0°(x軸上)
		System.out.println( "x= 1, y= 0 : atan3=" + atan3(  0.0,  1.0 ) );

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

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

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

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

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

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

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

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

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

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

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

C:\talavax\javasample>javac Atan3Sample.java

実行

C:\talavax\javasample>java Atan3Sample

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

出力結果

x= 1, y= 0 : atan3=0.0
x= 1, y= 1 : atan3=0.7853981633974483
x= 0, y= 1 : atan3=1.5707963267948966
x=-1, y= 1 : atan3=2.356194490192345
x=-1, y= 0 : atan3=3.141592653589793
x=-1, y=-1 : atan3=3.9269908169872414
x= 0, y=-1 : atan3=4.71238898038469
x= 1, y=-1 : atan3=5.497787143782138
x= 0, y= 0 : atan3=0.0

x軸を基準に反時計周り(左周り)の角度ラジアン)の値を返していることが確認できます。

以上です。

関連コンテンツ

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

2016.02.21

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

2016.01.26

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

2016.01.07

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

2016.01.07

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

2017.02.24

条件式を判断して処理を分岐する方法を詳しく説明しています。

2023.03.20

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

2020.03.20

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

2022.12.13

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

2022.08.03

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

2020.03.23

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

2022.09.10

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

2022.07.07

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

2020.03.23

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

2015.11.29

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

2021.05.18

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

2021.05.18

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

2020.03.23

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

2022.10.25

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

2016.12.16

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

2022.07.27

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

2022.10.17

黒と白の放射状模様画像を作成する方法を紹介しています。

2019.04.30

広告