2014 dxdy logo

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

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


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


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



Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4
 
 Re: Поворот сферы между двумя точками
Сообщение12.01.2020, 23:27 
Заслуженный участник
Аватара пользователя


27/05/11
871
george66 в сообщении #1433112 писал(а):
Взаимной однозначности не нужно, нужна сюръекция (по точке сферы и углу непрерывно находим поворот). Я пытаюсь по кватернионам как-то сделать. Точку $A$ зафиксируем, пусть это будет кватернион $i$. Точка $B$ задаётся единичным кватернионом
$\cos(\varphi) + B \sin(\varphi)$
где $B$ чисто мнимый кватернион нормы единица. По кватерниону надо непрерывно находить поворот, переводящий $A$ в $B$ (при условии $\sin(\varphi)\neq 0$). Идеально сам поворот находить в виде кватерниона.


А почему не воспользоваться стандартной формулой вращения на единичный кватернион? В этом случае векторный кватернион $v'$ (в обозначениях статьи из вики) будет функцией исходного векторного кватерниона $v$, единичного векторного кватерниона $u$, задающего направление оси вращения (которая должна проходить через центр сферы), и угла поворота $\alpha$. Вращение будет происходить в плоскости, ортогональной оси вращения и содержащей точки A и B (эти точки будут принадлежать окружности, образованной сечением сферы плоскостью). Если значения $v$ и $v'$ (или, эквивалентно, точки A и B) фиксированы, то предпоследнее равенство в разделе "Вращение на единичный кватернион" дает (при фиксированном $u$) значение угла $\alpha_{\text{max}}$, соответствующее кватерниону $v'=v'(\alpha_{\text{max}})$. Здесь вектор $u$ равен нормализованной на 1 (произвольной) линейной комбинации векторов $v+v'$ и $v\times v'$, а сам поворот (при выбранном значении $u$) будет определяться функцией $v'(\alpha)$, где $0\leq\alpha\leq\alpha_{\text{max}}$.

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


31/12/15
922
lek в сообщении #1434797 писал(а):
А почему не воспользоваться стандартной формулой вращения на единичный кватернион?

Если мы хотим перевести северный полюс в южный, вокруг какой оси вращать?

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


27/05/11
871
При любом выборе значений A и B существует бесконечное число допустимых осей (см. выше). В данном (особом) случае подходит любая ось, проходящая через центр сферы и ортогональная диаметру, соединяющему полюсы A и B.

 Профиль  
                  
 
 Re: Поворот сферы между двумя точками
Сообщение13.01.2020, 15:43 
Заслуженный участник


27/04/09
28128
lek
Я так понял, у george66 проблема в том, что надо построить непрерывно меняющийся в зависимости от времени поворот, исходно полагаясь на положения двух точек (тоже непрерывные по времени) и требовании, что одна из них им переводится в другую, и загвоздка как раз в том, как проще выбрать (единственный правильный) поворот для моментов, когда точки — антиподы. С кватернионами-то у george66 всё очень хорошо, насколько я начитался.

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


27/05/11
871
Из первого поста это не следует. Подождем уточнений ТС.

 Профиль  
                  
 
 Re: Поворот сферы между двумя точками
Сообщение13.01.2020, 22:34 
Заслуженный участник


31/12/15
922
А вот такую вещь пытаюсь понять. Допустим, мы задаём точки проективного пространства четвёрками чисел с точностью до множителя (удобно использовать кватернионы нормы единица). И делаем всякую линейную алгебру - находим плоскость по трём точкам, прямую по двум точкам, точку пересечения плоскости и прямой и т.д. Всё это более-менее просто, вычисляются миноры каких-то матриц. А теперь будем задавать кватернион нормы единица тремя углами. Можно ли всё перечисленное вычислять непрерывно? Допустим, по трём точкам (заданным тремя углами каждая) находить три угла проходящей через них плоскости.

 Профиль  
                  
 
 Re: Поворот сферы между двумя точками
Сообщение14.01.2020, 14:47 
Заслуженный участник


27/04/09
28128
Вы углы для плоскости находите, взяв углы полярной ей относительно некоторой сферы точки? Тогда если сфера подобрана правильно (скажем, стереографический образ экватора?), разрывность для некоторых случаев легко видно: вот возьмём плоский случай, пусть северный полюс сферы отображается на плоскости в бесконечность и мы берём точку, полярную интересующей прямой относительно образа экватора. Если одну из точек перемещать так, что прямая через них будет проходить через образ южного полюса, полярная этой прямой точка будет в этот момент убегать в бесконечность и приходить с другой стороны, и она будет иметь разрыв долготы.

 Профиль  
                  
 
 Re: Поворот сферы между двумя точками
