gpt4 book ai didi

iOS CoreMotion - 计算高度差

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:57:39 31 4
gpt4 key购买 nike

是否可以使用 CoreMotion 的数据计算 iPhone 移动时的高度差?

例如,保存 iPhone 的初始位置,然后移动 iPhone,从而得到新的位置。我有兴趣检测 iPhone 的高度是否从其初始位置移动。我不需要绝对单位,只需要一个相对值,表示高度相对于原始高度的变化百分比。

let manager = CMMotionManager()

// Save initial attitude
var initialAttitude = manager.deviceMotion.attitude

if manager.deviceMotionAvailable {
manager.startDeviceMotionUpdatesToQueue(NSOperationQueue.mainQueue()) {
[weak self] (data: CMDeviceMotion!, error: NSError!) in

// Get the difference between the initial and new attitude
data.attitude.multiplyByInverseOfAttitude(initialAttitude)

// Is there a way to calculate the relative change in height?

}
}

最佳答案

在较新的 iPhone 上,确实可以从随附的气压计(从 iphone 6 开始提供)中获取相对高度。 Core Motion 已扩展以适应这种情况。

CMAltimeter - 提供高度变化事件的传递。

CMAltitudeData - 封装高度变化事件(以米级分辨率)。

这种东西应该可以工作...

 if CMAltimeter.isRelativeAltitudeAvailable() {
altimeter.startRelativeAltitudeUpdatesToQueue(altimeterQueue,
withHandler:
{ ( data:CMAltitudeData?,
error: NSError?) in
if let altitudeData = data {
self.timeStamp = altitudeData.timestamp
self.relativeAltitude = altitudeData.relativeAltitude
}
}
)
}

我们没有得到绝对高度,只有相对高度变化。初始高度被视为 0。因此您无法真正获得百分比变化(没有任何意义),但您可以获得米级精度的绝对变化。

关于iOS CoreMotion - 计算高度差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36038491/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com