2014 dxdy logo

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

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


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


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3  След.
 
 Re: Перевод из одной сферической системы в другую сферическую
Сообщение25.01.2016, 20:43 
Заслуженный участник


27/04/09
28128
sincoscircle в сообщении #1094198 писал(а):
Решением на практике могло бы стать "создание" такого преобразования между двумя сферическими системами, которое давало бы приблизительно такой же результат, что и транзит, но выполнялось бы намного проще.
Ну вот как раз можно взять прямое точное решение и посмотреть, что там можно поменять или убрать с добавлением какой погрешности к результату. Совсем на пустом месте начинать будет не с чего.

 Профиль  
                  
 
 Re: Перевод из одной сферической системы в другую сферическую
Сообщение25.01.2016, 22:01 
Заслуженный участник


09/05/12
25179
sincoscircle в сообщении #1094198 писал(а):
Решением на практике могло бы стать "создание" такого преобразования между двумя сферическими системами, которое давало бы приблизительно такой же результат, что и транзит, но выполнялось бы намного проще. Я имею ввижу скажем решение для компьютерной визуализации, где достаточно приметного результата (чтобы глаз не резало), но более производительное в плане скорости расчета. Понятно, что математически такие сферические системы координат уже не будет связаты декартовой системой.
Это можно сделать, но другим путем. Сначала получить преобразования (с пресловутыми промежуточными декартовыми координатами), а затем либо пораскладывать в ряды всю получившуюся тригонометрию, либо реализовать тригонометрические функции как обращение к таблицам с предвычисленными значениями. Для компютерной визуализации при разумном разрешении второй вариант, пожалуй, будет самым быстрым.

 Профиль  
                  
 
 Re: Перевод из одной сферической системы в другую сферическую
Сообщение26.01.2016, 00:48 


25/01/16
22
Санкт-Петербург
svv в сообщении #1094229 писал(а):
Посмотрите на всякий случай эту тему, вдруг пригодится.


Это всё элементарно, это основы 3d графики в эвклидовой геометрии(декартовой системе). С этим проблем нет. Но я подумал, вдруг можно реализовать все это немного иначе, как в жизни. Мне удобно задавать и обрабатывать координаты в сферической системе, а затем я хочу сформировать проекцию на экран, и я подумал, что возможно эвклидова геометрия вообще не нужна, в реальном же мире лучи света идут в гравитационном поле по геодезической (типа метрики шварцшильда) и плоское изображение на экране можно формировать как маленький сектор большой смещенной сферы (глаза), в систему координат которой я переведу исходные сферические координаты. Другими словами, если сферические координаты объектов в системе Земли перевести в сферические координаты в системе Солнца, а потом отобразить полученные угловые координаты на экран монитора, то координаты будут искажены так, как если бы это была проекция обычного трехмерного изображения в обычной графике (один угловой градус изначальных сферических координат Земли получится шире в центре экрана, и уже по краям). И все это без эвклидовой геометрии.

Может это всё из другой оперы, но на сколько я знаю, даже в расчетах взаимодействия двух тел, имеющих каждый своё гравитационное поле, является большой проблеммой (задача Кеплера в ОТО), поэтому обычно расчет траектории движения в гравитационном поле делается в одной системе координат более массивного тела, если второе тело пренебрежимо мало с первым (типа Солнце и Земля или Земля и его спутник), и как мне сказал один математик проблема точного расчета именно в том, что в математике нет методов решения подобных дифференциальных уравнений. Но у меня та ситуация проще, световые лучи сами по себе проходят в гравитационном поле, не меняя его (не имеют своей системы координат), поэтому и проблемы такой вроде быть не должно.

 Профиль  
                  
 
 Re: Перевод из одной сферической системы в другую сферическую
Сообщение26.01.2016, 01:22 
Заслуженный участник


