2021.02.18
中点
中点とは
次に、中点の座標が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ソースコード
MidPoint1.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 029 030 031 032 033 034 035
public class MidPoint1 { // 中点座標 mxを計算するメソッド public static double midpoint_x( double x1, double x2 ) { return ( x1 + x2 ) / 2.0; } // 中点座標 myを計算するメソッド public static double midpoint_y( double y1, double y2 ) { return ( y1 + y2 ) / 2.0; } public static void main( String[] args ) { double x1, y1; // 1つ目の座標 double x2, y2; // 2つ目の座標 double mx, my; // 中点の座標 // 1つ目の座標 x1 = 52.0; y1 = 30.4; // 2つ目の座標 x2 = 143.0; y2 = 12.3; // 中点の座標計算 mx = midpoint_x( x1, x2 ); my = midpoint_y( y1, y2 ); // 結果表示 System.out.println( "中点の座標は(" + mx + "," + my + ")です" ); } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis MidPoint1.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac MidPoint1.java
実行
C:\talavax\javasample>java MidPoint1
実行結果
中点の座標は(97.5,21.35)です。
次のJavaソースコードは、MidPoint2.java中点座標を計算するメソッドを変更して、x座標とy座標を戻すようにしたものです。Javaのメソッドはreturn文で値を1つだけしか返せませんが、配列を使えば複数の値を戻すことができます。以下の例では、double型の配列の1番目にx座標、2番目にy座標を格納しています。
MidPoint2.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 029 030 031 032
public class MidPoint2 { // 中点座標 mx,myを計算するメソッド public static void midpoint( double[] m, double x1, double y1, double x2, double y2 ) { m[ 0 ] = ( x1 + x2 ) / 2.0; m[ 1 ] = ( y1 + y2 ) / 2.0; } public static void main( String[] args ) { double x1, y1; // 1つ目の座標 double x2, y2; // 2つ目の座標 double[] m; // 中点の座標 // 1つ目の座標 x1 = 52.0; y1 = 30.4; // 2つ目の座標 x2 = 143.0; y2 = 12.3; // 中点の座標計算 m = new double[ 2 ]; midpoint( m, x1, y1, x2, y2 ); // 結果表示 System.out.println( "中点の座標は(" + m[ 0 ] + "," + m[ 1 ] + ")です" ); } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis MidPoint2.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac MidPoint2.java
実行
C:\talavax\javasample>java MidPoint2
実行結果
中点の座標は(97.5,21.35)です
以上です。