4

我正在使用核心运动来获取在 iPod touch 3 上运行项目的设备运动。我的方法中使用的 CMAttitudeReferenceFrame - (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame toQueue:(NSOperationQueue *)queue withHandler:(CMDeviceMotionHandler)handler 是 CMAttitudeReferenceFrameXArbitraryZVertical。根据文档,它描述了一个参考系,其中 Z 轴是垂直的,X 轴指向水平面中的任意方向。当设备静止在桌面上时,屏幕朝上,cmdevicemotion 的重力读数约为 -1,这是正确的。但是,当我将手机翻转 90 度以使垂直于屏幕的矢量指向我时,沿 Z 的重力值不会显示在 -1 左右。我认为 Z 轴将保持在指向地球的垂直方向上。还是Z轴沿着屏幕的法线固定?另外,如果我手持设备四处走动,使屏幕的法线沿着地球重力的方向,然后一段时间后,给设备一些偏航,比如 45 度,CMAttitudeReferenceFrameXArbitraryZVertical 的任意 X 轴仍然指向我的单向运动的方向(在我的参考框架中是 x)?

如果用户不走直线怎么办,例如,如果我在一个圆圈中移动,那么使用参考框架 CMAttitudeReferenceFrameXArbitraryZVertical(或 CMAttitudeReferenceFrameXArbitraryCorrectedZVertical)的任意 X 轴是否会与圆相切,就像我的圆周运动速度一样,分为两个情况: 1. 如果我拿着设备,使屏幕的法线矢量与指向地球的重力方向重合,默认的 Y 轴沿着设备的平面,指向我的运动方向,是相切的当我沿着圆周移动时到圆 2。没有上述不改变我的参考框架中设备的空间方向的限制,我只是在玩弄设备,导致它处于不同的任意方向,而我沿着移动周长

4

0 回答 0