27/04/09
28128
sincoscircle в сообщении #1094331 писал(а):
Мне удобно задавать и обрабатывать координаты в сферической системе, а затем я хочу сформировать проекцию на экран, и я подумал, что возможно эвклидова геометрия вообще не нужна, в реальном же мире лучи света идут в гравитационном поле по геодезической (типа метрики шварцшильда) и плоское изображение на экране можно формировать как маленький сектор большой смещенной сферы (глаза), в систему координат которой я переведу исходные сферические координаты.
1. Тут некоторое смешение. Какая-нибудь геометрия всё-таки нужна, чтобы описать, как двигаются лучи и где стоят точки. И это будет евклидова геометрия, если лучи двигаются по прямым и т. п.. Она никак особо не связана с тем, какие мы хотим использовать системы координат, она описываема математически и без них.
2. А вот в приложениях вычислять без координат может быть довольно неудобно. Притом декартовы координаты оказываются в общем случае самыми удобными: начать хотя бы со скалярного произведения. Полярные координаты для задания точек сферы, конечно, удобны — а вот дальше интересная деталь: мы показываем полученное в конце изображение на плоском экране. Так что вообще не важно, кто и как устроенными глазами или камерами на этот экран будет смотреть — проецировать в модели мы должны на плоскость. Только тогда лучи будут идти в глаз так, как они шли бы из моделируемого пространства (если параметр перспективы правильно подобран). Отображение на экран проекций на искривлённые поверхности при этом даст какие-нибудь искажения, и если они не нужны специально, только плоскость. А тут только декартовы координаты. :-)

 Профиль  
                  
 
 Re: Перевод из одной сферической системы в другую сферическую
Сообщение26.01.2016, 02:11 


25/01/16
22
Санкт-Петербург
arseniiv

2. Если честно я не согласен. Если экран монитора плоский, то это не значит, что математически надо делать проекцию на плоскость. Бывают мониторы изогнутые, а математика проэкции в программе таже, и все ок:) я вам даже больше скажу, наше зрение видит не проекцию на плоскость, а проекцию на световой конус в искривленном римановом пространстве, и метод который я описал даст более правильную геометрию изображения, и ближе к тому, что мы видим глазами в реальности, чем нынешние методы в 3d графике, не зря ОТО описывается не в эвклидовой геометрии. Эвклидова геометрия намного привычнее и разработана намного лучше исторически, и примирить круг с прямой пока не получается, вот интересная цитата: "Так, например, в полярной системе координат уравнение окружности с центром в полюсе имеет вид и является, как видно, алгебраическим: но достаточно поместить полюс в какую-либо точку, как уравнение принимает вид и становится, таким образом, трансцендентным. До сих пор нет удовлетворительной классификации трансценденных кривых. Попытки определить основы теории трансцендентных кривых были мало состоятельны". http://otherreferats.allbest.ru/mathematics/00125929_0.html

Это конечно просто мое скромное мнение, но я не вижу в природе никаких прямых, а вот круги под разными углами вижу везде, к примеру, мировая линия движения массивного тела в гравитационном поле описывается той же геодезической (имеющей тот же радиус кривизны) что и мировая линия луча света.

 Профиль  
                  
 
 Re: Перевод из одной сферической системы в другую сферическую
Сообщение26.01.2016, 03:14 


25/01/16
22
Санкт-Петербург
Pphantom в сообщении #1094276 писал(а):
Это можно сделать, но другим путем. Сначала получить преобразования (с пресловутыми промежуточными декартовыми координатами), а затем либо пораскладывать в ряды всю получившуюся тригонометрию, либо реализовать тригонометрические функции как обращение к таблицам с предвычисленными значениями. Для компютерной визуализации при разумном разрешении второй вариант, пожалуй, будет самым быстрым.


Все так, но ведь это тот же метод транзита, а в ряды железо (gpu) его само раскладывает такие операции как синус или косинус, к примеру у меня поворот + масштабирование + перенос + перспектива делается всего за 16 тактов процессора (все операции за одно умножение матрицы 4х4 на 4-вектор), а если я добавлю транзит туда и обратно это добавит еще 64 такта и увеличит время просчета в 5 раз. Кстати синус аппаратно делается всего за 4 такта через разложение, так что щас слава богу больше не надо таблицу значений создавать как когда то в прошлом, щас операции с памятью это самое узкое место.

 Профиль  
                  
 
 Re: Перевод из одной сферической системы в другую сферическую
Сообщение26.01.2016, 03:18 
Заслуженный участник


