关于四元数的问题
向量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