| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > вычисление дуги сферы если известны положения двух |
| Автор: tennisru 16.1.2012, 16:49 |
| B первой строке действительное число - радиус планеты (не более 10 000). Во второй строке координаты : долгота в градусах, минутах и секундах (целые числа) , буква w или e - соответствано западной или восточной, широта в градусах, минутах и секундах, буква n или s - соответственно северной или южной. как это вычислить? пример 6374.0 (координата второй)0 0 0 w 0 0 0 s (координата второй) 1 0 0 w 0 0 0 s ответ111.247 |
| Автор: Akina 16.1.2012, 16:51 |
| Разности координат переводишь в угол между направлениями в точки из центра... |
| Автор: Pavia 16.1.2012, 18:42 |
| Планету рассматриваем как сферу. Берёшь две точки. Переводишь из сферических координат в прямоугольную систему координат. С центром в центре планеты. Вычисляешь угол между этими двумя векторами используя скалярное произведение векторов. Зная угол находим длину дуги, через формулу окружности. Длина окружности будет 2*pi*r полный угол 2*pi. Второй способ через сферическую геометрию(криволинейную геометрию) http://ru.wikipedia.org/wiki/Сферическая_тригонометрия |
| Автор: tennisru 16.1.2012, 20:34 |
| Можно спросить а как переводить изсферических координат в прямоугольную систему координат? |
| Автор: Pavia 16.1.2012, 21:03 |
| Простая проекционная задача. X=R*Cos(B)*Cos(L) Y=R*Cos(B)*Sin(L) Z=R*Sin(B) B - широта L - долгота |
| Автор: _Y_ 16.1.2012, 23:59 |
| А разве нельзя посчитать сразу? Просто находим угол в градусах между радиусами планеты, идущими к двум точкам. А дальне длина окружности 2*пи*R соответствует 360 градусам, а дрина дуги пропорционально меньше. Понятное дело, что в этом случае допускаем, что земля шарообразна, а вовсе не имеет форму чемодана, как это есть на самом деле. Добавлено через 10 минут и 23 секунды По-моему http://hea.iki.rssi.ru/~nik/astro/spher.htm как найти угол между векторами сразу в сферических координатах. На второй картинке нарисованы три вектора. Для Вашей задачи за третий вектор берем нулевую ось (координаты 0, 0). Углы двух других векторов от нуля известны (координаты на глобусе). Надо только преобразовать уравнения и получить третий угол. Впрочем, сейчас вечер и проверять это предположение мне влом. Может быть, чтобы упростить задачу, за третью ось лучше взять какой-то другой радиус, из которого легче будет считать углы. |
| Автор: tennisru 17.1.2012, 00:30 |
| а равзе не надо учитывать где мы сейчас находимся на какой долготе и широте? |
| Автор: tennisru 17.1.2012, 15:39 | ||
отлично как это сделать для сферичеуского треугольника? |
| Автор: Pavia 17.1.2012, 18:17 |
| tennisru, Ты хочешь чтобы мы за тебя данные подставили в формулу? |
| Автор: _Y_ 17.1.2012, 22:56 |
| tennisru, Вам нужна формула (5) по той ссылке, которую я привел выше. В абзаце перед этой формулой все вроде описано. По этой формуле находите угловое расстояние a. Радиус сферы R у Вас уже есть. Поэтому расстояние в единицах длины считаете, как я уже писал: 2*пи*R*a/360 Ура школьной стереометрии! |
| Автор: tennisru 18.1.2012, 15:38 |
| не по теме: если ты и вправду школьник |