2014 dxdy logo

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

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




На страницу Пред.  1, 2, 3, 4
 
 Re: Поворот сферы между двумя точками
Сообщение12.01.2020, 23:27 
Аватара пользователя
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 
lek в сообщении #1434797 писал(а):
А почему не воспользоваться стандартной формулой вращения на единичный кватернион?

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

 
 
 
 Re: Поворот сферы между двумя точками
Сообщение13.01.2020, 14:43 
Аватара пользователя
При любом выборе значений A и B существует бесконечное число допустимых осей (см. выше). В данном (особом) случае подходит любая ось, проходящая через центр сферы и ортогональная диаметру, соединяющему полюсы A и B.

 
 
 
 Re: Поворот сферы между двумя точками
Сообщение13.01.2020, 15:43 
lek
Я так понял, у george66 проблема в том, что надо построить непрерывно меняющийся в зависимости от времени поворот, исходно полагаясь на положения двух точек (тоже непрерывные по времени) и требовании, что одна из них им переводится в другую, и загвоздка как раз в том, как проще выбрать (единственный правильный) поворот для моментов, когда точки — антиподы. С кватернионами-то у george66 всё очень хорошо, насколько я начитался.

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

 
 
 
 Re: Поворот сферы между двумя точками
Сообщение13.01.2020, 22:34 
А вот такую вещь пытаюсь понять. Допустим, мы задаём точки проективного пространства четвёрками чисел с точностью до множителя (удобно использовать кватернионы нормы единица). И делаем всякую линейную алгебру - находим плоскость по трём точкам, прямую по двум точкам, точку пересечения плоскости и прямой и т.д. Всё это более-менее просто, вычисляются миноры каких-то матриц. А теперь будем задавать кватернион нормы единица тремя углами. Можно ли всё перечисленное вычислять непрерывно? Допустим, по трём точкам (заданным тремя углами каждая) находить три угла проходящей через них плоскости.

 
 
 
 Re: Поворот сферы между двумя точками
Сообщение14.01.2020, 14:47 
Вы углы для плоскости находите, взяв углы полярной ей относительно некоторой сферы точки? Тогда если сфера подобрана правильно (скажем, стереографический образ экватора?), разрывность для некоторых случаев легко видно: вот возьмём плоский случай, пусть северный полюс сферы отображается на плоскости в бесконечность и мы берём точку, полярную интересующей прямой относительно образа экватора. Если одну из точек перемещать так, что прямая через них будет проходить через образ южного полюса, полярная этой прямой точка будет в этот момент убегать в бесконечность и приходить с другой стороны, и она будет иметь разрыв долготы.

 
 
 
 Re: Поворот сферы между двумя точками
Сообщение14.01.2020, 15:08 
Нет, там поляритет другой и очень простой - точке сопоставляется плоскость с той же четвёркой проективных координат. Точка не может лежать на своей полярной плоскости. Полярная плоскость точки $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 
А с тем поляритетом та же проблема. На том же случае двумерной сферы мы можем сделать, чтобы полярная прямой точка прошла через полюс, перескочив с одного меридиана на другой, изломав себе соответствующую угловую координату. :-)

 
 
 
 Re: Поворот сферы между двумя точками
Сообщение14.01.2020, 17:19 
Давайте попробуем уточнить задачу. Требуется способ задавать кватернионы нормы единица (точки трёхмерной сферы) и чисто мнимые кватернионы нормы единица (точки обычной сферы) некоторой избыточной информацией, чтобы
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 
Аватара пользователя
george66 в сообщении #1435156 писал(а):
Требуется способ задавать кватернионы нормы единица (точки трёхмерной сферы) и чисто мнимые кватернионы нормы единица (точки обычной сферы) некоторой избыточной информацией, чтобы
1) по двум точкам обычной сферы непрерывно находился поворот, переводящий одну в другую;

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

 
 
 
 Re: Поворот сферы между двумя точками
Сообщение14.01.2020, 23:37 
Вот вы предлагаете обогатить кватернионы, но по-моему всё же проще обогатить контекст вычисления поворота, раз на кону непрерывность поворота в зависимости от некоторого параметра. Чем обогатить точки и следить, чтобы те дополнительные вещи у них менялись правильно, проще будет помнить некоторую «информацию о непрерывности», а именно для начала поворот, вычисленный для предыдущего значения точек, которое показывалось* (а потом, возможно, от него достаточно будет оставить только какой-то кусок данных), и использовать его чтобы найти самый близкий из возможных поворот для новых (близких к старым) точек. Неужели это так трудно попробовать. Далёкость поворотов, задаваемых кватернионами $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