【发布时间】:2011-12-21 10:06:32
【问题描述】:
我想计算 2 个地理点之间的距离,现在我的学校和我家之间。距离应接近 1200 米。
我得到了这些没有意义的值。
104.247784180256
35.017200205306295 (if I reverse lat and lon)
谷歌地图说:
51.987957 is N
5.911305 is O
是 51.987957 纬度还是经度?根据我从哪里获得 GPS 信号的文档,应该是纬度,但我对此表示怀疑。
float R = 6371; // km
// 104.247784180256
float lat1 = 5.894213; // school
float lon1 = 51.98381; // school
float lat2 = 5.909912; // keuken
float lon2 = 51.988781; // keuken
// switched > distance = 35.017200205306295
/*
float lon1 = 5.894213; // school
float lat1 = 51.98381; // school
float lon2 = 5.909912; // keuken
float lat2 = 51.988781; // keuken
*/
void setup() {
double d = calculateDistance( lon1, lat1, lon2, lat2);
println(d);
}
double calculateDistance(float lon1, float lat1, float lon2, float lat2) {
double d = Math.acos(Math.sin(lat1)*Math.sin(lat2) +
Math.cos(lat1)*Math.cos(lat2) *
Math.cos(lon2-lon1)) * R;
return d;
}
【问题讨论】:
-
关于第二个查询,您可以选择您想要的文本部分作为代码,然后单击文本区域上方提供的{}选项以及其他选项,如粗体等。
-
您可以通过选择所有代码并按下窗口顶部的 {} 按钮来发布代码 ^_^