2012-05-19 20 views
4

我知道(俯仰,偏航,滚转)坐标系统在数学上有它自己的缺陷。不过,我真的希望从这个坐标取而代之或者派生出来的东西可以成为另一种选择当使用CMDeviceMotion时,如果设备直线上升(pitch = 90),它确实不稳定。无论如何解决这个问题?

我试图做的是在真实世界中移动设备(假设它是一个iphone)并试图找出关于用户眼睛的偏航和俯仰。因此,偏航的范围应该是(-180,180),而俯仰的范围应该是(-90,90)。当我将iPhone从底部移动到前端时,CMDeviceMotion给我的音高变化范围从0到90,同时我将iphone(仍然面对我)从前端移动到顶端,CMDeviceMotion使我从90后改变了音高这些都很好,我对音高数据非常满意。

但是,当俯仰接近90°时,偏航非常不稳定并且不稳定。请问,这不是问题,因为我可以忽略音高在90°左右时的偏航变化。然而,真正的问题是在俯仰增加和俯仰减少之前,偏航的值显着变化。我的意思是它不仅不稳定,而且意味着变化!改变了180(Pi)。我想这是因为坐标完全改变。但我现在失去了坐标转换。

回答

2

你刚刚描述的这个混乱的解决方法正是你不应该使用滚动,俯仰和偏航的原因。

你要么继续走这条路,把这个东西弄得更大或者是use rotation matrices or quaternions

+0

感谢您的回答。我确实尝试过四元数,但最后我不得不将矩阵转移到滚动,俯仰和偏航......至少现在更稳定 – user1386058

+0

好吧,很高兴听到它,祝你好运! – Ali