【发布时间】:2016-01-22 21:26:28
【问题描述】:
我有 3 个坐标及其纬度和经度。如果从 A 到 B 画一条线,我想检查第三个点是否正好在从 A 和 B 画的线上。
或者我们可以将这个问题改写为:连接三个坐标应该给我一条直线而不是三角形。
我只想在服务器上做这个计算。
【问题讨论】:
-
定义“直线”。 (提示:地球不是平的……)
-
如果你愿意牺牲一些精度或者坐标之间的距离不是那么大,我想你可以使用简单的三角几何。也就是说,使用 {AB,AC,BC} 之间的长度(即以米为单位)来找到由三个点组成的三角形的高度。高度越低,点“适合”到 A 和 B 的线段上就越好。
-
另一个,可能更简单的想法: isOntheLine = (dist(A,B) ~= dist(A,C)+dist(C,B)) ,再次使用 ~ 来表示你不能期望它是准确的。而是由于在距离计算等期间的投影而具有可接受的误差范围。
标签: java android google-maps geospatial geo