Геометрия: найти точку на определенном расстоянии между двумя точками - PullRequest
6 голосов
/ 05 августа 2010

Это похоже на этот вопрос , но вроде наоборот.

У меня есть две географические точки (широта, долгота) A и B. Допустим, они на расстоянии 40 морских миль друг от друга. Я хотел бы рассчитать координаты точки в 10 морских милях от точки А, на линии между А и В. Я уверен, что это очень базовая математика, но это были ГОДЫ, так как я должен был сделать этот вид математика (некоторые другие виды, которые я использую ежедневно), поэтому я застрял. Любые указатели будут с благодарностью. Мой код для этого проекта написан на Python, но математика не зависит от языка, поэтому меня это не особо беспокоит - я просто хочу знать формулу.

Ответы [ 4 ]

7 голосов
/ 05 августа 2010

У вас есть два вектора положения с (широта, долгота). Из них вы можете рассчитать направление из точки А в точку Б (если вы еще этого не знаете). С азимутом и расстоянием вы можете рассчитать ваши новые широту и долготу.

Вся математика, которую вам нужно знать, приведена здесь: http://www.movable -type.co.uk / scripts / latlong.html . Я имею дело с этим материалом так редко, что приятно сохранить эту ссылку где-нибудь (читай: напечатано).

4 голосов
/ 05 августа 2010

Итак, это что-то вроде:

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

Чтобы сделать это, сначала нужно найти угол этой линии:

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

, затем с учетом расстояния между А и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

Возможно, я перепутал знаки, поэтому, если это не сработает, измените + на -.

0 голосов
/ 17 мая 2018

Вы можете использовать мой простой пакет, чтобы помочь вам: Ссылка: 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'}))
0 голосов
/ 05 августа 2010

Я считаю, что Формула Хаверсин может быть применена здесь.Если это поможет, я реализовал это в C #, Java и Javascript?

...