RNAInSpace/Сферическое кратчайшее расстояние: различия между версиями
Содержимое удалено Содержимое добавлено
SSJ (обсуждение | вклад) Нет описания правки |
SSJ (обсуждение | вклад) |
||
Строка 12:
=== Ответ ===
Расстояние между точками (x1,y1,z1) и (x2,y2,z2) с нужными свойствами выглядит так:
<poem>
r1=sqrt(x1*x1+y1*y1+z1*z1);
r2=sqrt(x2*x2+y2*y2+z2*z2);
a=acos((x1*x2+y1*y2+z1*z2)/r1/r2);
b=ln(r1/r2);
return sqrt(a*a+b*b);
</poem>
То есть, мы вычисляем центральный угол между точками, логарифм отношения их расстояний до центра и возвращаем корень из суммы их квадратов. Для точек на сфере «расстояние» будет равно центральному углу между ними, а если мы от сферы отойдём, то расстояние увеличится.
== Расстояние между двумя точками на сфере ==
|