Сообщение14.01.2020, 15:08 
Заслуженный участник


31/12/15
922
Нет, там поляритет другой и очень простой - точке сопоставляется плоскость с той же четвёркой проективных координат. Точка не может лежать на своей полярной плоскости. Полярная плоскость точки $A$ - это множество точек, удалённых от $A$ на максимальное возможное расстояние, она расположена вокруг $A$ как сфера вокруг центра.

-- 14.01.2020, 15:23 --

Вот, например, берём кватернион нормы единица
$a = a_0 +a_1i+a_2j+a_3k$
и будем его задавать так
$a = \cos\varphi + \sin\varphi\cdot V$
где $V$ чисто мнимый кватернион нормы единица, а угол меняется от 0 до 180 (так что синус неотрицательный). Это избыточная информация (если $\sin\varphi=0$, мы всё равно указываем $V$). Далее, $V$ будем задавать широтой и долготой. Вот хорошо это или нет?

 Профиль  
                  
 
 Re: Поворот сферы между двумя точками
Сообщение14.01.2020, 15:34 
Заслуженный участник


27/04/09
28128
А с тем поляритетом та же проблема. На том же случае двумерной сферы мы можем сделать, чтобы полярная прямой точка прошла через полюс, перескочив с одного меридиана на другой, изломав себе соответствующую угловую координату. :-)

 Профиль  
                  
 
 Re: Поворот сферы между двумя точками
Сообщение14.01.2020, 17:19 
Заслуженный участник


31/12/15
922
Давайте попробуем уточнить задачу. Требуется способ задавать кватернионы нормы единица (точки трёхмерной сферы) и чисто мнимые кватернионы нормы единица (точки обычной сферы) некоторой избыточной информацией, чтобы
1) по двум точкам обычной сферы непрерывно находился поворот, переводящий одну в другую;
2) всякие обычные операции над кватернионами оставались непрерывными. Тут надо уточнить, какие, но вот пример. Пусть даны два ненулевых кватерниона $a,b$ (можно их нормировать в единицу). По ним вычислим два чисто мнимых кватерниона
$u=b\bar{a} - a\bar{b}$

$v=\bar{a}b - \bar{b} a$
Они имеют равную длину (можно проверить) и не равны нулю, если $a\neq b$. На самом деле они задают прямую, проходящую через точки $a,b$. Вот это вычисление должно оставаться непрерывным.

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


30/01/06
72407
george66 в сообщении #1435156 писал(а):
Требуется способ задавать кватернионы нормы единица (точки трёхмерной сферы) и чисто мнимые кватернионы нормы единица (точки обычной сферы) некоторой избыточной информацией, чтобы
1) по двум точкам обычной сферы непрерывно находился поворот, переводящий одну в другую;

У меня ощущение (я его ещё не проверял), что достаточно к каждой точке сферы $S^2$ добавить направление - единичный касательный вектор. Тогда пара таких точек однозначно (и непрерывно) задаёт элемент $\mathrm{SO}(3).$

 Профиль  
                  
 
 Re: Поворот сферы между двумя точками
Сообщение14.01.2020, 23:37 
Заслуженный участник


27/04/09
28128
Вот вы предлагаете обогатить кватернионы, но по-моему всё же проще обогатить контекст вычисления поворота, раз на кону непрерывность поворота в зависимости от некоторого параметра. Чем обогатить точки и следить, чтобы те дополнительные вещи у них менялись правильно, проще будет помнить некоторую «информацию о непрерывности», а именно для начала поворот, вычисленный для предыдущего значения точек, которое показывалось* (а потом, возможно, от него достаточно будет оставить только какой-то кусок данных), и использовать его чтобы найти самый близкий из возможных поворот для новых (близких к старым) точек. Неужели это так трудно попробовать. Далёкость поворотов, задаваемых кватернионами $R_1, R_2$, вероятно стоит искать в виде $f(R_1 R_2^{-1})$ притом с $f$ такой, что $f(x) = f(x^{-1})$, может быть сойдёт $f(x) = |2\ln x|$ — если брать самое маленькое по модулю значение логарифма, это будет угол поворота. Теперь можно найти на бумаге, какой из поворотов выбирать для точек $A, B$ и старого поворота $R_0$, чтобы минимизировать $f(R R_0^{-1})$, а может там выйдет не страшно.

* Если точный закон их движения не обязательно каждый раз известен (двигает пользователь) и легко анализируем — иначе можно рассмотреть по непрерывному случаю для лучшей точности, и возможно совсем избавиться от каких-то вещей в вычислении.

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

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



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

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


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

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