我正在尝试找到 iphone 的旋转轴。这是我的方法:
步骤 1:获取旋转矩阵 - cur_rotM
步骤2:检查旋转矩阵是否与prv_rotM不同;如果 pre_rotM 不存在,则跳过循环并将 cur_rotM 的值分配给 pre_rotM。在这一点上,我只是简单地比较(减去)旋转矩阵的所有元素,看看是否有显着差异。
第 3 步:如果 cur_rotM 和 prv_rotM 存在显着差异,我使用以下公式计算旋转矩阵:r = prv_rotM * transpose (cur_rotM)
第四步:旋转轴:{r32-r23, r13-r31, r21-r12};我还使用 atan2(x,y) 计算了旋转角度,其中 x 是旋转矩阵的大小,y 是 (r11 + r22 + r33 - 1)..
第 5 步:将 cur_rotM 分配给 prv_rotM 并重复循环
我正在使用核心运动框架并使用 iPhone 设备并使用参考框架 XTrueNorthZVertical 在 iOS 平台上进行编程。我的问题是:
旋转轴——这些数字是什么——如果我在水平面上旋转手机,所有数字都接近于零。当我在任何其他轴上围绕设备旋转时,我仍然看到非常小的数字并且它们不断变化,即使我可能围绕同一轴旋转。
我以 1/60 的频率执行此操作,并且我的过滤器要对旋转矩阵进行有意义的更改,需要快速移动设备。所以,我在一个弧线运动中得到了几个读数——它们都应该显示相同的轴——但这不是我所看到的。
有单位吗?如果我要使用两个轴矢量并找到它们之间的最短距离,那么测量的单位是什么?
让我知道这个问题是否有意义或需要澄清。
非常感谢,