我有一个分成四等份的圆。我需要一种能够以最有效的方式将圆从一个位置旋转到另一个位置的算法。
“托盘”被命名为 1 到 4。
我现在使用算法:
int degrees = (currentPos - newPos) * 90;
使用该算法,我得到了我需要将圆旋转多少度才能到达新位置。但是,如果我在位置 4 并且需要转到 1,结果将是 4 - 1 * 90 = 270。在这种情况下,最有效的是旋转 -90 而不是 270。(从 1 移动也是如此到 4).
有人知道如何做到这一点吗?我当然可以使用 if 语句:
if(degrees >= -180 && degrees <= 180)
sortingTrayMotor.rotate(degrees);
else if(degrees == -270)
sortingTrayMotor.rotate(90);
else
sortingTrayMotor.rotate(-90);
我想有更好的方法可以通过一些 mod 操作来做到这一点。
最佳答案
正是你在做什么,只有当结果 > 180 度时,减去 360 度。
关于algorithm - 带 4 个槽的高效旋转托盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4625324/