1

我有一个定制的指南针,用作我编写的导航应用程序的一部分。我还编写了一种算法,可以平滑罗盘(一种低通滤波器)。一切都很好,指南针很流畅。我将当前度数和先前度数参数传递给 RotateAnimation。问题是,当您使用指南针快速旋转时,在某个点之后,当前度数和先前度数之间的差距太大,以至于旋转将方向切换到距离最短的路径。它与低通滤波器发生的那种滞后有关——它必须赶上实时方向。我想知道是否有人处理过这个问题(我在商店里看到了一些处理这个问题的指南针应用程序)或者有某种算法/解决方案来保持旋转的方向。

RotateAnimation rotate = new RotateAnimation(startingPointer, pointerDeg, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
    rotate.setInterpolator(new LinearInterpolator());
    rotate.setDuration(ROTATION_INTERVAL);
    rotate.setFillAfter(true);
    pointer.setAnimation(rotate);
    startingPointer = pointerDeg;
4

0 回答 0