计算两个四元数之间的旋转增量(作为另一个四元数)

时间:2015-02-25 12:53:54

标签: math quaternions

我有一些初始轮换r0由四元数和一些实际轮换r(也是四元数)表示。我想得到代表旋转三角形的四元数。

E.g。如果r0代表30st OX轮换且r50st OX,则rDelta应包含代表20st OX轮换的四元数。

如何计算rDelta

我猜是:

rDelta = r0.getConjugated() * r

rDelta = r.getConjugated() * r0

?但也许没有。

3 个答案:

答案 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,其中rxr0和{之间缺少的步骤{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);