2017.02.24

2024.12.10

象限(orthant)

象限とは

XY平面座標は、4つの領域に区分されます。この分けられた領域が象限です。

その4つの領域は、平面を直交するx軸y軸で仕切ってできる四つの部分です。図で表すと以下のようになります。

象限

XとYの両方が正(プラス)の部分が第1象限、Xが負(マイナス)で、Yが正(プラス)の部分が第2象限、XとYの両方が負(マイナス)の部分が第3象限、Xが正(プラス)で、Yが負(マイナス)の部分が、第4象限となります。

下図のように、x軸から反時計周りの角度θの大きさの順番で、第1象限から第4象限になっていくと覚えておくと良いです。

象限の覚え方

ここから、象限に関するJavaソースコードを紹介します。

Javaソースコード - 座標(x,y)の象限を求める

これは、座標(x,y)が1から4のどの象限に存在するかを判定するJavaソースコード例です。

Orthant1.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
044
045
046
import java.util.Scanner;

public class Orthant1 {
	// (x,y)が、どの象限なのかを1~4で戻します。
	// (x,y)が、x軸またはy軸に有る場合、0を戻します。
	private static int get_orthant( double x, double y )
	{
		// 第1象限の判定
		if  ( ( 0.0 < x ) && ( 0.0 < y ) ) return 1;

		// 第2象限の判定
		if  ( ( 0.0 > x ) && ( 0.0 < y ) ) return 2;

		// 第3象限の判定
		if  ( ( 0.0 > x ) && ( 0.0 > y ) ) return 3;

		// 第4象限の判定
		if  ( ( 0.0 < x ) && ( 0.0 > y ) ) return 4;

		// x軸またはy軸
		return 0;
	}

	// メイン
	public static void main( String[] args ) {
		// Scannerを作成
		Scanner scan = new Scanner( System.in );

		// x座標の入力
		System.out.println( "xを入力してください" );
		double x = scan.nextDouble();

		// y座標の入力
		System.out.println( "yを入力してください" );
		double y = scan.nextDouble();

		// (x,y)から象限を求める
		int orthant = get_orthant( x, y );

		// 結果の出力
		if ( 0 == orthant )
			System.out.println( "象限の取得に失敗しました。" );
		else
			System.out.println( "第" + orthant + "象限"  );
	}
}

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

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

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

C:\talavax\javasample>javac Orthant1.java

実行

C:\talavax\javasample>java Orthant1

実行例1

xを入力してください
4.0
yを入力してください
3.0
第1象限

実行例2

xを入力してください
-3
yを入力してください
2
第2象限

実行例3

xを入力してください
0
yを入力してください
-100
象限の取得に失敗しました。

x=0は、y軸の上なので象限の取得に失敗します。

ここから、ソースコードを順番に説明していきます。

001
import java.util.Scanner;

Javaクラスライブラリの中から「java.util.Scanner」というパッケージにあるクラスを使うために記述しています。

