首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

关于四元数的有关问题

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

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

热点排行