20/08/14
11872
Россия, Москва
Т.е. вы намекаете, что на характерных расстояниях до монитора в пару метров уже могут сказываться поправки от искажения локальной геометрии? Вы собираетесь показывать окрестности небольших чёрных дыр? Во всех прочих случаях поправки будут на много порядков меньше размеров пикселей - и соответственно не иметь никакого практического смысла.

 Профиль  
                  
 
 Re: Перевод из одной сферической системы в другую сферическую
Сообщение26.01.2016, 03:23 


25/01/16
22
Санкт-Петербург
Dmitriy40 в сообщении #1094347 писал(а):
Т.е. вы намекаете, что на характерных расстояниях до монитора в пару метров уже могут сказываться поправки от искажения локальной геометрии? Вы собираетесь показывать окрестности небольших чёрных дыр? Во всех прочих случаях поправки будут на много порядков меньше размеров пикселей - и соответственно не иметь никакого практического смысла.


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

Я уж не буду переписывать потрясающий метрический тензор Шварцшильда, но такой метрикой можно описать и гравитацию/свет на поверхности Земли. Три координаты из четырех $(t,r,\theta,\varphi)$ являются сферическими в этой метрике, и в этой метрике можно задать световой конус и сделать проекцию на него, как на экран монитора, и этот конус не будет ни эвклидовой ни псевдоэвклидовой плоскостью. Но как то же это делают. Хотя может я и бред говорю, я не профессионал:)

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

 Профиль  
                  
 
 Re: Перевод из одной сферической системы в другую сферическую
Сообщение26.01.2016, 09:55 
Заслуженный участник


27/04/09
28128
sincoscircle в сообщении #1094343 писал(а):
но я не вижу в природе никаких прямых, а вот круги под разными углами вижу везде
Честно говоря, окружностями в ОТО намного труднее что-нибудь назвать, чем назвать геодезические прямыми (локально они прямые). Кажется, будет ли кривая кругом, вообще зависит от того, в какое пространственноподобное сечение её вложить — надо определить пространственную кривизну, если захотеть приравнять её во всех точках кривой (и кручение, и приравнять к нулю).

sincoscircle в сообщении #1094343 писал(а):
к примеру, мировая линия движения массивного тела в гравитационном поле описывается той же геодезической (имеющей тот же радиус кривизны) что и мировая линия луча света
Вот давайте или физику соблюдать, или без претензий? Геодезическая совершенно не обязана быть похожа на окружность (и не похожа в данных случаях, потому что это линия в четырёхмерном пространстве-времени) больше, чем на прямую или какую-то непонятную штуковину.

sincoscircle в сообщении #1094348 писал(а):
Даже пусть искажения получатся больше, чем при обычном методе, но если это даст прямое преобразование, нормальную скорость просчета и экономию памяти (не надо хратить координаты в двух системах), то это было бы хорошо.
Видно, что вам не терпится показать код. Никто не будет удерживать, показывайте! Поищем там 16 тактов процессора.

 Профиль  
                  
 
 Re: Перевод из одной сферической системы в другую сферическую
Сообщение26.01.2016, 14:24 


25/01/16
22
Санкт-Петербург
arseniiv в сообщении #1094372 писал(а):
Видно, что вам не терпится показать код. Никто не будет удерживать, показывайте! Поищем там 16 тактов процессора.

Код на GLSL сейчас (uniform переменная mat4 * vec4 = координаты на экране), потом еще на cuda сделаю, но писать весь код здесь не вижу смысла, это же мат форум. Что это умножение матрицы на вектор делается за 16 тактов это среднее значение (зависит от железа), вот некоторые данные: http://www.fractalforums.com/programmin ... erformance)/