003
public class Orthant1 {

クラス名を、Orthant1としています。

004
005
006
007
	// (x,y)が、どの象限なのかを1~4で戻します。
	// (x,y)が、x軸またはy軸に有る場合、0を戻します。
	private static int get_orthant( double x, double y )
	{

任意の座標(x,y)から象限を求めるメソッドです。

象限は0から4の整数で戻ります。(x,y)がx軸上、またはy軸上の場合に「0」を戻します。

008
009
		// 第1象限の判定
		if  ( ( 0.0 < x ) && ( 0.0 < y ) ) return 1;

第1象限の判定です。

xが0.0より大きくて、yが0.0より大きい場合に、return文で「1」を戻してメソッドを抜けています。

011
012
		// 第2象限の判定
		if  ( ( 0.0 > x ) && ( 0.0 < y ) ) return 2;

第2象限の判定です。

xが0.0より小さくて、yが0.0より大きい場合に、return文で「2」を戻してメソッドを抜けています。

014
015
		// 第3象限の判定
		if  ( ( 0.0 > x ) && ( 0.0 > y ) ) return 3;

第3象限の判定です。

xが0.0より小さくて、yが0.0より小さい場合に、return文で「3」を戻してメソッドを抜けています。

017
018
		// 第4象限の判定
		if  ( ( 0.0 < x ) && ( 0.0 > y ) ) return 4;

第4象限の判定です。

xが0.0より大きくて、yが0.0より小さい場合に、return文で「4」を戻してメソッドを抜けています。

020
021
		// x軸またはy軸
		return 0;

この処理までたどり着いた場合、(x,y)はx軸またはy軸の上に有ります。

象限が特定できないのでreturn文で「0」を戻しています。

024
025
	// メイン
	public static void main( String[] args ) {

このmainメソッドからプログラムを実行します。

026
027
		// Scannerを作成
		Scanner scan = new Scanner( System.in );

標準入力System.inを使って、Scannerクラスscanを初期化しています。

029
030
031
		// x座標の入力
		System.out.println( "xを入力してください" );
		double x = scan.nextDouble();

x座標の入力部分です。

nextDoubleメソッドで、キーボードから入力された1行を読み取り、その値をdouble型変数xに代入しています。

ここで、入力待ち状態になり、Enterキーが押されるまでに入力した値が変数xに格納されます。

033
034
035
		// y座標の入力
		System.out.println( "yを入力してください" );
		double y = scan.nextDouble();

y座標の入力部分です。

nextDoubleメソッドで、キーボードから入力された1行を読み取り、その値をdouble型変数yに代入しています。

ここで、入力待ち状態になり、Enterキーが押されるまでに入力した値が変数yに格納されます。

037
038
		// (x,y)から象限を求める
		int orthant = get_orthant( x, y );

get_orthantメソッド引数xとyを渡して象限を取得しています。取得した象限変数orthantに代入しています。

040
041
042
043
044
		// 結果の出力
		if ( 0 == orthant )
			System.out.println( "象限の取得に失敗しました。" );
		else
			System.out.println( "第" + orthant + "象限"  );

取得した結果をif文println文を使ってコンソール出力しています。

取得した象限orthantが「0」であれば「象限の取得に失敗しました。」を出力し、「0」でなければ orthantに対応する「第1象限」「第2象限」「第3象限」「第4象限」のいずれかを出力しています。

Javaソースコード - x軸からの角度(整数)で象限を求める

これは、指定した整数角度がどの象限に存在するかを判定するJavaソースコード例です。

マイナスの角度、359を超える角度は自動的に0~359の範囲に変換します。

Orthant2.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
044
045
046
047
048
049
import java.util.Scanner;

public class Orthant2 {
	// 度単位の角度を指定して、象限1~4で戻します。
	private static int get_orthant( int deg )
	{
		// 角度を0~359の間に変換
		// 360で割ったあまりを求める
		deg = deg % 360;

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

		// x軸、y軸上の角度
		if ( 0 == ( deg % 90 ) ) return 0;

		// 第1象限の判定
		if  ( 90 > deg  ) return 1;

		// 第2象限の判定
		if  ( 180 > deg  ) return 2;

		// 第3象限の判定
		if  ( 270 > deg ) return 3;

		// 第4象限の判定
		return 4;
	}

	// メイン
	public static void main( String[] args ) {
		// Scannerを作成
		Scanner scan = new Scanner( System.in );

		// 角度の入力
		System.out.println( "角度を度単位で入力してください" );
		int deg = scan.nextInt();

		// 角度degから象限を求める
		int orthant = get_orthant( deg );

		// 結果の出力
		if ( 0 == orthant )
			System.out.println( "象限の取得に失敗しました。" );
		else
			System.out.println( "第" + orthant + "象限"  );
	}
}

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

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

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

C:\talavax\javasample>javac Orthant2.java

実行

C:\talavax\javasample>java Orthant2

実行例1

角度を度単位で入力してください
30
第1象限

実行例2

実行例3

角度を度単位で入力してください
90
象限の取得に失敗しました。

ここから、ソースコードを順番に説明していきます。

001
import java.util.Scanner;

Javaクラスライブラリの中から「java.util.Scanner」というパッケージにあるクラスを使うために記述しています。

003
public class Orthant2 {

クラス名を、Orthant2としています。

004
005
006
	// 度単位の角度を指定して、象限1~4で戻します。
	private static int get_orthant( int deg )
	{

整数で与えられた度単位の角度degから象限を求めるメソッドです。

象限は0から4の整数で戻ります。角度degが90の倍数の場合は、x軸上またはy軸上なので「0」を戻します。

007
008
009
010
011
012
013
		// 角度を0~359の間に変換
		// 360で割ったあまりを求める
		deg = deg % 360;

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

整数degを0~359の範囲に収める処理です。詳しくは以下の記事を参考にしてください。

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

2016.02.21
015
016
		// x軸、y軸上の角度
		if ( 0 == ( deg % 90 ) ) return 0;

変数degが90の倍数かどうかを判定しています。

余りを求める演算子「%」を使って、変数degを90で割った余りを計算しています、計算結果が「0」の場合は x軸上またはy軸上なのでreturn文で「0」を戻しています。

018
019
		// 第1象限の判定
		if  ( 90 > deg  ) return 1;

第1象限の判定です。

degが90より小さい場合に、return文で「1」を戻してメソッドを抜けています。

この処理を行う時点で、degは0~359のいずれかの値に変換されていて、degはxy軸上の角度ではないので、degが90より小さい場合は「第1象限」と判定できます。

021
022
		// 第2象限の判定
		if  ( 180 > deg  ) return 2;

第2象限の判定です。

degが180より小さい場合に、return文で「2」を戻してメソッドを抜けています。

この処理を行う時点で、degが90より大きいので(180 > deg)だけで象限を判定しています。

024
025
		// 第3象限の判定
		if  ( 270 > deg ) return 3;

第3象限の判定です。

degが270より小さい場合に、return文で「3」を戻してメソッドを抜けています。

この処理を行う時点で、degが180より大きいので(270 > deg)だけで象限を判定しています。

027
028
		// 第4象限の判定
		return 4;

第4象限の判定です。

この処理を行う時点で、degが270より大きいので「4」を戻しています。

031
032
	// メイン
	public static void main( String[] args ) {

このmainメソッドからプログラムを実行します。

033
034
		// Scannerを作成
		Scanner scan = new Scanner( System.in );

標準入力System.inを使って、Scannerクラスscanを初期化しています。

036
037
038
		// 角度の入力
		System.out.println( "角度を度単位で入力してください" );
		int deg = scan.nextInt();

角度の入力部分です。

nextIntメソッドで、キーボードから入力された1行を読み取り、その値をint型変数degに代入しています。

ここで、入力待ち状態になり、Enterキーが押されるまでに入力した値が変数degに格納されます。

040
041
		// 角度degから象限を求める
		int orthant = get_orthant( deg );

get_orthantメソッド引数degを渡して象限を取得しています。取得した象限変数orthantに代入しています。

043
044
045
046
047
		// 結果の出力
		if ( 0 == orthant )
			System.out.println( "象限の取得に失敗しました。" );
		else
			System.out.println( "第" + orthant + "象限"  );

取得した結果をif文println文を使ってコンソール出力しています。

取得した象限orthantが「0」であれば「象限の取得に失敗しました。」を出力し、「0」でなければ orthantに対応する「第1象限」「第2象限」「第3象限」「第4象限」のいずれかを出力しています。

Javaソースコード - x軸からの角度(実数)で象限を求める

これは、指定した実数角度がどの象限に存在するかを判定するJavaソースコード例です。

マイナスの角度、359.99999…を超える角度は自動的に0.0~359.99999…の範囲に変換します。

Orthant3.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
044
045
046
047
048
049
050
import java.util.Scanner;

public class Orthant3 {
	// 度単位の角度を指定して、象限1~4で戻します。
	private static int get_orthant( double deg )
	{
		// 角度を0~360未満の間に変換
		// 360で割ったあまりを求める
		deg = deg % 360.0;

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

		// x軸、y軸上の角度
		double e = 0.000000000000001;
		if ( e > Math.abs( deg % 90.0 ) ) return 0;

		// 第1象限の判定
		if  ( 90.0 > deg  ) return 1;

		// 第2象限の判定
		if  ( 180.0 > deg  ) return 2;

		// 第3象限の判定
		if  ( 270.0 > deg ) return 3;

		// 第4象限の判定
		return 4;
	}

	// メイン
	public static void main( String[] args ) {
		// Scannerを作成
		Scanner scan = new Scanner( System.in );

		// 角度の入力
		System.out.println( "角度を度単位で入力してください" );
		double deg = scan.nextDouble();

		// 角度degから象限を求める
		int orthant = get_orthant( deg );

		// 結果の出力
		if ( 0 == orthant )
			System.out.println( "象限の取得に失敗しました。" );
		else
			System.out.println( "第" + orthant + "象限"  );
	}
}

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

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

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

C:\talavax\javasample>javac Orthant3.java

実行

C:\talavax\javasample>java Orthant3

実行例1

角度を度単位で入力してください
127.3
第2象限

実行例2

実行例3

ここから、ソースコードを順番に説明していきます。

001
import java.util.Scanner;

Javaクラスライブラリの中から「java.util.Scanner」というパッケージにあるクラスを使うために記述しています。

003
public class Orthant3 {

クラス名を、Orthant3としています。

004
005
006
	// 度単位の角度を指定して、象限1~4で戻します。
	private static int get_orthant( double deg )
	{

整数で与えられた度単位の角度degから象限を求めるメソッドです。

象限は0から4の整数で戻ります。角度degが90.0の倍数の場合は、x軸上またはy軸上なので「0」を戻します。

007
008
009
010
011
012
013
		// 角度を0~360未満の間に変換
		// 360で割ったあまりを求める
		deg = deg % 360.0;

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

整数degを0~359.99999…の範囲に収める処理です。詳しくは以下の記事を参考にしてください。

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

2016.02.21
015
016
017
		// x軸、y軸上の角度
		double e = 0.000000000000001;
		if ( e > Math.abs( deg % 90.0 ) ) return 0;

変数degが90の倍数かどうかを判定しています。

余りを求める演算子「%」を使って、変数degを90.0で割った余りを計算しています、計算結果の絶対値変数eの値より小さい場合は x軸上またはy軸上なのでreturn文で「0」を戻しています。

Math.absメソッド

public static int Math.abs( int a )
public static long Math.abs( long a )
public static float Math.abs( float a )
public static double Math.abs( double a )
public static int Math.abs( byte a )
public static int Math.abs( short a )
・引数aに指定した数値の絶対値を返します。

  パラメータ a : 絶対値を求めたい数値

  戻り値     aの絶対値を返します。
  戻りの変数型は、基本的に引数と同じ変数型と考えてよいです。
	if ( 0.0 == ( deg % 90.0 ) ) return 0;

としていないのは、double型の値には誤差があるからです。計算結果が「0.0」にならずに「0.0」に近い値になることがあります。

ここでは「0.0」と判定してよい値を変数eを使って判定しています。

変数eの値は、任意の値に変えてもよいです。

double型の値の誤差については、以下の記事を参考にしてください。

double型のもつ誤差について解説しています。

2016.02.15
019
020
		// 第1象限の判定
		if  ( 90.0 > deg  ) return 1;

第1象限の判定です。

degが90.0より小さい場合に、return文で「1」を戻してメソッドを抜けています。

この処理を行う時点で、degは0~359.99999…のいずれかの値に変換されていて、degはxy軸上の角度ではないので、degが90.0より小さい場合は「第1象限」と判定できます。

022
023
		// 第2象限の判定
		if  ( 180.0 > deg  ) return 2;

第2象限の判定です。

degが180.0より小さい場合に、return文で「2」を戻してメソッドを抜けています。

この処理を行う時点で、degが90.0より大きいので(180.0 > deg)だけで象限を判定しています。

025
026
		// 第3象限の判定
		if  ( 270.0 > deg ) return 3;

第3象限の判定です。

degが270.0より小さい場合に、return文で「3」を戻してメソッドを抜けています。

この処理を行う時点で、degが180.0より大きいので(270.0 > deg)だけで象限を判定しています。

028
029
		// 第4象限の判定
		return 4;

第4象限の判定です。

この処理を行う時点で、degが270.0より大きいので「4」を戻しています。

032
033
	// メイン
	public static void main( String[] args ) {

このmainメソッドからプログラムを実行します。

034
035
		// Scannerを作成
		Scanner scan = new Scanner( System.in );

標準入力System.inを使って、Scannerクラスscanを初期化しています。

037
038
039
		// 角度の入力
		System.out.println( "角度を度単位で入力してください" );
		double deg = scan.nextDouble();

角度の入力部分です。

nextDoubleメソッドで、キーボードから入力された1行を読み取り、その値をdouble型変数degに代入しています。

ここで、入力待ち状態になり、Enterキーが押されるまでに入力した値が変数degに格納されます。

041
042
		// 角度degから象限を求める
		int orthant = get_orthant( deg );

get_orthantメソッド引数degを渡して象限を取得しています。取得した象限変数orthantに代入しています。

044
045
046
047
048
		// 結果の出力
		if ( 0 == orthant )
			System.out.println( "象限の取得に失敗しました。" );
		else
			System.out.println( "第" + orthant + "象限"  );

取得した結果をif文println文を使ってコンソール出力しています。

取得した象限orthantが「0」であれば「象限の取得に失敗しました。」を出力し、「0」でなければ orthantに対応する「第1象限」「第2象限」「第3象限」「第4象限」のいずれかを出力しています。

以上です。

関連コンテンツ

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

2016.01.07

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

2016.01.07

絶対値の意味と、Math.absメソッドの使い方をソースコードを使って詳しく解説しています。

2020.03.23

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

2016.02.21

指数表記は、非常に大きな数値や、0に近い小さい数値を表現するときに使われる表記方法の1つです。興味のある方は、記事をご覧ください。

2020.03.23

画像の座標系はどのように定義されていますか?

2020.03.23

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

2020.03.23

平面上の位置を表す座標系の1つである「極座標系」について詳しく解説。

2024.11.27

Math.sinメソッド、Math.cosメソッドを使わない計算方法を詳しく解説します。

2017.08.09

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

2022.07.27

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

2015.11.29

キーボードを使って値を入力する方法を解説しています。ソースコード付きです。

2020.08.19

キーボードを使って整数値を入力する方法を解説しています。Scannerクラスを利用しています。

2023.03.08

キーボードを使って整数値を2つ入力る方法を解説しています。Scannerクラスを利用しています。

2023.03.16

キーボードを使って入力した整数値を2乗する方法を解説しています。

2023.03.10

キーボードを使って入力した整数値の絶対値を求める方法を解説しています。

2023.03.10

キーボードを使って実数値(double)を入力する方法を解説しています。Scannerクラスを利用しています。

2023.03.09

キーボードで入力された実数の角度からsin(サイン)、cos(コサイン)を計算し、コンソール出力する方法を解説します。

2023.04.10

キーボードを使って実数値(double)を2つ入力する方法を解説しています。Scannerクラスを利用しています。

2023.03.16

キーボードで入力した整数値を配列に格納するメソッドの作り方を解説しています。

2020.08.19

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

2020.03.20

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

2020.03.23

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

2023.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

繰り返し処理を使った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

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

2016.01.26

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

2022.08.03

Javaプログラムの構成について解説しています。詳しくは、こちらをご覧ください。

2020.03.23

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

2020.03.23

自然数と整数って何が違う?

2020.03.23

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

2020.03.23

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

2020.03.23

Math.atan2メソッドにxとyを引数として渡した結果について説明しています。

2024.08.06

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

2016.02.21

広告