我正在寻找一种优雅的方式来围绕圆的离散增量进行导航。
想象一下,向时钟上的一只指针发出顺时针或逆时针移动一个增量的指令。从 1 开始顺时针移动这很容易 - 只需加一个。但是当你达到 12 并加 1 时,算法需要重置回 1,而不是 13。同样,反过来 - 当你从 1 逆时针移动时,算法应该将你移动到 12,而不是零。
我最初的想法是使用模数,所以想象一下 12 个增量,函数可能是:
new_position = ((curr_position + 12) + increment) % 12
但这显然不能处理从 12->1 或从 12<-1 的转换。
我确信有一个很好的方法来做到这一点......
最佳答案
部分问题在于您认为 12:00 == 12。当您意识到 12:00 == 0 时,这会变得更容易。
关于c# - 围绕钟面或指南针(或任何其他圆圈)导航的算法或函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432369/