我正在尝试找到iphone的旋转轴。这是我的方法:
步骤1:获取旋转矩阵 - cur_rotM
步骤2:检查旋转矩阵是否与prv_rotM不同;如果pre_rotM不存在,它会跳过循环并将cur_rotM的值赋给pre_rotM。在这一点上,我只是比较(减去)旋转矩阵的所有元素,看看是否存在显着差异。
步骤3:如果cur_rotM和prv_rotM存在显着差异,我使用以下公式计算旋转矩阵: r = prv_rotM * transpose(cur_rotM)
步骤4:旋转轴:{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频率下进行此操作,而我的滤波器可以有效地改变旋转矩阵,从而需要快速移动设备。所以,我在一次弧形运动中得到了几个读数 - 它们都应该显示相同的轴 - 但这不是我所看到的。
有单位吗?如果我要捕获两个轴向量并找到它们之间的最短距离,那么测量的单位是多少?
如果这个问题有意义或需要明确,请告诉我。
非常感谢, 一个