通过在两个位置坐标2个对象来计算四元数

时间:2014-02-14 05:43:01

标签: 3d rotation quaternions

物体以3D旋转。我有旋转中心和2点坐标旋转而不旋转位置。计算将对象从第一个位置旋转到两个位置的四元数。

2 个答案:

答案 0 :(得分:1)

我们必须在对象的第一个位置矢量OA'和OB' OA和OB处于第二位置
Q向量部分四元数Q 0 标量部分

图1 object with 2 point before and after rotation
COMMENT
OA OB - 点矢量产品
OAxOB - 交叉矢量产品

从第一个位置到第二个位置的旋转物体的四元数是:
1例
如果OA
OB'-OB OA'不等于零,那么 Q = Q <子> 0 [(OA-OA ')×(OB-OB')] / [OA * OB'-OA' OB],
 其中Q 0 -2 =([(OA-OA')x(OB-OB')] / [OA
OB'-OA' OB]) 2 1

如果OA OB'-OB OA'= 0,则
2个案例
如果[OA'+ OA] x [OB'+ OB]不等于零且OB-OB'不等于零,则为 存在的是OA-OA'= m
(OB-OB')。搜索它。
Q = n *(m OB'+ OA'),
其中n = Q 0
(OB-OB') 2 /(2 * OB * [OA'xOB'])
Q <子> 0 -2 =(OB-OB ') 4 *(OB' + OA') 2 / (2 * OB * [OA'xOB']) 2 1

如果OA OB'-OB OA'= 0且[OA + OA'] x [OB + OB'] = 0 3个案例
如果OB + OB'不等于零,那么
Q =(OB + OB')/ | OB + OB'|,Q 0 = 0 其他

4个案例
OB OB +'= 0
Q =([OB'] x [OA'])/ | [OB'] x [OA'] |,Q 0 = 0

从四元数我们可以计算旋转矩阵或欧拉角

答案 1 :(得分:0)

看看类似问题的答案 How to find correct rotation from one vector to another?

第二个向量“向上”与第一个“dir”不垂直的区别。只是让它和问题解决