Этот метод достаточно точен только для небольших расстояний, потому что кривизна Земли не учитывается. Вы можете преобразовать псевдосферические координаты в плоские координаты, но другой метод, вероятно, будет лучше для случаев, когда расстояние велико и необходима точность.
Ключ заключается в расчете общего расстояния между начальной и конечной точками. Вы можете использовать евклидово расстояние, но, как указано, это достаточно точно только для меньших расстояний:
distance = sqrt((end.x - start.x) ** 2 + (end.y - start.y) ** 2)
Затем вы знаете, сколько времени потребуется, чтобы пройти весь путь:
timeToTravelDistance = distance / speed
Исходя из этого, вы можете рассчитать процент расстояния, которое вы прошли от start
до end
с учетом time
:
percentageTraveled = time / timeToTravelDistance
Наконец, интерполировать:
result.x = start.x * (1 - percentageTraveled) + end.x * percentageTraveled
result.y = start.y * (1 - percentageTraveled) + end.y * percentageTraveled