几何:找到两点之间的特定距离

时间:2010-08-05 04:22:41

标签: math geometry geospatial

这类似于this question,但恰恰相反。

我有两个地理点(纬度,经度)A和B.假设他们相距40海里。我想计算A点和B点之间A点10海里点的坐标。我确定这是非常基本的数学,但是因为我不得不这样做了数学(我每天使用的其他一些种类),所以我被卡住了。任何指针都将非常感激。我的这个项目的代码是用Python编写的,但数学并不是特定于语言的,所以我并不是真的关心它 - 我只是想知道这个公式。

4 个答案:

答案 0 :(得分:7)

你有两个位置向量(纬度,经度)。从那些你可以计算你从A点到B点的方位(如果你还不知道它)。通过方位和距离,您可以计算新的纬度和经度。

此处引用了您需要知道的所有数学:http://www.movable-type.co.uk/scripts/latlong.html。我很少处理这些东西,很高兴将链接保存在某处(阅读:打印)。

答案 1 :(得分:4)

所以,它就像是:

 x B (x2,y2)
  \
   \
    \
     \
      x C (x3, y3)
       \
        \
         \
          X A (x1,y1)

我这样做的方法是首先找到该线的角度:

angle_A_B = arctan((y2-y1)-(x2-x1))

然后给出A和C之间的距离是已知的(让我们称之为distance_A_C):

sin(angle_A_B) = delta_x_A_C / distance_A_C
delta_x_A_C = distance_A_C * sin(angle_A_B)

因此:

x3 = x1+delta_x_A_C

y3的值相同:

delta_y_A_C = distance_A_C * cos(angle_A_B)

因此:

y3 = y1+delta_y_A_C

我可能已经将这些符号混合在一起,如果它不起作用,请将+更改为-

答案 2 :(得分:0)

我相信Haversine Formula可以在这里应用。如果它有助于我用C#,Java和Javascript实现它?

答案 3 :(得分:0)

您可以使用我的简单包来帮助您: 链接:https://www.npmjs.com/package/haversine-calculator

const haversineCalculator = require('haversine-calculator')

const start = {
  latitude: -23.754842,
  longitude: -46.676781
}

const end = {
  latitude: -23.549588,
  longitude: -46.693210
}

console.log(haversineCalculator(start, end))
console.log(haversineCalculator(start, end, {unit: 'meter'}))
console.log(haversineCalculator(start, end, {unit: 'mile'}))
console.log(haversineCalculator(start, end, {threshold: 1}))
console.log(haversineCalculator(start, end, {threshold: 1, unit: 'meter'}))
console.log(haversineCalculator(start, end, {threshold: 1, unit: 'mile'}))