2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 
 Сферическое кратчайшее расстояние
Сообщение28.04.2012, 04:35 


13/12/08
58
Честно говоря не очень знаю как правильно называется то, что мне нужно на математическом языке.

Есть координаты двух точек в пространстве. Нужна функция, которая возвращает "расстояние", которое по поверхности сферы более короткое, чем при отклонении от поверхности сферы.

Расстояние между двумя точками на сфере - я знаю как посчитать, но вопрос в том, как сделать так, чтобы:
1. его преобразовать через функцию так, чтобы оно было меньше, чем по прямой
2. а точнее ПОСТЕПЕННО увеличивалось бы, если отклоняется от траектории по поверхности сферы

P.S. Мне это нужно практически, поэтому теоретические премудрости математики мало интересуют (единственно сильно интересует как правильно называется эта задача, и как её решить, т.е. вид этой функции).

 Профиль  
                  
 
 Re: Сферическое кратчайшее расстояние
Сообщение28.04.2012, 09:11 
Заслуженный участник
Аватара пользователя


18/05/06
13435
с Территории
Короче, ничего не знаю, вот задача. Есть некая сумма денег. Её надо преобразовать через функцию так, чтобы она ПОСТЕПЕННО увеличивалась. Что посоветуете? :lol:

 Профиль  
                  
 
 Re: Сферическое кратчайшее расстояние
Сообщение28.04.2012, 09:34 


13/12/08
58
Ну, и зачем оффтопить? Не знаете, что посоветовать - не болтайте ..

А задача поставлена более чем конкретно. (я вот только надеюсь, что специалисты-математики заговорят словами "метрика" и т.д. - вот в этом смысле задача только лишь и "недопоставлена" )

 Профиль  
                  
 
 Re: Сферическое кратчайшее расстояние
Сообщение28.04.2012, 09:47 
Заслуженный участник
Аватара пользователя


18/05/06
13435
с Территории
tac в сообщении #564822 писал(а):
А задача поставлена более чем конкретно.
:lol: :lol:

-- Сб, 2012-04-28, 10:49 --

Погодите, так Вам что, нужна такая особенная метрика в 3D, в которой геодезическими являются (в частности) дуги какой-то сферы?

 Профиль  
                  
 
 Re: Сферическое кратчайшее расстояние
Сообщение28.04.2012, 13:33 
Заслуженный участник


23/07/08
10626
Crna Gora
Берем квадрат элемента длины в сферических координатах
$ds^2=dr^2+r^2 d\theta^2+r^2 \sin^2\theta d\varphi^2$
и слегка подправляем его:
$ds^2=dr^2+d\theta^2+\sin^2\theta d\varphi^2$

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

 Профиль  
                  
 
 Re: Сферическое кратчайшее расстояние
Сообщение28.04.2012, 14:28 


13/12/08
58
svv в сообщении #564934 писал(а):
Берем квадрат элемента длины в сферических координатах
$ds^2=dr^2+r^2 d\theta^2+r^2 \sin^2\theta d\varphi^2$
и слегка подправляем его:
$ds^2=dr^2+d\theta^2+\sin^2\theta d\varphi^2$

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


Спасибо, на слух вроде как раз то, что надо ... пошел проверять :)

 Профиль  
                  
 
 Re: Сферическое кратчайшее расстояние
Сообщение28.04.2012, 15:33 


13/12/08
58
Псс ..

Не могли бы проверить и подсказать, что-то не имея опыта меня смутила запись (точнее как ее применить в псевдокоде при программировании)

Используется синтаксис C#
// сферические координаты первой точки
                r_sf1 = Math.Sqrt(x1*x1 + y1*y1 + z1*z1);          // расстояние до начала координат
                theta1 = Math.Atan(Math.Sqrt(x1*x1 + y1*y1)/z1);   // зенитный угол
                varphi1 = Math.Atan(y1 / x1);                      // азимутальный угол

// сферические координаты второй точки
                r_sf2 = Math.Sqrt(x2 * x2 + y2 * y2 + z2 * z2);          // расстояние до начала координат
                theta2 = Math.Atan(Math.Sqrt(x2 * x2 + y2 * y2) / z2);   // зенитный угол
                varphi2 = Math.Atan(y2 / x2);                            // азимутальный угол

// Искомое "расстояние"
                r = Math.Sqrt((r_sf2 - r_sf1) * (r_sf2 - r_sf1) + (theta2 - theta1) * (theta2 - theta1)
                +  (Math.Sin(theta1)*Math.Sin(theta2)) * (varphi2 - varphi1) * (varphi2 - varphi1));
 

