我一直在尝试比较俯仰和滚动模式(2秒录音)读数。
我所做的是记录一个投球和翻滚值10秒。在那10秒钟中,一些类似的运动被应用于设备。
当我在图表上绘制这些值时,值也相同。
仅当从相同方向/位置向设备提供动作时才会发生这种情况。例如,设备躺在桌子上并向设备提供动作。所有的读数都是一样的。
但是如果设备旋转180度。 ccw,读数被反转。
有没有办法可以为每个位置获得相同的读数?通过应用一些转换公式?我使用俯仰滚转和偏航来完成加速度值。但是,不知道如何实现俯仰和滚动本身。
基本上,我想要实现的是Pitch and Roll值应该与偏航无关。
以下是音高值的图表。所有读数都相同,预计两者从图表中的1.5开始。这是设备旋转180度时的两次。 CCW
更新
我尝试将CMAttitude存储在NSUSerDefaults中,然后应用multiplyByInverseOfAttitude。但图形图仍然是反向的。
CMAttitude * currentAtt = motion.attitude;
if (firstAttitude)//firstAttitude is the stored CMAttitude
{
[currentAtt multiplyByInverseOfAttitude:firstAttitude];
}
CMQuaternion quat = currentAtt.quaternion;