我只是陷入了奇怪的计算中。
我试图通过使用本网站提到的这个公式来查找纬度和经度的距离。
http://www.movable-type.co.uk/scripts/latlong.html
当我通过计算器执行此操作时,每件事情都很好但是当我开始通过编程方式执行此操作时,结果会有所不同。
这是我的代码部分
lat = Convert.ToDouble( (s3[a]));
longt =Convert.ToDouble( (s4[a]));
Avg_lat = pc._Latitude - lat;
Avg_longt = pc._Longitude - longt;
a_hold =( Math.Sin(Avg_lat / 2) * Math.Sin(Avg_lat / 2) )+ (Math.Cos(pc._Latitude) * Math.Cos(lat)) * (Math.Sin(Avg_longt / 2) * Math.Sin(Avg_longt / 2));
c_hold = 2 * Math.Atan2(Math.Sqrt(a_hold), Math.Sqrt(1 - a_hold));
// c_hold = (c_hold * 180) / 3.12;
distance = 6371 * c_hold;
问题是这里的数学函数以弧度计算我希望它的度数。所以我刚刚找到了一个将弧度转换为度数的公式,但该公式不能正确转换计算。
我只是很困惑该怎么做bcoz没有任何其他选项将弧度转换为度数。
答案 0 :(得分:3)
您是否正确转换并在所有必要的地方?正确的弧度到度数公式是乘以(180.0 / Math.PI)
,度数到弧度的公式是乘以(Math.PI / 180.0)
。
您需要对Math.Sin
和Math.Cos
的参数进行度数到弧度的转换。如果您尝试在度数模式下模拟科学计算器的输出,则需要对Math.Atan2
的返回值进行弧度到度数的转换,但是您链接到的网页上的公式表示不这样做(仅转换输入)。
答案 1 :(得分:1)
您可以找到一个函数的Java实现,该函数计算LinkedIn's datafu项目中两个纬度 - 经度对之间的距离。
答案 2 :(得分:0)
您的计算器将有一个弧度选项,因此您可以验证转换。
Radians = Degrees * PI / 180