ヒュベニの公式(距離計算)

ヒュベニの公式の公式による2点間の距離計算です。単位は、メートルです。

	function HubenyDistance(lat1,lng1,lat2,lng2) {
		
		lat1 = lat1 * Math.PI / 180;
		lng1 = lng1 * Math.PI / 180;
		lat2 = lat2 * Math.PI / 180;
		lng2 = lng2 * Math.PI / 180;

		A = 6378137.000;
		B = 6356752.314140;
		e2 = (Math.pow(A,2) - Math.pow(B,2)) / Math.pow(A,2);

		N1 = A / Math.sqrt(1 - (e2) * Math.pow(Math.sin(lat1),2));
		N2 = A / Math.sqrt(1 - (e2) * Math.pow(Math.sin(lat2),2));
		N  = (N1 + N2) / 2;
		dx = N2 * Math.cos(lat2) * Math.cos(lng2) - N1 * Math.cos(lat1) * Math.cos(lng1);
		dy = N2 * Math.cos(lat2) * Math.sin(lng2) - N1 * Math.cos(lat1) * Math.sin(lng1);
		dz = N2 * (1 - e2) * Math.sin(lat2) - N1 * (1 - e2) * Math.sin(lat1);
		Rn = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2) + Math.pow(dz,2));

		F  = Math.asin(((Rn / 2) / N));

		return 2 * N * F;
	}