2012年10月15日 星期一
C# 兩個經緯度計算相對方位角度
public String getRetangle(String[] loc1, String[] loc2)
{
double d = 0;
double lat_a= double.Parse(loc1[0]);
double lng_a= double.Parse(loc1[1]);
double lat_b= double.Parse(loc2[0]);
double lng_b = double.Parse(loc2[1]);
lat_a = lat_a * Math.PI / 180;
lng_a = lng_a * Math.PI / 180;
lat_b = lat_b * Math.PI / 180;
lng_b = lng_b * Math.PI / 180;
d = Math.Sin(lat_a) * Math.Sin(lat_b) + Math.Cos(lat_a) * Math.Cos(lat_b) * Math.Cos(lng_b - lng_a);
d = Math.Sqrt(1 - d * d);
d = Math.Cos(lat_b) * Math.Sin(lng_b - lng_a) / d;
d = Math.Asin(d) * 180 / Math.PI;
String direction = "";
if (d >= 0)
{
direction += "東";
}
else
{
direction += "西";
}
if (Math.Abs(d) >= 90)
{
direction += "北";
}
else
{
direction += "南";
}
if (d > 90 && d <= 180)
{
d = d - 90;
}
else
{
d = d + 270;
}
return direction +"角度為:"+Math.Ceiling(d).ToString();
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言