gpt4 book ai didi

ios - CMDeviceMotion 的磁场属性不正确?

转载 作者:行者123 更新时间:2023-11-28 23:01:50 28 4
gpt4 key购买 nike

我一直在试验 CMDeviceMotion,尤其是 startDeviceMotionUpdatesUsingReferenceFrame。其中的 magneticField 值对我来说似乎不正确。

例如,如果我这样做:

CMDeviceMotion *manager = [[CMDeviceMotion alloc] init];
manager.deviceMotionUpdateInterval = 0.1;
[manager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXArbitraryCorrectedZVertical toQueue:queue withHandler:^(CMDeviceMotion *motion, NSError *error) {
CMMagneticField fld = motion.magneticField.field;
NSLog( @"%5.1f %5.1f %5.1f", fld.x, fld.y, fld.z );
[self handleDeviceMotion:manager.deviceMotion];
}];

它显示了一个大小约为 50 的磁场矢量,但几乎与重力对齐。也就是说,当设备平放在 table 上时,x 和 y 接近于零,而 z 接近于 -50,与我如何旋转设备无关。

对于地球磁场,50 的大小是正确的(根据 Wikipedia 应该在 25 到 65 微特斯拉之间),但是矢量的方向似乎完全错误。我想知道是否:

  • 这只在我所在的地方(瑞典斯德哥尔摩)有些特殊,或者
  • magneticField 属性显示没有地球场的剩余磁场,或者
  • 这是错误

您对 magneticField 属性有类似的体验吗?

最佳答案

OK,谜底揭晓

我现在使用了一个引用框架 CMAttitudeReferenceFrameXTrueNorthZVertical,它给出了与我之前使用的 ...XArbirtraryCorrectedZVertical 类似的结果。然后,我通过使用给定的姿态将磁场矢量旋转回引用框架,计算出磁场矢量相对于重力的位置。

事实证明,磁场非常稳定地指向真北以东 5 度,但与地面的夹角约为 73 度。根据 this map,这完全符合我在瑞典的位置预期。 .

关于ios - CMDeviceMotion 的磁场属性不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9875259/

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