2020.03.23

数学

2点間の距離計算

2点間の距離(2次元)とは、2つの座標(x1,y1)と(x2,y2)を結ぶ直線距離のことです。

下の図は、(x1,y1)と(x2,y2)を結んだ直線と、その距離lを表したものです。

2点間の距離2点間の距離

Javaソースコード

Distance.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
036
public class Distance {
	public static void main( String[] args ) {
		double x1, y1;
		double x2, y2;

		// 1つ目の座標を代入
		x1 = 60.0;
		y1 = 20.0;

		// 2つ目の座標を代入
		x2 = 10.0;
		y2 = 40.0;

		// 結果を表示
		System.out.println( dist( x1, y1, x2, y2 ) );
	}


	// (x1,y1)-(x2,y2)の直線距離を計算するメソッド
	private static double dist( double x1, double y1, double x2, double y2 )
	{
		double l;
		double dx, dy;

		// x座標の差を計算してdxに代入
		dx = x2 - x1;
		// y座標の差を計算してdyに代入
		dy = y2 - y1;

		// 2点間の距離を計算してlに代入
		l = Math.sqrt( dx * dx + dy * dy );

		// 計算した距離を返す
		return l;
	}
}

実行結果

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis Distance.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac Distance.java

実行

C:\talavax\javasample>java Distance
53.85164807134504

Javaソースコードの解説

以下の部分が、2点間の距離を計算するメソッドです。

019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
	// (x1,y1)-(x2,y2)の直線距離を計算するメソッド
	private static double dist( double x1, double y1, double x2, double y2 )
	{
		double l;
		double dx, dy;

		// x座標の差を計算してdxに代入
		dx = x2 - x1;
		// y座標の差を計算してdyに代入
		dy = y2 - y1;

		// 2点間の距離を計算してlに代入
		l = Math.sqrt( dx * dx + dy * dy );

		// 計算した距離を返す
		return l;
	}

この計算には、ピタゴラスの定理を使用しています。ピタゴラスの定理は、直角三角形の3辺の長さの関係を表したもので、斜辺の長さの2乗は、他の2つの辺の長さをそれぞれ2乗して値の和(合計)と同じになるというものです。

下の図は、2つの座標間の距離を計算する方法を示した図で、l2点間の距離で、dxがX方向の差を、dyがY方向の差を表しています。これをピタゴラスの定理に当てはめると、lが斜辺、dxdyがその他の2辺です。2点の座標の位置関係によって、2つの辺の長さ(dxとdy)がマイナス(-)の値になることがありますが、これらの値は計算時に2乗するので、結果的に符号が無視され、正しい結果が得られます。

実際に、ソースコードに書かれている数値で、解説していきます。

006
007
008
009
010
011
012
		// 1つ目の座標を代入
		x1 = 60.0;
		y1 = 20.0;

		// 2つ目の座標を代入
		x2 = 10.0;
		y2 = 40.0;

dxは、x2 - x1で計算しているので、dx= 10.0 - 60.0 = -50.0です。dyは、y2-y1で計算しているので、dy=40.0-20.0=20.0です。

2点間の距離lは、dxの2乗とdyの2乗を足した値の平方根なので、dxの2乗= -50.0 x -50.0 = 2500.0と、dyの2乗= 20.0 x 20.0 = 400.0を足した2500.0 + 400.0 = 2900.0平方根53.85164807134504が、2点間の距離として計算されます。

以上です。

次のコンテンツ

2つのXYZ座標(x1,y1,z1)と(x2,y2,z2)の直線距離を求める計算式は?

2020.03.23

関連コンテンツ

数学に関係するJavaのメソッドやソースコードなどを紹介しています。

2022.10.25

平方根の意味と、Math.sqrtメソッドの使い方をソースコードを使って詳しく解説しています。

2020.03.23

値の2乗を計算するメソッドの作り方を解説しています。

2020.03.23

日本で使われてきた伝統文様「和柄」について解説しています。

2022.07.27

プログラミング、ITに関する用語をまとめています。

2022.10.17

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

メソッドを抜けるときに使用するreturn文について説明しています。

2020.03.20

プログラムの最初に実行されるメソッドは?

2022.12.13

プログラミングで使う変数って何?

2020.03.23

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

2つのXYZ座標(x1,y1,z1)と(x2,y2,z2)の直線距離を求める計算式は?

2020.03.23

平面上の位置を表す座標系の1つXY座標系について詳しく解説。

2020.03.23

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

複数の数値の合計値と平均値を計算するプログラムをJavaのソースコードを使って解説しています。

2020.03.23

ピタゴラスの定理は、直角三角形の三辺の長さの関係を表すもので、2つの座標間の距離計算などに利用できます。興味がある方は、記事をご覧ください。

2020.03.23

三角形って何?

2022.07.26

指定した基準座標から、指定したマンハッタン距離にある座標に●を描画!

2023.02.15

円の直径と半径について図を使って詳しく解説しています。

2020.03.23

基準とする座標に最も近い座標を複数の座標から探す方法は?

2021.03.10

グラデーションって何?

2015.11.24

マンハッタン距離ってどんな距離?

2020.03.23

円の中に含まれる格子の数と格子の外の数から円周率πを計算する方法を紹介しています。図とJavaのソースコードでくわしく説明していますので、興味のある方は記事をご覧ください。

2020.12.22

画像の幅と高さを指定して黒く塗りつぶした円を描画する方法を紹介しています。Javaのソース付きです。

2019.11.11

平面上の位置を表す座標系の1つ極座標系について詳しく解説。

2016.03.05

画像を、幾何学模様のカラフルなガラスを張って作られたような画像に変換する方法を解説しています。ソースコード付きです。

2017.03.01

テキストで塗りつぶし円を表現する方法を紹介します。興味のある方は是非ご覧ください。

2020.06.03

単位円の意味をくわしく解説しています。

2020.03.23

広告