2022.09.27
Javaプログラミング
円周上のランダムな座標を求める その1
原点(0,0)、半径rで表す円の上の座標を乱数を使って求めるソースコードを紹介しています。
下の図のように、角度θと半径rを与えることで座標(x,y)を計算することができます。
ここで紹介するソースコードでは、固定した半径rの値と、角度θを乱数で発生させた値からランダムな円周上の座標を計算しています。
角度θと半径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 ); } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis PointOnCircle1.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac PointOnCircle1.java
実行
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;
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 );
013 014 015
// 結果を出力 System.out.println( "x=" + x ); System.out.println( "y=" + y );
求めた座標(x,y)をprintlnメソッドでコンソール出力しています。
以上です。
次に読んでほしいコンテンツ
円の中心座標(0,0)、半径rで表される円の円周上のランダムな座標を求めるJavaのソースコードを紹介しています。度単位の角度の乱数をラジアンに変換して座標を計算しています。
2019.09.27