我有一些初始轮换r0
由四元数和一些实际轮换r
(也是四元数)表示。我想得到代表旋转三角形的四元数。
E.g。如果r0
代表30st OX
轮换且r
为50st OX
,则rDelta
应包含代表20st OX
轮换的四元数。
如何计算rDelta
?
我猜是:
rDelta = r0.getConjugated() * r
或
rDelta = r.getConjugated() * r0
?但也许没有。
答案 0 :(得分:0)
您的四元数q(R2/R1)
代表R2 w.r.t的轮换。 R1
您的四元数q(R3/R1)
代表R3 w.r.t的轮换。 R1
你想要转动R3 w.r.t. R2
那是q(R3/R2) = q(R3/R1) * q(R1/R2) = q(R3/R1) * conjugate(q(R2/R1))
,其中*是四元数的乘积
答案 1 :(得分:0)
所以你想找到rx
哪里有rx * r0 == r1
?
rx * r0 * conj(r0) == r1 * conj(r0)
rx == r1 * conj(r0)
您需要知道的是,q = q2 * q1
周围的旋转相当于q1
周围的旋转,然后是q2
。如果您想从初始轮次r0
转到最终轮换r1
,则只需替换r1 = rx * r0
,其中rx
是r0
和{之间缺少的步骤{1}}。
答案 2 :(得分:0)
这取决于你的rDelta将如何应用(从右或左)
1)r = r0 * rDelta; r = r0 * conj(r0)* r; rDelta == conj(r0)* r;
2)r = rDelta * r0; r = r * conj(r0)* r0; rDelta == r * conj(r0);