algorithm - 带 4 个槽的高效旋转托盘

标签 algorithm math

我有一个分成四等份的圆。我需要一种能够以最有效的方式将圆从一个位置旋转到另一个位置的算法。

“托盘”被命名为 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/

相关文章:

c# - 线条旋转问题

javascript - 将小数转换为分数时出现意外结果

关于有序对上的随机样本的算法设计手册(Steven Skiena)第 250 页

algorithm - 滤除噪声并概括来自移动设备的 GPS 数据

algorithm - 仅使用递增、循环、赋值、零的关系操作

algorithm - Floyd-Warshall 算法的最小重量循环

有向加权边图及其权重的算法

php - 生成随机的 "pattern-lock"数字序列

c - 给定一个数字 X,找到一个数字 n,使得 n lg n = X 的上限

python - 将一个数分成(几乎)相等的整数的算法