Тадасана
Просветленный
(38281)
3 года назад
Вложим R^3 (как множество) и группу вращений SO(3) в тело кватернионов следующим образом.
Вектору x = (x1, x2, x3)^T сопоставим кватернион q(x) = i*x1 + j*x2 + k*x3
Кватерниону будем соспоставлять тот вектор, которой задает его мнимая часть.
Вращению f на угол 2a (против часовой) вокруг единичного вектора v сопоставим кватернион q(f) = cos(a) + sin(a)*q(v) (с т. до умножения кватерниона на действительную константу).
В таком представлении кватернионы вращают пространство сопряжениями:
Кватернион q(f)*q(x)*q^-1(f) - соответствует вращению f вектора x.
Обращению вращения соответствует изменение знака действительной части кватерниона вращение ну или (что удобнее) его сопряжение - на -1-то мы имеем право домножить, см. выше.
И вот мы облегчили задачу - вместо вычисления теоретико-группового коммутатора матриц поворота достаточно взять коммутатор кватернионов.
Чтоб определить углы, на которые можно вращать вокруг Ox и Oy, чтоб коммутатор вращал относительно Oz:
(упрощая - беру те, у которых определен ctg(x/2)),
Достаточно в действительных z, x, y решить уравнение
Im (x - i - k)(y - j - k)(x + i + k)(y + j + k) = zk
Дальще - просто аккуратно раскрыть скобки с учетом того, что произведение двух мнимых единиц = третья*(четность перестановки их трех)
Ну и квадрат каждой равен -1.
Мог в арифметике наврать, но принципиально, вроде, ни в чем не наврал.
ТадасанаПросветленный (38281)
3 года назад
Ой.
Im (x - i)(y - j)(x + i)(y + j) = zk
Ну, давайте при i коэффициент найдем и обгнулим
xyy + x*(-j)*j = xyy + x = 0
Уже задница - у нас x и y действительные.
При вращении на углы, у которых ctg половинного определен и не ноль, коммутатор никак не будет вокруг z вращать.
Вроде, так.
ТадасанаПросветленный (38281)
3 года назад
Т. е. чтоб коммутатор вращений вокруг Ox и Oy вращал вокруг Oz, эти вращения должны быть или id, или осевыми симметриями.
Как-то так, надо проверять.
Но это чисто ради спортивного интереса я сдалал - полпытался найти углы для вращений вокруг Ox и Oy, при которых теоретико-групповой коммутатор вращает вокруг Oz.
ТадасанаПросветленный (38281)
3 года назад
Начиная с "достаточно в действительных числах" глупых арифметических. ошибок и исправлений много.
Я на мобильнике, ребенка искупаю, попробую с этого места расписать так, чтоб ошибок поменьше было. У меня рука не набита умножать кватернионы (из тела, а не группы единичных) в уме, хотя там все по дистрибутивности/линейности раскрывается.
ВасилискПросветленный (33031)
3 года назад
Задним числом задачки всегда просты. Но вот ведь был уверен, что вращение будет чисто по z (из смутных "соображений симметрии")
Магомед Албеков
Знаток
(259)
3 года назад
Вложим R^3 (как множество) и группу вращений SO(3) в тело кватернионов следующим образом.
Вектору x = (x1, x2, x3)^T сопоставим кватернион q(x) = i*x1 + j*x2 + k*x3
Кватерниону будем соспоставлять тот вектор, которой задает его мнимая часть.
Вращению f на угол 2a (против часовой) вокруг единичного вектора v сопоставим кватернион q(f) = cos(a) + sin(a)*q(v) (с т. до умножения кватерниона на действительную константу).
В таком представлении кватернионы вращают пространство сопряжениями:
Кватернион q(f)*q(x)*q^-1(f) - соответствует вращению f вектора x.
Обращению вращения соответствует изменение знака действительной части кватерниона вращение ну или (что удобнее) его сопряжение - на -1-то мы имеем право домножить, см. выше.
И вот мы облегчили задачу - вместо вычисления теоретико-группового коммутатора матриц поворота достаточно взять коммутатор кватернионов.
Чтоб определить углы, на которые можно вращать вокруг Ox и Oy, чтоб коммутатор вращал относительно Oz:
(упрощая - беру те, у которых определен ctg(x/2)),
Достаточно в действительных z, x, y решить уравнение
Im (x - i - k)(y - j - k)(x + i + k)(y + j + k) = zk
Дальще - просто аккуратно раскрыть скобки с учетом того, что произведение двух мнимых единиц = третья*(четность перестановки их трех)
Ну и квадрат каждой равен -1.
Мог в арифметике наврать, но принципиально, вроде, ни в чем не наврал.