Правильно ли, что $\sin^2\theta$ - это тоже самое что Math.Sin(theta1)*Math.Sin(theta2)?

Да, и может я не прав - может с углами нельзя так обходится получая их d\theta^2 ? (что-то мне подсказывает, что странно складывать углы с расстоянием :( или я скорее чего-то не понимаю)

-- Сб апр 28, 2012 17:28:11 --

ИСН в сообщении #564825 писал(а):

Погодите, так Вам что, нужна такая особенная метрика в 3D, в которой геодезическими являются (в частности) дуги какой-то сферы?


Видимо это ответ на мой первый вопрос :) я же написал, что не знаю как это правильно сформулировать на мат. языке. Это соответствует тому, что посоветовал svv выше ?

 Профиль  
                  
 
 Re: Сферическое кратчайшее расстояние
Сообщение28.04.2012, 16:45 
Заслуженный участник


23/07/08
10626
Crna Gora
Я решил до того, как проверять код на C#, сначала записать "своё видение".

Пусть даны точки $A_1(r_1, \theta_1, \varphi_1)$ и $A_2(r_2, \theta_2, \varphi_2)$ (здесь и далее указаны сферические координаты).

В новой метрике кратчайшим путем, соединяющим точки $A_1$ и $A_2$, будет некоторая кривая, которая при $r_1=r_2$ будет лежать на сфере.
Длину $s$ этого пути можно найти так:
$s^2=s_{\text{radial}}^2+s_{\text{angular}}^2=(r_2-r_1)^2+s_{\text{angular}}^2$ ,
где $s_{\text{angular}}$ -- длина кратчайшей дуги на единичной сфере, соединяющей точки $B_1(1, \theta_1, \varphi_1)$ и $B_2(1, \theta_2, \varphi_2)$. Эти точки -- "радиальные проекции" точек $A_1$ и $A_2$ на единичную сферу. Иначе -- пересечение луча, выходящего из центра сферы и проходящего соответственно через точку $A_1$ или $A_2$, с единичной сферой.

Из описания понятно, что $s_{\text{angular}}$ -- это угол между лучами $OA_1$ и $OA_2$ (или, что то же самое, между $OB_1$ и $OB_2$). Несложно найти явно:
$s_{\text{angular}}=\arccos(\sin\theta_1\sin\theta_2\cos(\varphi_2-\varphi_1)+\cos\theta_1\cos\theta_2)$

Вот такие формулы.

tac писал(а):
Это соответствует тому, что посоветовал svv выше ?
Скажем так: я не вправе расписаться за ИСН, что то, что я сделал, соответствует тому, что он имел в виду. Однако для меня его формулировка вполне соответствует тому, чего хотел я. :D

 Профиль  
                  
 
 Re: Сферическое кратчайшее расстояние
Сообщение28.04.2012, 16:54 
Заслуженный участник


09/09/10
3729
svv, признавайтесь, вы — телепат. Я-то после прочтения первого поста сразу подумал "любые две точки лежат на какой-то сфере, в чем проблема-то?" и ушел... а оно вон как на самом деле.

 Профиль  
                  
 
 Re: Сферическое кратчайшее расстояние
Сообщение28.04.2012, 17:00 
Заслуженный участник


23/07/08
10626
Crna Gora
Ну, я только учусь... :roll:

(Оффтоп)

Да, стремлюсь быть телепатом -- в том смысле, что стараюсь понять, что нужно человеку, вместо того, чтобы буквально следовать формулировке вопроса. Это потому, что я не математик, и мне самому очень трудно правильно формулировать вопросы (да и ответы) математически.


-- Сб апр 28, 2012 16:15:21 --

tac писал(а):
что-то мне подсказывает, что странно складывать углы с расстоянием
Если есть внутреннее сопротивление против такого действия (в общем, правильное), можно предложенную метрику заменить на
$ds^2=dr^2+r_0^2\,(d\theta^2+\sin^2\theta\, d\varphi^2)$

Здесь $r_0$ -- характерное для Вашей задачи расстояние от центра сферы. Скажем, если Вы пишете что-то вроде имитатора полёта в Google Earth, то это средний радиус Земли. Однако $r_0$ должно быть константой. Две выгоды от такой модификации:
1) всё в порядке с размерностями (важно для физика);
2) "расстояния" при $r\approx r_0$ становятся ближе по числовым значениям к обычным расстояниям, а на сфере $r=r_0$ просто совпадают с ними.
Формула для длины пути модифицируется так:
$s^2=(r_2-r_1)^2+r_0^2 s_{\text{angular}}^2$

 Профиль  
                  
 
 Re: Сферическое кратчайшее расстояние
