2022.09.27

Javaプログラミング

円周上のランダムな座標を求める3

円周上のランダムな座標を求める その3

原点(ox,oy)、半径rで表すの上の座標乱数を使って求めるソースコードを紹介しています。

下の図のように、角度θ半径rを与えることで座標(x,y)を計算することができます。

角度θと半径rと(x,y)の関係
角度θと半径rから(x,y)を求める

これは原点(0,0)を中心とした周上の座標です。

原点(ox,oy)を中心とした座標は、原点(0,0)で計算した座標(x,y)に(ox,oy)を足すことで求められます。(x+ox,y+oy)が求める座標です。

ここで紹介するソースコードでは、の中心座標(ox,oy)と、固定した半径rの値と、角度θ乱数で発生させた値からランダム周上の座標を計算しています。

Javaソースコード

PointOnCircle3.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
public class PointOnCircle3 {
	public static void main( String[] args ) {
		// 半径を指定
		double radius = 100.0;

		// 円の中心座標を指定
		double ox = 60.0;
		double oy = 40.0;

		// 乱数でラジアンを求める
		double rad = 2.0 * Math.PI * Math.random();

		// 原点(ox,oy)、半径radiusの円周上の(x,y)を計算
		double x = radius * Math.cos( rad ) + ox;
		double y = radius * Math.sin( rad ) + oy;
		
		// 結果を出力
		System.out.println( "x=" + x );
		System.out.println( "y=" + y );
	}
}

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

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

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

C:\talavax\javasample>javac PointOnCircle3.java

実行

C:\talavax\javasample>java PointOnCircle3

出力結果(実行する毎に結果が変わります)

x=157.825195965776
y=19.257988664126067

Javaソースコードの解説

001
public class PointOnCircle3 {

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

002
	public static void main( String[] args ) {

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

003
004
		// 半径を指定
		double radius = 100.0;

半径を格納する変数radiusに100.0を代入しています。この値を色々変えてみてください。

006
007
008
		// 円の中心座標を指定
		double ox = 60.0;
		double oy = 40.0;

の中心座標(60,49)を指定しています。この値を色々変えてみてください。

010
011
		// 乱数でラジアンを求める
		double rad = 2.0 * Math.PI * Math.random();

ラジアンを格納する変数radに、0.0~2πの範囲で発生する乱数を代入しています。

Math.PIは定数π(パイ)の値3.141592…です。

次に呼び出すMath.cosメソッドMath.sinメソッドは、ラジアン角度引数なので、0.0~2π乱数を発生しています。

013
014
015
		// 原点(ox,oy)、半径radiusの円周上の(x,y)を計算
		double x = radius * Math.cos( rad ) + ox;
		double y = radius * Math.sin( rad ) + oy;

半径radiusに、Math.cos( rad )を掛けた値に、の中心x座標oxを足してx座標の値を計算しています。同様にMath.sin( rad )を掛けた値に、の中心y座標oyを足してy座標の値を計算しています。

017
018
019
		// 結果を出力
		System.out.println( "x=" + x );
		System.out.println( "y=" + y );

求めた座標(x,y)をprintlnメソッドコンソール出力しています。

以上です。

次に読んでほしいコンテンツ

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

2022.09.10

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

2024.11.27

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

2020.03.23

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

2020.03.23

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

2020.03.23

円の中心座標(0,0)、半径rで表される円の円周上のランダムな座標を求めるJavaのソースコードを紹介しています。度単位の角度の乱数をラジアンに変換して座標を計算しています。

2019.09.27

円の中心座標(ox,oy)、半径rで表される円の円周上のランダムな座標を求めるJavaのソースコードを紹介しています。

2019.09.27

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

2022.07.07

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

2020.03.23

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

2022.12.13

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

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

2022.10.17

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

2022.07.27

関連コンテンツ

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

2015.12.27

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

2020.03.23

円の直径と半径について図を使って詳しく解説しています。

2020.03.23

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

2020.03.23

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

2016.01.26

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

2020.03.23

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

2022.12.13

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

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

広告