Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вычисление дуги сферы если известны положения двух 
:(
    Опции темы
tennisru
Дата 16.1.2012, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
Akina
Дата 16.1.2012, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Разности координат переводишь в угол между направлениями в точки из центра...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Pavia
Дата 16.1.2012, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Планету рассматриваем как сферу.

Берёшь две точки. Переводишь из сферических координат в прямоугольную систему координат. С центром в центре планеты. 
Вычисляешь угол между этими двумя векторами используя скалярное произведение векторов.
Зная угол находим длину дуги, через формулу окружности.

Длина окружности будет 2*pi*r  полный угол 2*pi.


Второй способ через сферическую геометрию(криволинейную геометрию)
Сферическая_тригонометрия


Это сообщение отредактировал(а) Pavia - 16.1.2012, 21:13
PM MAIL   Вверх
tennisru
Дата 16.1.2012, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.12.2011

Репутация: нет
Всего: нет



Можно спросить а как переводить изсферических координат в прямоугольную систему координат?
PM MAIL   Вверх
Pavia
Дата 16.1.2012, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Простая проекционная задача.
X=R*Cos(B)*Cos(L)
Y=R*Cos(B)*Sin(L)
Z=R*Sin(B)

B - широта
L - долгота
PM MAIL   Вверх
_Y_
Дата 16.1.2012, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



А разве нельзя посчитать сразу?

Просто находим угол в градусах между радиусами планеты, идущими к двум точкам.
А дальне длина окружности 2*пи*R соответствует 360 градусам, а дрина дуги пропорционально меньше. 

Понятное дело, что в этом случае допускаем, что земля шарообразна, а вовсе не имеет форму чемодана, как это есть на самом деле.

Добавлено через 10 минут и 23 секунды
По-моему вот здесь описано как найти угол между векторами сразу в сферических координатах.

На второй картинке нарисованы три вектора. Для Вашей задачи за третий вектор берем нулевую ось (координаты 0, 0). Углы двух других векторов от нуля известны (координаты на глобусе). Надо только преобразовать уравнения и получить третий угол.

Впрочем, сейчас вечер и проверять это предположение мне влом. Может быть, чтобы упростить задачу, за третью ось лучше взять какой-то другой радиус, из которого легче будет считать углы.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
tennisru
Дата 17.1.2012, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.12.2011

Репутация: нет
Всего: нет



а равзе не надо учитывать где мы сейчас находимся на какой долготе и широте?
Цитата(Pavia @  16.1.2012,  21:03 Найти цитируемый пост)
X=R*Cos(B)*Cos(L)
Y=R*Cos(B)*Sin(L)
Z=R*Sin(B)


PM MAIL   Вверх
Pavia
Дата 17.1.2012, 05:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



_Y_
Если приближённо, то сразу можно. 

Цитата(_Y_ @  16.1.2012,  23:59 Найти цитируемый пост)
По-моему вот здесь описано как найти угол между векторами сразу в сферических координатах.На второй картинке нарисованы три вектора. Для Вашей задачи за третий вектор берем нулевую ось (координаты 0, 0). Углы двух других векторов от нуля известны (координаты на глобусе). Надо только преобразовать уравнения и получить третий угол.Впрочем, сейчас вечер и проверять это предположение мне влом. Может быть, чтобы упростить задачу, за третью ось лучше взять какой-то другой радиус, из которого легче будет считать углы.

Всё проще.  Берешь разницы по ширине и долготе между  первой и второй точкой. Переводишь их в длины через 2*Pi*R. Угол между этими двумя дугами известен 90 гадусов и ищещь противоположную дугу.

Это сообщение отредактировал(а) Pavia - 17.1.2012, 05:35
PM MAIL   Вверх
tennisru
Дата 17.1.2012, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.12.2011

Репутация: нет
Всего: нет



Цитата(Pavia @  17.1.2012,  05:34 Найти цитируемый пост)
Угол между этими двумя дугами известен 90 гадусов и ищещь противоположную дугу

отлично
как это сделать для сферичеуского треугольника?

Цитата(Pavia @  17.1.2012,  05:34 Найти цитируемый пост)
ищещь противоположную дугу.



Это сообщение отредактировал(а) tennisru - 17.1.2012, 15:39
PM MAIL   Вверх
Pavia
Дата 17.1.2012, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



tennisru
Ты хочешь чтобы мы за тебя данные подставили в формулу?
PM MAIL   Вверх
_Y_
Дата 17.1.2012, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



tennisru, Вам нужна формула (5) по той ссылке, которую я привел выше. В абзаце перед этой формулой все вроде описано.

По этой формуле находите угловое расстояние a. Радиус сферы R у Вас уже есть. Поэтому расстояние в единицах длины считаете, как я уже писал:
2*пи*R*a/360

Ура школьной стереометрии! smile 


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
tennisru
Дата 18.1.2012, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.12.2011

Репутация: нет
Всего: нет



не по теме: 
Цитата(_Y_ @  17.1.2012,  22:56 Найти цитируемый пост)
Ура школьной стереометрии
 если ты и вправду школьник

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.