Just for fun
Даны координаты двух точек \(A(\alpha_A, \beta_A)\) и \(B(\alpha_B, \beta_B)\) на земной поверхности, где \(\alpha\) - это широта, а \(\beta\) - долгота. Найти расстояние \(S\) между точками \(A\) и \(B\) на Земле (сфере).
Приведем географические координаты \(\alpha\) и \(\beta\) к декартовой системе координат, для чего найдем \(x\), \(y\) и \(z\). Начало декартовой системы расположено в центре Земли. Ось \(z\) направлена вдоль оси вращения к северному полюсу. Ось \(x\) \(-\) к нулевому меридиану.
$$x=R\cdot \cos \alpha \cdot \cos\beta$$ $$y=R\cdot \cos \alpha \cdot \sin\beta$$ $$z=R\cdot \sin \alpha$$ где \(R\) \(-\) радиус Земли (сферы).
Уравнение кривой проходящей через две точки имеет вид: $$\frac{x-x_1}{x_2-x_1}=\frac{y-y_1}{y_2-y_1}=\frac{z-z_1}{z_2-z_1}$$
Тогда уравнение прямой, проходящей через центр Земли и одну из двух точек будут иметь вид: $$\frac{x}{x_A}=\frac{y}{y_A}=\frac{z}{z_A}$$ $$\frac{x}{x_B}=\frac{y}{y_B}=\frac{z}{z_B}$$ где: $$x_A=R\cdot \cos \alpha_A \cdot \cos\beta_A$$ $$y_A=R\cdot \cos \alpha_A \cdot \sin\beta_A$$ $$z_A=R\cdot \sin \alpha_A$$ $$x_B=R\cdot \cos \alpha_B \cdot \cos\beta_B$$ $$y_B=R\cdot \cos \alpha_B \cdot \sin\beta_B$$ $$z_B=R\cdot \sin \alpha_B$$
Угол между двумя прямыми можно найти с помощью следующего уравнения: $$\cos \gamma=\frac{m_1m_2+n_1n_2+p_1p_2}{\sqrt{m_1^2+n_1^2+p_1^2}\cdot\sqrt{m_2^2+n_2^2+p_2^2}}$$
Тогда угол между двумя прямыми \(OA\) и \(OB\) будет: $$\cos \gamma=\frac{x_Ax_B+y_Ay_B+z_Az_B}{\sqrt{x_A^2+y_A^2+z_A^2}\cdot\sqrt{x_B^2+y_B^2+z_B^2}}$$
Длина дуги вычисляется с помощью уравнения: $$s=\gamma R$$
Тогда расстояние между точками \(A\) и \(B\) на сфере (Земле) будет равно: \begin{multline*} s=\arccos \left( \frac{x_Ax_B+y_Ay_B+z_Az_B}{\sqrt{x_A^2+y_A^2+z_A^2}\cdot\sqrt{x_B^2+y_B^2+z_B^2}}\right) \cdot R=\\ \arccos \left(\frac{x_Ax_B+y_Ay_B+z_Az_B}{R^2}\right) \cdot R=\\ \arccos (\cos \alpha_A \cdot \cos\beta_A \cdot \cos \alpha_B \cdot \cos\beta_B +\\ \cos \alpha_A \cdot \sin\beta_A \cdot \cos \alpha_B \cdot \sin\beta_B + \sin \alpha_A \cdot \sin \alpha_B) \cdot R \end{multline*}