如果我正确理解了您的问题,那么(1)您在此处描述的计算可能足够快,(2)它实际上可能无法执行您想要的操作,以及(3)实际上会很慢的东西实施将在别处。
所以,我认为你提议这样做。(1) 连续数次在三维空间中识别……某物……(也许是用户的手)的位置。(2) 对于(比如说){x,y} 和 {x,z} 中的每一个,查看每个点的这两个坐标,计算相关系数(这是您的公式所描述的)并查看它是否接近 +- 1. (3) 如果两个相关系数都接近 +-1,则这些点大致位于一条直线上;计算那条线的梯度(使用类似于相关系数的公式)。(4) 如果梯度都非常接近 0 或 +- 无穷大,那么您的线大约平行于一个轴,这就是您要识别的情况。
1:速度够快吗?您可能会以每秒 50 帧左右的速度进行采样,并且您的手势可能需要一秒钟才能执行。因此,您将拥有大约 50 个职位。因此,您需要的算术运算总数可能是几百个(包括适度数量的平方根)。在最坏的情况下,您可能会在慢速 ARM 处理器或其他东西上以模拟浮点执行此操作;在这种情况下,每个算术运算可能需要几百个周期,所以整个事情可能是 100k 个周期,对于运行在 100MHz 的非常慢的处理器来说,这大约是一毫秒。您不会对进行此计算所花费的时间有任何问题。
2:这是对的吗?目前尚不清楚这是正确的计算。例如,假设您的用户的手沿 x 轴快速来回移动几次;这会给你一个积极的结果;那是你要的吗?假设用户尝试了您想要的手势,但移动的角度略有错误;你可能会得到一个否定的结果。假设它们正好沿着 x 轴移动一点,然后沿着 y 轴移动一点;那么在 {x,y}、{x,z} 和 {y,z} 平面上的投影都将通过您的测试。这些似乎都是您可能不想要的结果。
3:真正的成本在哪里?这一切都假设您已经获得 (x,y,z) 坐标。获得这些可能会比处理它们更昂贵。例如,如果您有某种基于相机的系统,那么每一帧都会有一些重要的图像处理。或者,也许您正在整合来自加速度计的数据(顺便说一下,这可能会产生令人讨厌的不准确位置结果);您可能正在执行一些过滤和其他计算以获取位置数据。我敢打赌,执行这样的计算的成本将大大低于首先获取坐标的成本。