![]() |
|
|
![]()
|
|
| tennisru |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.12.2011 Репутация: нет Всего: нет |
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 |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Разности координат переводишь в угол между направлениями в точки из центра...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Планету рассматриваем как сферу.
Берёшь две точки. Переводишь из сферических координат в прямоугольную систему координат. С центром в центре планеты. Вычисляешь угол между этими двумя векторами используя скалярное произведение векторов. Зная угол находим длину дуги, через формулу окружности. Длина окружности будет 2*pi*r полный угол 2*pi. Второй способ через сферическую геометрию(криволинейную геометрию) Сферическая_тригонометрия Это сообщение отредактировал(а) Pavia - 16.1.2012, 21:13 |
|||
|
||||
| tennisru |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.12.2011 Репутация: нет Всего: нет |
Можно спросить а как переводить изсферических координат в прямоугольную систему координат?
|
|||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Простая проекционная задача.
X=R*Cos(B)*Cos(L) Y=R*Cos(B)*Sin(L) Z=R*Sin(B) B - широта L - долгота |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
А разве нельзя посчитать сразу?
Просто находим угол в градусах между радиусами планеты, идущими к двум точкам. А дальне длина окружности 2*пи*R соответствует 360 градусам, а дрина дуги пропорционально меньше. Понятное дело, что в этом случае допускаем, что земля шарообразна, а вовсе не имеет форму чемодана, как это есть на самом деле. Добавлено через 10 минут и 23 секунды По-моему вот здесь описано как найти угол между векторами сразу в сферических координатах. На второй картинке нарисованы три вектора. Для Вашей задачи за третий вектор берем нулевую ось (координаты 0, 0). Углы двух других векторов от нуля известны (координаты на глобусе). Надо только преобразовать уравнения и получить третий угол. Впрочем, сейчас вечер и проверять это предположение мне влом. Может быть, чтобы упростить задачу, за третью ось лучше взять какой-то другой радиус, из которого легче будет считать углы. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| tennisru |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.12.2011 Репутация: нет Всего: нет |
||||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
_Y_,
Если приближённо, то сразу можно. Всё проще. Берешь разницы по ширине и долготе между первой и второй точкой. Переводишь их в длины через 2*Pi*R. Угол между этими двумя дугами известен 90 гадусов и ищещь противоположную дугу. Это сообщение отредактировал(а) Pavia - 17.1.2012, 05:35 |
|||
|
||||
| tennisru |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.12.2011 Репутация: нет Всего: нет |
||||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
tennisru,
Ты хочешь чтобы мы за тебя данные подставили в формулу? |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
tennisru, Вам нужна формула (5) по той ссылке, которую я привел выше. В абзаце перед этой формулой все вроде описано.
По этой формуле находите угловое расстояние a. Радиус сферы R у Вас уже есть. Поэтому расстояние в единицах длины считаете, как я уже писал: 2*пи*R*a/360 Ура школьной стереометрии! -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| tennisru |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.12.2011 Репутация: нет Всего: нет |
||||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |