我正在尝试解决此问题,但我仍在努力理解解决此问题的逻辑。

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/

10-11 05:40