Я решил до того, как проверять код на C#, сначала записать "своё видение".
Пусть даны точки

и

(здесь и далее указаны сферические координаты).
В новой метрике кратчайшим путем, соединяющим точки

и

, будет некоторая кривая, которая при

будет лежать на сфере.
Длину

этого пути можно найти так:

,
где

-- длина кратчайшей дуги на единичной сфере, соединяющей точки

и

. Эти точки -- "радиальные проекции" точек

и

на единичную сферу. Иначе -- пересечение луча, выходящего из центра сферы и проходящего соответственно через точку

или

, с единичной сферой.
Из описания понятно, что

-- это угол между лучами

и

(или, что то же самое, между

и

). Несложно найти явно:

Значит действительно с углами нельзя так просто, тогда
// сферические координаты первой точки
r_sf1 = Math.Sqrt(x1*x1 + y1*y1 + z1*z1); // расстояние до начала координат
theta1 = Math.Atan(Math.Sqrt(x1*x1 + y1*y1)/z1); // зенитный угол
varphi1 = Math.Atan(y1 / x1); // азимутальный угол
// сферические координаты второй точки
r_sf2 = Math.Sqrt(x2 * x2 + y2 * y2 + z2 * z2); // расстояние до начала координат
theta2 = Math.Atan(Math.Sqrt(x2 * x2 + y2 * y2) / z2); // зенитный угол
varphi2 = Math.Atan(y2 / x2); // азимутальный угол
// Искомое "расстояние"
r = Math.Sqrt((r_sf2 - r_sf1) * (r_sf2 - r_sf1) + Math.Acos( Math.Sin(theta1)*Math.Sin(theta2)*Math.Cos(varphi2-varphi1) + Math.Cos(theta1) * Math.Cos(theta2) ));
но соответствует ли это

? Или я чего то напутал ?
Т.е. правильно ли я понял, что

это тоже самое, что

?
Какие-то у меня сомнения
Цитата:
Если даны сферические координаты двух точек, то расстояние между ними можно найти так:

это по сути то, что вы выше пояснили, но тут же не учтено, то что мы "подкорректировали метрику" с
Цитата:

и слегка подправляем его:

-- Сб апр 28, 2012 19:46:46 --Здесь

-- характерное для Вашей задачи расстояние от центра сферы. Скажем, если Вы пишете что-то вроде имитатора полёта в Google Earth, то это средний радиус Земли. Однако

должно быть константой.
Вы действительно, хорошо поясняете :)
И это важное дополнение, это

получается коэффициент, который указывает по какому радиусу от центра должна огибаться траектория.