物体以3D旋转。我有旋转中心和2点坐标旋转而不旋转位置。计算将对象从第一个位置旋转到两个位置的四元数。
答案 0 :(得分:1)
我们必须在对象的第一个位置矢量OA'和OB'
OA和OB处于第二位置
Q向量部分四元数Q 0 标量部分
图1
的 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”不垂直的区别。只是让它和问题解决