В следующем ответе предполагается, что ваши координаты находятся на сфере, а не на эллипсоиде.
Ваш вход содержит набор точек на большом круге между двумя точками p и q с координатами по долготе и широте:
p = {φ<sub>p</sub>,λ<sub>p</sub>} = {-78.0599088, -11.89402416}
q = {φ<sub>q</sub>,λ<sub>q</sub>} = {-77.38064244, -11.5446833099999}
Вызов n p единичный вектор p и n q единичный вектор q , тогда его координаты:
<i><b>n</b></i><sub>p</sub> = {cos(φ<sub>p</sub>) cos(λ<sub>p</sub>),cos(φ<sub>p</sub>) sin(λ<sub>p</sub>),sin(φ<sub>p</sub>)}
<i><b>n</b></i><sub>q</sub> = {cos(φ<sub>q</sub>) cos(λ<sub>q</sub>),cos(φ<sub>q</sub>) sin(λ<sub>q</sub>),sin(φ<sub>q</sub>)}
Вызовите α, а затем угол между n p и n q
α = arccos(<i><b>n</b></i><sub>p</sub>·<i><b>n</b></i><sub>q</sub>)
Если теперь вы хотите, чтобы n точек находились на одинаковом расстоянии между p и q , вы должны разделить их под углом Δα= α / (n-1).
Тогда координаты этих точек:
<i><b>n</b></i><sub>i</sub> = <i><b>n</b></i><sub>p</sub> cos(i Δα) + <i><b>n</b></i><sub>r</sub> sin(i Δα)
<i><b>n</b></i><sub>r</sub> = Normalized[<i><b>n</b></i><sub>q</sub> - (<i><b>n</b></i><sub>q</sub>·<i><b>n</b></i><sub>p</sub>) <i><b>n</b></i><sub>p</sub>] = (<i><b>n</b></i><sub>q</sub> - cos(α) <i><b>n</b></i><sub>p</sub>) / sin(α)
для i ∈ [0, n-1].Вышеизложенное понимается как простое вращение над iΔα из n p в n p - n r плоскость ( n p · n r = 0)
Эти координаты могут затем быть преобразованы обратно в долготу и широту, давая вам все промежуточные точки.
примечание: Это для эквидистантных точек на сфере, а не эллипсоида, таких как WGS 84
примечание: Сказанное выше не удастся для антиподальных точек.
Очень хороший справочник - Авиационный справочник Эда Уильяма