2016.03.05
2024.11.27
極座標系
極座標系とは?
上の関係式の関係の求め方をもう少し詳しく書きます。次の図は、sinθとcosθについて描いた図で、半径1で角度がθのときx座標がcosθに、y座標がsinθになります。ここで半径をrとするとx座標とy座標もr倍になるので、rcosθとrsinθがそれぞれ求めるxとyになります。
Javaのソースコード
Polar1.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
import java.util.Scanner; public class Polar1 { public static void main( String[] args ) { // Scannerを作成 Scanner scan = new Scanner( System.in ); // 角度の入力 System.out.println( "角度を度単位で入力してください" ); double deg = scan.nextDouble(); // 原点からの距離の入力 System.out.println( "原点からの距離を入力してください" ); double r = scan.nextDouble(); // 度をラジアンに変換 double rad = Math.toRadians( deg ); // xの計算 double x = r * Math.cos( rad ); // yの計算 double y = r * Math.sin( rad ); // xとyをコンソール出力 System.out.println( "x=" + x + " y=" + y ); } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis Polar1.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac Polar1.java
実行
C:\talavax\javasample>java Polar1
実行例
角度を度単位で入力してください 45 原点からの距離を入力してください 100 x=70.71067811865476 y=70.71067811865474
Javaソースコードの解説
ここから、ソースを順番に説明していきます。
001
import java.util.Scanner;
003
public class Polar1 {
クラス名を、Polar1としています。
004
public static void main( String[] args ) {
このmainメソッドからプログラムを実行します。
005 006
// Scannerを作成
Scanner scan = new Scanner( System.in );
標準入力System.inを使って、Scannerクラスのscanを初期化しています。
008 009 010
// 角度の入力 System.out.println( "角度を度単位で入力してください" ); double deg = scan.nextDouble();
角度の入力部分です。
nextDoubleメソッドで、キーボードから入力された1行を読み取り、その値をdouble型の変数degに代入しています。
ここで、入力待ち状態になり、Enterキーが押されるまでに入力した値が変数degに格納されます。
012 013 014
// 原点からの距離の入力 System.out.println( "原点からの距離を入力してください" ); double r = scan.nextDouble();
原点からの距離の入力部分です。
nextDoubleメソッドで、キーボードから入力された1行を読み取り、その値をdouble型の変数rに代入しています。
ここで、入力待ち状態になり、Enterキーが押されるまでに入力した値が変数rに格納されます。
016 017
// 度をラジアンに変換 double rad = Math.toRadians( deg );
度単位の角度degをラジアンradに変換しています。変換にはMath.toRadiansメソッドを使っています。
Math.toRadiansメソッド
public static double Math.toRadians( double a )
・引数aで指定した角度をラジアンに変換した値を返します。 パラメータ a : 角度(単位:度)[ 戻り値 ラジアン
019 020
// xの計算 double x = r * Math.cos( rad );
ラジアン単位の角度radと、原点からの距離rからx座標を計算しています。計算にMath.cosメソッドを使っています。
Math.cosメソッド
public static double Math.cos( double a )
・引数aで指定した角度の余弦 (コサイン) を返します。 パラメータ a : ラジアンで指定した角度。 戻り値 aの余弦
022 023
// yの計算 double y = r * Math.sin( rad );
ラジアン単位の角度radと、原点からの距離rからy座標を計算しています。計算にMath.sinメソッドを使っています。
Math.sinメソッド
public static double Math.sin( double a )
・引数aで指定した角度の正弦 (サイン) を返します。 パラメータ a : ラジアンで指定した角度。 戻り値 aの正弦
025 026
// xとyをコンソール出力 System.out.println( "x=" + x + " y=" + y );
xとyをprintlnメソッドでコンソール出力しています。
以上です。
次に読んでほしいコンテンツ
円の中心座標(0,0)、半径rで表される円の円周上のランダムな座標を求めるJavaのソースコードを紹介しています。ラジアンを乱数で発生して座標を計算しています。
円の中心座標(0,0)、半径rで表される円の円周上のランダムな座標を求めるJavaのソースコードを紹介しています。度単位の角度の乱数をラジアンに変換して座標を計算しています。