2022.09.27

Javaプログラミング

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

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

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

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

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

Javaソースコード

PointOnCircle1.java

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

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

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

実行結果

実行

C:\talavax\javasample>java PointOnCircle1

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

x=-98.09905147271276
y=19.40556879233515

Javaソースコードの解説

001
public class PointOnCircle1 {

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

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

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

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

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

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

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

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

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

009
010
011
		// 原点(0,0)、半径radiusの円周上の(x,y)を計算
		double x = radius * Math.cos( rad );
		double y = radius * Math.sin( rad );

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

013
014
015
		// 結果を出力
		System.out.println( "x=" + x );
		System.out.println( "y=" + y );

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

次のコンテンツ

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

2019.09.27

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

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

2016.03.05

平面上の位置を表す座標系の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

広告