zoukankan      html  css  js  c++  java
  • 陀螺仪操作摄相机,可以旋转,但角度(轴)还不对

    不容易啊,搞了好几天,几乎重看了一遍,3d数学基础,写的不对的一定得指出来哦, 原贴地址:http://blog.csdn.net/wzq9706/article/details/7415846

    可以旋转,但角度(轴)还不对(x轴除外)

    -(void)update:(ccTime)time {
        
        CCCamera *cam = [self camera];
        
        if (nil == cam) {
            NSLog(@"Call Camera faild!");
            return;
        }
        
        Document* doc = [Document sharedDocument];
        
        kmVec3 center = {0, 0, -1}; 
        kmVec3 eye = {0, 0, 0};
        kmVec3 up = {0, 1, 0};
        
        //kmVec3Subtract(¢er, &eye, ¢er);
        
        // 得到陀螺仪数据
        float yaw = (float)(CC_RADIANS_TO_DEGREES(doc.motionManager.deviceMotion.attitude.yaw));
        float pitch = (float)(CC_RADIANS_TO_DEGREES(doc.motionManager.deviceMotion.attitude.pitch));
        float roll = (float)(CC_RADIANS_TO_DEGREES(doc.motionManager.deviceMotion.attitude.roll));
        
        // 构建摄相机矩阵
        kmMat4 camMat;
        kmMat4Identity(&camMat);
        
        // 构建旋转矩阵
        kmQuaternion vec4;
        kmMat4 rotaMat;
        kmQuaternionRotationYawPitchRoll(&vec4, yaw, pitch, roll);
        kmMat4RotationQuaternion(&rotaMat, &vec4);
        
        // 构建平移矩阵
        kmMat4 transMat;
        kmMat4Translation(&transMat, 0, 0, 100);
        
        // 矩阵变换
        kmMat4Multiply(&camMat, &camMat, &rotaMat);
        kmMat4Multiply(&camMat, &camMat, &transMat);
        
        // 用最终的矩阵变换相应的点
        kmVec3Transform(¢er, ¢er, &camMat);
        kmVec3Transform(&up, &up, &camMat);
        kmVec3Transform(&eye, &eye, &camMat);
        
        [cam setEyeX:eye.x eyeY:eye.y eyeZ:eye.z];
        [cam setCenterX:center.x  centerY:center.y centerZ:center.z];   
        [cam setUpX:up.x upY:up.y upZ:up.z];
    }


  • 相关阅读:
    机器学习-正则化方法
    机器学习-回归算法
    机器学习算法一
    机器学习概览
    tensorflow机器学习初接触
    tensorflow决策树初接触
    tensorflow语法
    tensorflow第一个例子简单实用
    Hyperledger Fabric 1.0架构入门
    结合《XXXX需求征集系统》分析可用性和可修改性战术
  • 原文地址:https://www.cnblogs.com/iapp/p/3631819.html
Copyright © 2011-2022 走看看