作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在试验 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 属性有类似的体验吗?
最佳答案
OK,谜底揭晓
我现在使用了一个引用框架 CMAttitudeReferenceFrameXTrueNorthZVertical,它给出了与我之前使用的 ...XArbirtraryCorrectedZVertical 类似的结果。然后,我通过使用给定的姿态将磁场矢量旋转回引用框架,计算出磁场矢量相对于重力的位置。
事实证明,磁场非常稳定地指向真北以东 5 度,但与地面的夹角约为 73 度。根据 this map,这完全符合我在瑞典的位置预期。 .
关于ios - CMDeviceMotion 的磁场属性不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9875259/
我想我已经阅读了所有关于这个主题的帖子,但我仍然无法理解一些事情: 问题 1:要获得全局坐标中的磁场矢量,我需要将反转矩阵与磁场矢量相乘,为什么我需要反转旋转矩阵? 问题 2:假设我有一个设备,我可以
我是一名优秀的程序员,十分优秀!