2016.02.21

角度の正規化

正方形螺旋

はじめに

ここでは、与えられた任意の角度を0°から360°に収めるメソッドの作り方を説明します。

以下がその変換例で、0~360°の範囲外の角度を0~360°の中に収めています。

変換例

角度 400°→ 40°
角度 720°→ 0°
角度 -50°→ 310°

角度を正規化するメソッド

それでは、メソッドの作り方を説明します。

角度の360°は一回転することなので、0°と360°とは同じ角度となります。よって、与えられた角度がプラス(0も含む)の場合、角度を360°で割った余りを求めることで角度を0~360°の範囲に収めることができます。また、角度がマイナスの場合は、360°で割った余りに360°を足すことで、角度を0~360°の範囲に収めることができます。

例えば、与えられた角度が400°の場合、400=360x1+40と書き直せるので40°となります。-50°場合、-50=360x0-50と書き直せます。さらに-50に360を足して310°となります。

まとめると、角度がプラス(0も含む)の場合の正規化された角度は、以下の式で計算できます。%は余りを計算する演算子です。

正規化された角度 = 与えられた角度 % 360

角度がマイナスの場合の正規化された角度は、以下の式で計算できます。

正規化された角度 = 与えられた角度 % 360 + 360

Javaソースコード

以下のJavaソースコードのgetDegreeメソッドが、角度degを引数として渡し、0~360°の範囲に変換した角度を戻すメソッドです。

Degrees.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
public class Degrees {
	public static void main( String[] args ) {
		double deg;

		// 750°
		deg = 750.0;
		System.out.println( deg + "度 → " + getDegree( deg ) + "度" );

		// 7200°
		deg = 7200.0;
		System.out.println( deg + "度 → " + getDegree( deg ) + "度" );

		// -340°
		deg = -340.0;
		System.out.println( deg + "度 → " + getDegree( deg ) + "度" );

		// -140°
		deg = -140.0;
		System.out.println( deg + "度 → " + getDegree( deg ) + "度" );
	}


	// °単位の角度を0~360の範囲に収める
	private static double getDegree( double deg )
	{
		// 360で割ったあまりを求める
		deg = deg % 360.0;

		// マイナスだったら360を足す
		if ( 0.0 > deg )
			deg += 360.0;

		return deg;
	}
}

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

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

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

C:\talavax\javasample>javac Degrees.java

実行

C:\talavax\javasample>java Degrees

実行結果

750.0度 → 30.0度
7200.0度 → 0.0度
-340.0度 → 20.0度
-140.0度 → 220.0度

計算された角度が、0~360°に収まっています。

以上です。

関連コンテンツ

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

2020.03.23

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

2023.03.20

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

2020.03.20

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

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

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

2020.03.23

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

2016.01.26

割り算で割り切れずに残った端数を剰余(余り)といいます。この剰余の計算をJavaのソースコードを使って解説しています。

2020.03.23

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

2022.08.03

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

2020.03.23

広告