博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
陀螺仪操作摄相机,可以旋转,但角度(轴)还不对
阅读量:5306 次
发布时间:2019-06-14

本文共 1482 字,大约阅读时间需要 4 分钟。

不容易啊,搞了好几天,几乎重看了一遍,3d数学基础,写的不对的一定得指出来哦, 原贴地址:

可以旋转,但角度(轴)还不对(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];}

转载于:https://www.cnblogs.com/iapp/archive/2012/03/31/3631819.html

你可能感兴趣的文章
uboot start.S解析之1——头文件
查看>>
struts-tags通用标签基本用法
查看>>
软件架构_黑板模式
查看>>
log4delphi使用(转)
查看>>
Winform 数据验证
查看>>
MongoDB基础使用
查看>>
[转]跨机房问题
查看>>
.NET中获取电脑名,IP地址,当前用户的方法属性大整合
查看>>
http请求中的data&json
查看>>
java 类的继承和接口的继承
查看>>
常见的HTML5语义化标签
查看>>
python装饰器
查看>>
SpringBoot 项目 部署 jar方式
查看>>
SYSUCPC2017 1007 Tutu’s Array II
查看>>
NGUI使用Bitmap制作特殊数字
查看>>
第二阶段冲刺01
查看>>
三层架构
查看>>
204
查看>>
Requests基础的一些应用和Xpath
查看>>
~ 按位取反
查看>>