2020/03/23 公開
・中点
2次元座標の場合、与えられた2つの座標をそれぞれ(x1,y1)、(x2,y2)とすると中点の座標(mx,my)は、mx=(x1+x2)/2、my=(y1+y2)/2で計算されます。
次に、中点の座標がmx=(x1+x2)/2、my=(y1+y2)/2になる理由を説明します。
2つの座標(x1,y1)と(x2,y2)のxとyの差を求めるとそれぞれ(x2-x1)、(y2-y1)となります。この値を半分にしてx1とy1に足した値が中点の座標(mx,my)です(下図)。これを式で表すとmx=x1+(x2-x1)/2、my=y1+(y2-y1)/2となります。
さらに、これらの式を簡単にするとmx=x1+(x2-x1)/2はmx=(x1+x2)/2、my=y1+(y2-y1)/2はmx=(y1+y2)/2になります。
ここで、中点座標を計算するJavaソースコードを紹介します。このサンプルソースでは、2つの座標を固定値として記述しているので、コマンドパラメータで渡すことはできません。
中点座標を計算するメソッドは、x座標を計算するメソッドとy座標を計算するメソッドの2つを作成しました。引数と計算式は同じで2つの値を足して2で割っているだけです。
MidPoint1.java ← クリックしてダウンロードページに移動001: public class MidPoint1 { 002: // 中点座標 mxを計算するメソッド 003: public static double midpoint_x( double x1, double x2 ) 004: { 005: return ( x1 + x2 ) / 2.0; 006: } 007: 008: // 中点座標 myを計算するメソッド 009: public static double midpoint_y( double y1, double y2 ) 010: { 011: return ( y1 + y2 ) / 2.0; 012: } 013: 014: 015: public static void main( String[] args ) { 016: double x1, y1; // 1つ目の座標 017: double x2, y2; // 2つ目の座標 018: double mx, my; // 中点の座標 019: 020: // 1つ目の座標 021: x1 = 52.0; 022: y1 = 30.4; 023: 024: // 2つ目の座標 025: x2 = 143.0; 026: y2 = 12.3; 027: 028: // 中点の座標計算 029: mx = midpoint_x( x1, x2 ); 030: my = midpoint_y( y1, y2 ); 031: 032: // 結果表示 033: System.out.println( "中点の座標は(" + mx + "," + my + ")です" ); 034: } 035: }
MidPoint1を実行
C:\talavax\javasample>java MidPoint1
実行結果
中点の座標は(97.5,21.35)です
2つの座標(52.0,30.4)、(143.0,12.3)の中点座標が(97.5,21.35)として表示されます。2つの座標の値をいろいろと変えて試してみてください。
次のJavaソースコードは、MidPoint2.java中点座標を計算するメソッドを変更して、x座標とy座標を戻すようにしたものです。Javaのメソッドはreturn文で値を1つだけしか返せませんが、配列を使えば複数の値を戻すことができます。以下の例では、double型の配列の1番目にx座標、2番目にy座標を格納しています。
MidPoint2.java ← クリックしてダウンロードページに移動001: public class MidPoint2 { 002: // 中点座標 mx,myを計算するメソッド 003: public static void midpoint( double[] m, double x1, double y1, 004: double x2, double y2 ) 005: { 006: m[ 0 ] = ( x1 + x2 ) / 2.0; 007: m[ 1 ] = ( y1 + y2 ) / 2.0; 008: } 009: 010: 011: public static void main( String[] args ) { 012: double x1, y1; // 1つ目の座標 013: double x2, y2; // 2つ目の座標 014: double[] m; // 中点の座標 015: 016: // 1つ目の座標 017: x1 = 52.0; 018: y1 = 30.4; 019: 020: // 2つ目の座標 021: x2 = 143.0; 022: y2 = 12.3; 023: 024: // 中点の座標計算 025: m = new double[ 2 ]; 026: midpoint( m, x1, y1, x2, y2 ); 027: 028: // 結果表示 029: System.out.println( "中点の座標は(" + m[ 0 ] + "," 030: + m[ 1 ] + ")です" ); 031: } 032: }
MidPoint2を実行
C:\talavax\javasample>java MidPoint2
実行結果
中点の座標は(97.5,21.35)です
MidPoint1.javaと同じ結果が得られました。このことから配列の値がメソッドで変更されていることがわかります。
■関連コンテンツ
Javaの配列 | 同じ型の変数をまとめた配列について解説 |
メソッド | メソッドについて解説 |
値のコンソール表示 | print()、println()とは? |
三角関数 計算方法 | Mathを使わない三角関数 計算方法 |
計算結果の表示足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)の使い方を説明 |
■新着情報
2022.07.07 | 外部プログラムの実行 | exeファイル実行 |
2022.07.06 | 完全数 | 6=1+2+3 |
■広告