iphone - 如何准确检查表面平整度

标签 iphone ios objective-c ipad cocoa-touch

我正在制作一个应用程序,可以准确检查表面的平坦程度,但问题是当使用核心运动获取加速度计数据时,即使表面平坦,返回的值也不会固定。那么我如何检查表面是否平坦?

http://i.stack.imgur.com/nea3G.png

#define DRIFT_HZ 10
#define DRAFT_RATE 10

CMMotionManager *mManager = [CMMotionManager shareMotionManager];
if ([mManager isAccelerometerAvailable]) {
    [mManager setAccelerometerUpdateInterval:1/DRIFT_HZ];
    [mManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {

        CGPoint center = self.bubbleImageView.center;
        center.x -= accelerometerData.acceleration.y * DRAFT_RATE;

        if (CGRectContainsPoint(self.capsuleImageView.bounds, center)) {
            [self.bubbleImageView setCenter:center];
        }

    }];
}

最佳答案

假设您还没有,请尝试使用运动图示例应用程序(在 xcode 中)。它将让您更好地了解如何使用“devicemotion”输出的组合,例如横滚、俯仰、偏航;以及陀螺仪读数。

仅依靠加速度计读数对于您的应用想法来说会很棘手(但也许并非不可能。)加速度计为您提供 G 力的测量,因此虽然“平坦”和“不那么平坦”之间存在可检测到的差异”,其他因素(例如手部移动或传统设备类型之间的差异)可能会产生太多额外噪音,无法找出可靠的算法。

关于iphone - 如何准确检查表面平整度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17904877/

相关文章:

ios - 使用 iOS 进行信用卡支付

ios - 如何检测音效何时播放完毕?

ios - 如何解决 Caffe IOS 中的未知层类型。?

iphone - 单击单元格时的 UITableViewCellAccessoryCheckmark

ios - Flurry 中未收到崩溃报告(Swift、iOS)

ios - 标签栏 Controller 中的导航栏隐藏了子项的导航栏

iphone - 钥匙串(keychain)访问中找不到公钥和私钥

iphone - Objective-C : Start an object on a background thread -- interact as usual?

ios - 如何快速对齐标签的文本,使其从标签的左上角开始?

objective-c - 像 iOS 邮件应用程序一样缩放 UIWebView