@cat_crash

Как описать квадратом окружность, имея координаты точки и радиус?

Доброго дня.

Помогите решить задачку на PHP
- Имеется геокоординаты точки (Lat/Lon) и Радиус в метрах.
Как найти геокоординаты квадрата, описывающего окружность ?

Перечитал куду документации по конвертации Метрической системы в сферические геокоординаты, но ни один алгоритм не показал правильных результатов (тестировал на либе Leaflet)
  • Вопрос задан
  • 3287 просмотров
Пригласить эксперта
Ответы на вопрос 1
Mrrl
@Mrrl
Заводчик кардиганов
Так и не решили? Интересная задачка.
Предположим, что Земля шарообразная и её радиус RE. Радиус нашей окружности R, координаты точки выражены в радианах.
Определим r=R/RE (это радиус в радианах).
Расстояние от центра окружности до вершины описанного квадрата - a=arctg(sqrt(2)*tg(r)) (под квадратом понимается правильный сферический 4-угольник?)
Теперь нам надо отступить от нашей точки на расстояние a под углом 45 гр к меридиану.
Пусть P - северный полюс, O - центр окружности, A - вершина квадрата на северо-востоке.
У треугольника AOP длина стороны OP=pi/2-Lat, AO=a, угол POA=pi/4. Отсюда, по 1-й теореме косинусов,
AP=arccos(cos(AO)*cos(OP)+sin(AO)*sin(OP)*cos(AOP))=arccos(cos(a)*sin(Lat)+sqrt(0.5)*sin(a)*cos(Lat)). Получаем h1=pi/2-AP - широта точки A.
Угол APO найдём по теореме синусов: sin(APO)/sin(AO)=sin(AOP)/sin(AP), откуда APO=d1=arcsin(sin(a)*sqrt(0.5)/cos(h1)). Долгота точки A будет Lon+d1, а координаты северо-западной вершины D - (h1,Lon-d1).
С южными вершинами поступаем аналогично (только там угол будет 135 гр):
BP=arccos(cos(a)*sin(Lat-sqrt(0.5)*sin(a)*cos(Lat)), h2=pi/2-BP.
BPO=d2=arcsin(sin(a)*sqrt(0.5)/cos(h2)).
Координаты точек B и C - (h2,Lon+d2) и (h2,Lon-d2).
Если надо учитывать сплюснутость Земли, или под квадратом понималось нечто иное, то нужны более конкретные условия.
Кстати, если радиус окружности будет больше четверти экватора, то вершины описанного квадрата окажутся внутри круга. Такая уж сферическая геометрия.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы