首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone 3D指南针

iPhone 3D指南针
EN

Stack Overflow用户
提问于 2011-05-14 23:16:38
回答 2查看 1.9K关注 0票数 2

我正在尝试为iPhone 4构建一个应用程序,它可以让用户“指向”一个硬编码的目的地,目的地所在的地方会出现一个圆点。

首先,我用指南针做一个水平指南针(这将覆盖左/右旋转):

代码语言:javascript
复制
// Heading
nowHeading = heading.trueHeading;

// Shift image (horizontal compass)
float shift = bearing - nowHeading;
destinationImage.center = CGPointMake(shift+160, destinationImage.center.y);

我将点移动160像素,因为屏幕的宽度是320像素。我现在的问题是,我如何扩展这段代码来处理向上和向下?也就是说,如果我把手机放在桌子下面,圆点就不会显示了..我必须指向目的地(就像拍摄照片一样),以便将其绘制在屏幕上。我已经实现了加速器。但我不知道如何联合这些组件来解决我的问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-15 01:26:40

方位应取决于相机的视野。对于iPhone 4,水平角度视图是47.5,因此320点/47.5= xxx点/度,使用它来水平移动。你还需要在加速度计上添加一个自适应滤波器,你可以从苹果的AccelerometerGraph项目中得到一个。

你在一个轴(方位)上的旋转,你应该从加速度计得到另外两个轴上的旋转。两个轴的atan2给你在第三个轴上的旋转。转到UIAcceleration,想象一个轴在物理上刺穿设备,如果这有帮助的话,然后做double xAngle = atan2(acceleration.y, acceleration.z);,这样一旦你有了颠倒的旋转,你就可以重复你对水平方向和垂直视野所做的事情,例如: 60对于iPhone。

这将是一个粗略的实现:)但实现平滑移动是困难的。你可以做的一件事是使用陀螺仪来获得更快的响应,并用加速度计定期校正它们的信号。请看下面的演讲,了解未来的麻烦:Sensor Fusion on Android Devices。这是一个专门用于卡尔曼滤波器的website。如果你敢用四元数,我推荐Andrew J. Hanson的“可视化四元数”。

票数 1
EN

Stack Overflow用户

发布于 2011-05-14 23:45:02

听起来像是你在尝试做一种增强现实的风格。如果是这样的话。这里推荐了几个库和示例代码:

Augmented Reality

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6002728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档