一个四元数旋转问题用作骨骼的计算:知道空间中3个点:ABC,其中知道A的点的四元数旋转值和坐标,BC知道坐标.向量AB转
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/10/03 00:27:49
一个四元数旋转问题
用作骨骼的计算:知道空间中3个点:ABC,其中知道A的点的四元数旋转值和坐标,BC知道坐标.向量AB转到向量AC的位置,会形成一段夹角,求解如何根据这段夹角去旋转A的四元数(也就是说夹角转多少,A的四元数就转多少).最好用c++解决,坐标是float[3],四元数是float[4].如果不能,求详解原因.
用作骨骼的计算:知道空间中3个点:ABC,其中知道A的点的四元数旋转值和坐标,BC知道坐标.向量AB转到向量AC的位置,会形成一段夹角,求解如何根据这段夹角去旋转A的四元数(也就是说夹角转多少,A的四元数就转多少).最好用c++解决,坐标是float[3],四元数是float[4].如果不能,求详解原因.
你这个问题的题面有点问题,你好像没有完全理解四元数
我感觉你题目的意思应该是已知两个向量AB、AC,然后求从B点到C点的以A点为轴旋转过程的四元数表达吧
这个其实很简单,我给你讲一下原理和计算方法,具体代码你自己写吧
首先四元数的本质是旋转轴+旋转角度的表达
先统一一下,你的float[3]我们记作vector3,float[4]记作vector4
- 这里旋转轴是什么?是向量AB和AC的叉乘(即向量的外积)
故求解出的旋转轴我们记做vector3类型的u,normal(u)=1,即要单位化
- 旋转角度记作α的话,我们取β=α/2
旋转轴u和旋转角度β都有了,带入单位四元数(unit quaternion)的公式
四元数q = (sinβu,cosβ)
把vector3向量u展开计算后,就是vector4型的四元数了
即,若q = (x,y ,z w),u=(ux,uy,uz),则x=sinβux,y=sinβuy,z=sinβuz,w=cosβ
我这里略去了很多不影响计算结果的细节问题,比如旋转轴方向,单位四元数的概念及公式推导,如果你对这些感兴趣,那你可以读一下Tomas Akenine-Moller的第四章的内容,言简意赅
我感觉你题目的意思应该是已知两个向量AB、AC,然后求从B点到C点的以A点为轴旋转过程的四元数表达吧
这个其实很简单,我给你讲一下原理和计算方法,具体代码你自己写吧
首先四元数的本质是旋转轴+旋转角度的表达
先统一一下,你的float[3]我们记作vector3,float[4]记作vector4
- 这里旋转轴是什么?是向量AB和AC的叉乘(即向量的外积)
故求解出的旋转轴我们记做vector3类型的u,normal(u)=1,即要单位化
- 旋转角度记作α的话,我们取β=α/2
旋转轴u和旋转角度β都有了,带入单位四元数(unit quaternion)的公式
四元数q = (sinβu,cosβ)
把vector3向量u展开计算后,就是vector4型的四元数了
即,若q = (x,y ,z w),u=(ux,uy,uz),则x=sinβux,y=sinβuy,z=sinβuz,w=cosβ
我这里略去了很多不影响计算结果的细节问题,比如旋转轴方向,单位四元数的概念及公式推导,如果你对这些感兴趣,那你可以读一下Tomas Akenine-Moller的第四章的内容,言简意赅
一个四元数旋转问题用作骨骼的计算:知道空间中3个点:ABC,其中知道A的点的四元数旋转值和坐标,BC知道坐标.向量AB转
知道平面的法向量,和一个点的坐标,求点到平面距离怎么求?
CASS软件中生成的图知道一个点坐标怎么标出其他点坐标
单位向量的计算已知点A坐标为(0.0.3) C的坐标为(1.2.0) 求直线AC的单位向量我知道是拿AC(上面一个
平面坐标点旋转计算公式问题
全站仪测坐标,必须知道两个点的坐标,或者一个点坐标,一个点方位角…才可以测出
全站仪坐标放样,知道测站点和后视坐标,求第三个点坐标(已知的)前进10米点的坐标,怎么算,
如何求一个不规则图形的面积,知道坐标点.
三角函数问题∶求一个点绕原点旋转一个角度后的坐标
点(x,y)绕原点旋转a度,新得到的坐标如何计算出来的
已知在RT△ABC中,∠C=90°,BC=3,AB=5,若把三角形ABC以点C为旋转中心旋转90°,点A旋转到点A'的位
工程水准测量中知道两个点的坐标如何计算距离