c# - 围绕钟面或指南针(或任何其他圆圈)导航的算法或函数?

标签 c# java algorithm

我正在寻找一种优雅的方式来围绕圆的离散增量进行导航。

想象一下,向时钟上的一只指针发出顺时针或逆时针移动一个增量的指令。从 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/

相关文章:

c# - 如何使 CQRS 适应项目?

c# - 我可以在方法主体中创建对结构实例的临时引用吗?

java - java中如何将ArrayList中的元素复制到int数组

java - 读取线程转储以调试耗尽的数据库连接池

c# - 使用 naudio 录制后,无效的 wav 文件未找到 fmt block

c# - DataGridView 中的复选框未触发 CellValueChanged 事件

image - Blob 检测的替代算法

c++ - 我怎样才能重新排列数组以更快地获得最小值、中值和最大值?

Java/hibernate/JPA : cannot persist with compound key -> transient object

c++ - 打印从数字创建的可能字符串