作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试解决这个问题,但我仍在努力理解解决这个问题的逻辑。
hour degree = 360 / 12 = 30
minutes degree = 360 / 12 / 60 = 0.5
因此,据此,我认为我可以在 python 中制定以下函数:
def clockangles(hour, min):
return (hour * 30) + (min * 0.5)
这个小时,它工作正常,因为它似乎有一个 1=1 映射。但目前至少有一个问题。当时间为 0 分钟时,分针指向 12。
例如:
晚上 7 点:指针指向晚上 7 点,分钟指向 12 点
如何正确计算分钟数?请帮助我理解公式。
编辑: 例如,如果我在晚上 7 点调用上面的函数,例如 clockangles(7,0),我得到值 210。但是,根据 this link 7:00 的角度是 150
最佳答案
好的。您正在尝试找出两只手之间的角度。然后这个:
minutes degree = 360 / 12 / 60 = 0.5
只是时指针每分钟移动的度数。想一想 - 分针每小时走完整个 360 度。因此,一整圈只有 60 分钟。 360/60 = 分针每分钟 6 度。
因此,您需要找出时针和分针之间的差异。因此函数现在看起来像:
def clockangles(hour, minute):
return (hour * 30 + minute * 0.5) - (minute * 6)
现在,这是有效的,所以我们可以到此为止。但是我应该解释一下,这可以给出大于 180 度和负角的答案。如果您不想要这些东西(并且从您的评论看来您不想要),请更正它们。
def clockangles(hour, minute):
return abs((hour * 30 + minute * 0.5) - (minute * 6))
现在,没有负角。
def clockangles(hour, minute):
ans = abs((hour * 30 + minute * 0.5) - (minute * 6))
return min(360-ans,ans)
现在,顺时针和逆时针测量形成的两个角中较短的一个。
关于python - 如何计算时针和分针之间的角度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20601427/
我是一名优秀的程序员,十分优秀!