读书人

关于四元数的有关问题

发布时间: 2013-02-24 17:58:56 作者: rapoo

关于四元数的问题
向量a(0,0,1),旋转角 10度
Q1=[cos(10/2),sin(10/2)*a]构造出四元数Q1 0.00495,0.00000,0.00000,0.08716

Q = Q1 * Q1 的话,按网上的方法就是叠加两次旋转

计算出来的四元数 Q = -0.00757,0.00000,0.00000,0.00086

但是这个四元数是有问题的,更本就不是叠加出来的四元数
为什么呢?高手求教
[解决办法]
角度转换成弧度先。

PVRTQUATERNION q;
float angle=10.0f * (PVRT_PI/180);
PVRTVec3 axis=PVRTVec3(0, 0, 1);
PVRTMatrixQuaternionRotationAxis(q, axis, angle);

printf("before: angle = %.5f\n",angle);

PVRTQUATERNION qq;
PVRTMatrixQuaternionMultiply(qq, q, q);
float angle_;
PVRTVec3 axis_;
PVRTMatrixQuaternionToAxisAngle(qq,axis_,angle_);

printf("after: angle = %.5f\n",angle_);

// before: angle = 0.17453
//after: angle = 0.34907

读书人网 >网络游戏

热点推荐