Сообщение28.04.2012, 18:36 


13/12/08
58
svv в сообщении #565052 писал(а):
Я решил до того, как проверять код на C#, сначала записать "своё видение".

Пусть даны точки $A_1(r_1, \theta_1, \varphi_1)$ и $A_2(r_2, \theta_2, \varphi_2)$ (здесь и далее указаны сферические координаты).

В новой метрике кратчайшим путем, соединяющим точки $A_1$ и $A_2$, будет некоторая кривая, которая при $r_1=r_2$ будет лежать на сфере.
Длину $s$ этого пути можно найти так:
$s^2=s_{\text{radial}}^2+s_{\text{angular}}^2=(r_2-r_1)^2+s_{\text{angular}}^2$ ,
где $s_{\text{angular}}$ -- длина кратчайшей дуги на единичной сфере, соединяющей точки $B_1(1, \theta_1, \varphi_1)$ и $B_2(1, \theta_2, \varphi_2)$. Эти точки -- "радиальные проекции" точек $A_1$ и $A_2$ на единичную сферу. Иначе -- пересечение луча, выходящего из центра сферы и проходящего соответственно через точку $A_1$ или $A_2$, с единичной сферой.

Из описания понятно, что $s_{\text{angular}}$ -- это угол между лучами $OA_1$ и $OA_2$ (или, что то же самое, между $OB_1$ и $OB_2$). Несложно найти явно:
$s_{\text{angular}}=\arccos(\sin\theta_1\sin\theta_2\cos(\varphi_2-\varphi_1)+\cos\theta_1\cos\theta_2)$




Значит действительно с углами нельзя так просто, тогда

Используется синтаксис C#
// сферические координаты первой точки
                r_sf1 = Math.Sqrt(x1*x1 + y1*y1 + z1*z1);          // расстояние до начала координат
                theta1 = Math.Atan(Math.Sqrt(x1*x1 + y1*y1)/z1);   // зенитный угол
                varphi1 = Math.Atan(y1 / x1);                      // азимутальный угол

// сферические координаты второй точки
                r_sf2 = Math.Sqrt(x2 * x2 + y2 * y2 + z2 * z2);          // расстояние до начала координат
                theta2 = Math.Atan(Math.Sqrt(x2 * x2 + y2 * y2) / z2);   // зенитный угол
                varphi2 = Math.Atan(y2 / x2);                            // азимутальный угол

// Искомое "расстояние"
                r = Math.Sqrt((r_sf2 - r_sf1) * (r_sf2 - r_sf1) + Math.Acos( Math.Sin(theta1)*Math.Sin(theta2)*Math.Cos(varphi2-varphi1) + Math.Cos(theta1) * Math.Cos(theta2)  ));
 


но соответствует ли это $ds^2=dr^2+d\theta^2+\sin^2\theta d\varphi^2$? Или я чего то напутал ?

Т.е. правильно ли я понял, что $s_{\text{angular}}$ это тоже самое, что $ d\theta^2+\sin^2\theta d\varphi^2$?

Какие-то у меня сомнения

Цитата:
Если даны сферические координаты двух точек, то расстояние между ними можно найти так:
$L = R \cdot \arccos ( \cos \theta_1 \cdot \cos \theta_2 + \sin \theta_1 \cdot \sin \theta_2 \cdot \cos (\varphi_1 - \varphi_2) ).$


это по сути то, что вы выше пояснили, но тут же не учтено, то что мы "подкорректировали метрику" с

Цитата:
$ds^2=dr^2+r^2 d\theta^2+r^2 \sin^2\theta d\varphi^2$
и слегка подправляем его:
$ds^2=dr^2+d\theta^2+\sin^2\theta d\varphi^2$


-- Сб апр 28, 2012 19:46:46 --

svv в сообщении #565063 писал(а):
Здесь $r_0$ -- характерное для Вашей задачи расстояние от центра сферы. Скажем, если Вы пишете что-то вроде имитатора полёта в Google Earth, то это средний радиус Земли. Однако $r_0$ должно быть константой.


Вы действительно, хорошо поясняете :)

И это важное дополнение, это $r_0$ получается коэффициент, который указывает по какому радиусу от центра должна огибаться траектория.

 Профиль  
                  
 
 Re: Сферическое кратчайшее расстояние
