Javaプログラミング学習サイト ゆるゆるプログラミング

2020/03/23 公開

・中点

中点とは、2つの座標の真ん中の座標のことです。

2次元座標の場合、与えられた2つの座標をそれぞれ(x1,y1)、(x2,y2)とすると中点座標(mx,my)は、mx=(x1+x2)/2my=(y1+y2)/2で計算されます。

中点

次に、中点座標mx=(x1+x2)/2my=(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

■広告

Topへ