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