フリーソフト

« [Delphi] 2地点の緯度経度からその間の距離を計算する | トップページ | [Delphi] 仮想キーコード »

[Delphi] 2地点の緯度経度から方位を計算する

球面三角法を利用した方位の計算です。

uses Math;

// 引数
//  Lon1 地点1の経度(度)
//  Lat1 地点1の緯度(度)
//  Lon2 地点2の経度(度)
//  Lat2 地点2の緯度(度)
//
//   北緯は0~90度、南緯は-90~0度
//   東経は0~180度、西経は-180~0度
//
// 戻り値
//  地点1から見た地点2の方位(度)
function GetDirection(Lon1:Double; Lat1:Double; Lon2:Double; Lat2:Double):Double;
var
 Lon1Rad, Lat1Rad, Lon2Rad, Lat2Rad:Double;
 LonDiff:Double;
 X,Y:Double;
 Direction:Double;
begin
 //ラジアンに変換
 Lon1Rad := Lon1 * PI / 180;
 Lat1Rad := Lat1 * PI / 180;
 Lon2Rad := Lon2 * PI / 180;
 Lat2Rad := Lat2 * PI / 180;

 LonDiff := Lon2Rad - Lon1Rad;

 Y := Cos(Lat2Rad)*Sin(LonDiff);
 X := Cos(Lat1Rad)*Sin(Lat2Rad) - Sin(Lat1Rad)*Cos(Lat2Rad)*Cos(LonDiff);
 Direction := ArcTan2(Y, X);

 Direction:=Direction*180/PI;
 if Direction < 0 then Direction:=Direction+360;

 Result:=Direction;
end;

« [Delphi] 2地点の緯度経度からその間の距離を計算する | トップページ | [Delphi] 仮想キーコード »

Delphi」カテゴリの記事

アルゴリズム」カテゴリの記事

コメント

この記事へのコメントは終了しました。