На счет физики, конечно геодезическая зависит от распределения всех массивных тел (математически у каждого сферического тела своя 4-сфера, точнее метрика топологического произведения двумерной сферы на двумерное лоренцево пространство, не будем придираться к точности описания), и поэтому геодезическая получится сложной формы, но мне таких сложностей не надо, мне достаточно описать одну сферу (одного тела, к примеру Земли), а всё остальное будет двигаться в ее гравитационном поле (по ее простым геодезическим), более того можно даже заменить лоренцесо пространство на обычное, а время тоже сделать не бесконечным, если это упростит чтото, но это я уже описываю совсем другую программу (просчет столкновений свободно падающих тел в гравитационном поле для ненаучных целей, скажем для игр), хотя общее у них есть, поскольку мировая линия свободно падающих тел и движение лучей света идут по похожим геодезическим (имеющим один радиус кривизны, но повернутым на разный угол относительно оси времени, поэтому траектория полета камня выглядит более изогнутой, чем полет пули, а полет пули более изогнутым, чем луч света (угол поворота окружности в 4d разный) а в пределе часть окружности стремится к нулевой кривизны, поэтому выглядит всё более прямой (только не придирайтесь пожалуйста к корректности описания), поэтому мне кажется, что просчет траекторий полета/столкновений и построение проекции изображения на экран можно делать одним методом одной математикой. Я могу ошибаться, но примерно так: достаточно задать для такой окружности первоначальные углы повороты эйлера в 4d и эта простая окружности-подобная геодезическая в метрике типа шварцшильда, будет описывать мировую линию движения тела, получив набор таких геодезических можно сразу определить последовательность всех столкновений по времени, и обрабатывать их только когда наступит это время, а не каждый кадр, как это обычно делают. Не будьте строги, это всего лишь идея, я ни в коем случае не настаиваю, что она состоятельна или что мое описание корректно.

 Профиль  
                  
 
 Re: Перевод из одной сферической системы в другую сферическую
Сообщение26.01.2016, 14:45 
Заслуженный участник
Аватара пользователя


11/03/08
10004
Москва
Думается, самый быстрый способ как раз через декартовы координаты. Нелинейность тут не убрать.

(Оффтоп)

Во всяком случае, при создании SAGE в составе системы ПВО севера Америка NORAD ничего лучшего не придумали (одна сферическая система координат - цель с точки зрения радиолокатора, другая - цель с точки зрения истребителя, перевод делается, чтобы пилоту истребителя сообщить направление и дальность на цель). А ускорение обработки им требовалось. Компьютеры 1954 года, дослужившие до 1984 и затем проданные в Голливуд на роль суперкомпьютеров суперзлодеев быстродействие имели скромное, и если бы имелся более короткий путь, прекрасные тогдашние математики, занимавшиеся этой проблемой, нашли бы его.

 Профиль  
                  
 
 Re: Перевод из одной сферической системы в другую сферическую
Сообщение26.01.2016, 17:31 
Заслуженный участник


20/08/14
11872
Россия, Москва

(Оффтоп)

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

 Профиль  
                  
 
 Re: Перевод из одной сферической системы в другую сферическую
Сообщение26.01.2016, 19:54 
Заслуженный участник
Аватара пользователя


11/03/08
10004
Москва
Ну, нелинейный характер требуемого преобразования никуда не денется...

 Профиль  
                  
 
 Re: Перевод из одной сферической системы в другую сферическую
Сообщение27.01.2016, 02:17 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
sincoscircle
Я тут размышлял, как можно было бы использовать векторы для записи преобразования координат, и вот о чём подумал. Декартовы координаты, конечно, необходимы для получения окончательной формулы преобразования. Но «пролазят» они в задачу не только поэтому. Они незримо присутствуют в самой сферической системе. И это я хочу показать.

Допустим, мы выбрали в пространстве начало координат $O$ (пока что это единственный произвольный выбор), и теперь любую точку $A$ можем представить радиус-вектором $\mathbf r=\vec{OA}$. Совершенно не хочется выбирать какой-то базис, тем более декартов... Попробуем для данного вектора $\mathbf r$ записать его сферические координаты. Сначала всё идёт хорошо: $r=\sqrt{\mathbf r \cdot \mathbf r}$. Но уже на координате $\theta$ обнаруживается, что необходимо какое-то выделенное направление, от которого мы будем отсчитывать угол. Так как у нас подход векторный, зададим направление вектором, назовём его $\mathbf e_z$. Он может быть любой ненулевой длины, но для определённости пусть будет единичным. С его помощью запишем:
$\theta=$ угол между векторами $\mathbf e_z$ и $\mathbf r$, или
$\theta=\arccos \dfrac{\mathbf e_z\cdot \mathbf r}{r}$

Теперь надо определить $\varphi$. Мы можем найти проекцию $\mathbf r$ на плоскость $\alpha$, перпендикулярную $\mathbf e_z$:
$\mathbf r_\alpha=\mathbf r-\mathbf e_z(\mathbf e_z \cdot \mathbf r)$
Помимо проекции, нужен ещё один произвольный (ненулевой) вектор, лежащий в той же плоскости $\alpha$, от которого мы будем отсчитывать угол $\varphi$ до проекции $\mathbf r_\alpha$. Можно назвать его как угодно, но Вы уже догадались, что я его назову $\mathbf e_x$, и для определённости он будет единичным. И он перпендикулярен $\mathbf e_z$, так как лежит в $\alpha$. Итак,
$\varphi=$ угол между векторами $\mathbf e_x$ и $\mathbf r_\alpha$

Далее оказывается, что для вычисления $\varphi$ удобно ввести вектор $\mathbf e_y=\mathbf e_z\times\mathbf e_x$, который по определению перпендикулярен уже введённым $\mathbf e_x, \mathbf e_z$ и имеет единичную длину. Удобно потому, что $\varphi$ выражается через $\mathbf e_x\cdot \mathbf r$ и $\mathbf e_y \cdot \mathbf r$ с помощью функции $\operatorname{atan2}$ (что это такое и чем это лучше просто арктангенса, лучше всех может объяснить arseniiv):
$\varphi=\operatorname{atan2}\;(\mathbf e_y \cdot \mathbf r,\; \mathbf e_x \cdot \mathbf r)$

Таким образом, у нас получился ортонормированный базис $(\mathbf e_x, \mathbf e_y, \mathbf e_z)$, хотя мы совершенно не стремились к декартовым координатам. Эти векторы появились исходя из построения сферических координат.

И в самом конце обнаруживается, что вспомогательные скалярные произведения (проекции $\mathbf r$ на базисные векторы)
$\mathbf e_x\cdot \mathbf r \quad\quad \mathbf e_y\cdot \mathbf r \quad\quad \mathbf e_z\cdot \mathbf r$
— вещь гораздо более удобная при преобразованиях координат (в силу линейности), чем сами сферические координаты $r, \theta, \varphi$.

 Профиль  
                  
 
 Re: Перевод из одной сферической системы в другую сферическую
Сообщение27.01.2016, 04:16 


25/01/16
22
Санкт-Петербург
Просто мои глупые мысли: как я понимая примирить декартову систему со сферическими можно только через бесконечное разложение на ряды (синусы, косинусы и тп), причина этой бесконечности это трансцендентное число $\pi$ , но если рассматривать сферические системы сами по себе, а не вложенные в эвклидовы пространства большей размерности, то число $\pi$ будет равным 2 для двумерного пространства с топологией сферы), как вроде и для трехмерного пространства с топологией сферы (вроде её называют 3-сфера, по числе внутренней размерности), далее представим там любую точку как условный центр координат, то множество всех точек равноудаленных от нее на сравнительно малое расстояние во всех её собственных трех измерениях будет поверхностью двумерной сферы вложенной в это трехмерное пространство, кривизна полученной 2-сферы будет отличатся от кливизны самого пространства (как кривизна поверхности Земли отличается от кривизны пространства-времени в котором распространяется свет), значение числа $\pi$ для внутренной геометрии 2-сферы будет зависеть от ее размера и будет стремится к числу $\pi$ для эвклидова пространства при стремлении размера 2-сферы к нулю, а окружности больших кругов пространства 3-сферы и будут являться прямыми линиями - по ним можно считать проекции изображения такой 2-сферы на экран, который имеет кривизну равную кривизне самого пространства ("лежит" на/в 3-сфере). Возможно в такой геометрии можно делать более простые преобразования между двумя системами координат, которые заданы в этом трехмерном пространстве 3-сферы и отличаются только центром координат (их относительным расположением) и тремя углами повороты относительно друг друга. Две системы координат для задания положения объектов и положения экрана воответственно). Надеюсь я понятно расписал:) Подумайте реально ли такое впринципе или я бред пишу и у меня тут внутренние противоречия какие то?

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

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



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

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


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

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