本文介绍了计算四元数在两个位置坐标2点对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 在三维物体旋转。我有旋转中心和坐标2点在旋转和不可旋转的位置。计算四元数的旋转物体从第一位置移动到第二的位置。Object rotate in 3D. I have rotation center and coordinate of 2 point in rotate and not rotate position. Calculate quaternion that rotate object from first position to two position.推荐答案我们必须在对象第一位置向量OA'和OBOA和OB在第二位置Q矢量部分四元数Q 标部分We have to vector OA' and OB' in first position of objectOA and OB in second positionQ vector part quaternion Q scalar part 图1 注释OA·OB - 点向量积OAxOB - 跨向量积从第一现在的位置四元数旋转的对象第二是: 1的情况下如果OA * OB'-OB * OA'不等于零,那么Q = Q * [(OA-OA')×(OB-OB')] / [OA * OB'-OA'* OB], 其中Q =([(OA-OA')×(OB-OB')] / [OA * OB'-OA'* OB]) 2 +1如果OA * OB'-OB OA *'= 0,则 2的情况下如果[OA'+ OA]×[OB'+ OB]不等于零和OB-OB不等于零,然后有米的OA-OA'= M *(OB-OB)。搜索。Q = N *(M * OB'+ OA),其中n = Q *(OB-OB') /(2 * OB * [OA'xOB'])Q=(OB-OB')*(OB'+OA')/(2*OB*[OA'xOB'])+1如果OA * OB'-OB * OA'= 0和[OA + OA']×[OB + OB'] = 0 3的情况下如果OB + OB'not等于零,那么Q =(OB + OB')/ | OB + OB'|,Q = 0否则 4的情况下OB + OB'= 0Q =([OB']×[OA'])/ | [OB']×[OA] |,Q = 0从四元数,我们可以计算出旋转矩阵或欧拉角 fig.1COMMENTOA*OB - dot vector productOAxOB - cross vector productQuaternion of rotation object from first positon to second was:1 caseIf OA*OB'-OB*OA' not equal zero, thenQ=Q*[(OA-OA')x(OB-OB')]/[OA*OB'-OA'*OB], where Q=([(OA-OA')x(OB-OB')]/[OA*OB'-OA'*OB])+1If OA*OB'-OB*OA'=0, then2 caseif [OA'+OA]x[OB'+OB] not equal zero and OB-OB' not equal zero, thenexist m that OA-OA'=m*(OB-OB'). Search it.Q=n*(m*OB'+OA'),where n=Q*(OB-OB')/(2*OB*[OA'xOB'])Q=(OB-OB')*(OB'+OA')/(2*OB*[OA'xOB'])+1If OA*OB'-OB*OA'=0 and [OA+OA']x[OB+OB']=03 caseIf OB+OB'not equal zero, thenQ=(OB+OB')/|OB+OB'|, Q=0else4 caseOB+OB'=0Q=([OB']x[OA'])/|[OB']x[OA']|, Q=0From quaternion we can calculate rotation matrix or Euler angles 这篇关于计算四元数在两个位置坐标2点对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
06-15 13:24