Сообщение28.04.2012, 19:14 
Заслуженный участник


23/07/08
10626
Crna Gora
tac в сообщении #565096 писал(а):
соответствует ли это $ds^2=dr^2+d\theta^2+\sin^2\theta d\varphi^2$? Или я чего то напутал ?

Т.е. правда ли, что $s_{\text{angular}}$ это тоже самое, что $ d\theta^2+\sin^2\theta d\varphi^2$? Прямо как-то не следует ?
Формула $ds^2=dr^2+r_0^2\,(d\theta^2+\sin^2\theta\, d\varphi^2)$ (жаргонное название -- "метрика") лежит в основе построения, но прямо она не программируется.

Она определяет расстояние $ds$ между двумя бесконечно близкими точками. Она позволяет найти длину любого пути, в том числе криволинейного -- путём интегрирования. Чтобы перейти от неё к формуле для длины кратчайшего пути $s$ между двумя точками, нужно сделать две вещи, о которых я не говорил:
1) Найти, какой именно путь будет кратчайшим в данной метрике (для этого надо решить уравнение геодезических). Я такой путь для произвольной пары точек нашел и имею в виду именно его, хотя о нем не упоминал и явно его здесь не описывал.
2) Проинтегрировать $ds$ вдоль этого пути и получить уже конечное расстояние $s$, а не бесконечно малое:
$s=\int\limits_{\lambda_1}^{\lambda_2}\frac{ds}{d\lambda} d\lambda=\int\limits_{\lambda_1}^{\lambda_2}\sqrt{\left(\frac {dr}{d\lambda}\right)^2+r_0^2\,\left(\frac {d\theta}{d\lambda}\right)^2+r_0^2\,\sin^2\theta\, \left(\frac {d\varphi}{d\lambda}\right)^2} d\lambda$
Здесь $\lambda$ -- параметр кривой при её параметрическом задании. Интеграл, понятно, зависит от выбранного пути.

Вот это я проделал (местами "честно схитрил") и Вам предъявил готовый результат. Вы на него смотрите и не очень понимаете, откуда появилось столько отличий между
$ds^2=dr^2+r_0^2\,(d\theta^2+\sin^2\theta\, d\varphi^2)$ и
$s^2=(r_2-r_1)^2+r_0^2 \left(\arccos(\sin\theta_1\sin\theta_2\cos(\varphi_2-\varphi_1)+\cos\theta_1\cos\theta_2)\right)^2$ :D

 Профиль  
                  
 
 Re: Сферическое кратчайшее расстояние
Сообщение28.04.2012, 20:00 


13/12/08
58
svv в сообщении #565107 писал(а):

Вот это я проделал (местами "честно схитрил") и Вам предъявил готовый результат. Вы на него смотрите и не очень понимаете, откуда появилось столько отличий между
$ds^2=dr^2+r_0^2\,(d\theta^2+\sin^2\theta\, d\varphi^2)$ и
$s^2=(r_2-r_1)^2+r_0^2 \left(\arccos(\sin\theta_1\sin\theta_2\cos(\varphi_2-\varphi_1)+\cos\theta_1\cos\theta_2)\right)^2$ :D


Ух, как все не просто :) Спасибо, за результат. Так, получается что и в коде тогда все в порядке теперь (см. последний вариант) ?

-- Сб апр 28, 2012 21:30:24 --

Тут еще вот какое дело. В такой вот получившейся сферической геометрии, надо еще проследить чтобы угол между 3 точками (2 из них те-же, о которых говорили выше) в пространстве приближался к 20 градусам. Тут что-то меняется в отличии от евклидовой геометрии?

 Профиль  
                  
 
 Re: Сферическое кратчайшее расстояние
Сообщение28.04.2012, 21:59 
Заслуженный участник


27/04/09
28128
Углов между тремя точками, строго говоря, не бывает. Чуть менее строго их три (углы треугольника, образуемого этими точками; неважно, криволинейного ли). Какой из трёх? :wink:

 Профиль  
                  
 
 Re: Сферическое кратчайшее расстояние
Сообщение28.04.2012, 22:55 


13/12/08
58
arseniiv в сообщении #565200 писал(а):
Углов между тремя точками, строго говоря, не бывает. Чуть менее строго их три (углы треугольника, образуемого этими точками; неважно, криволинейного ли). Какой из трёх? :wink:


Если есть три точки A, B, C, то речь идет о угле ABC

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу 1, 2, 3  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group