当前位置首页 > 信息公告

Re:angle_to()函数应返回发条手从 p1 到 p2 旅行所需的度数

更新时间:2024-07-12 文章作者:佚名 信息来源:网络整理 阅读次数:

回复:“()应该返回钟表指针从 p1 移动到 p2 所需的度数。”e9O物理好资源网(原物理ok网)

在您的代码中,在使用 p1 计算角度之前,您从 p2 中减去点 atan2 的坐标。本质上,您认为 p1 是时钟的中心,因此谈论“旋转从 p1 移动到 p2”没有任何意义。您需要指定三个点:旋转的中心、点 1 和点 2。如果坐标为 xc、yc、x1、y1、x2、y2留学之路,那么您需要执行以下操作:e9O物理好资源网(原物理ok网)

代码语言:e9O物理好资源网(原物理ok网)

复制e9O物理好资源网(原物理ok网)

顺时针方向e9O物理好资源网(原物理ok网)

angle1 = atan2(y1-yc, x1-xc)
angle2 = atan2(y2-yc, x2-xc)
relative_angle = angle1 - angle2
# now convert to degrees and handle +/-360 issues.
e9O物理好资源网(原物理ok网)

使用您的新规范进行更新:“返回时钟必须转到从 0° 到连接 P1 和 P2 的线的度数”:e9O物理好资源网(原物理ok网)

代码语言:e9O物理好资源网(原物理ok网)

复制e9O物理好资源网(原物理ok网)

angle = degrees(atan2(p2[1], p2[0]))
e9O物理好资源网(原物理ok网)

这将返回 -pi 到 +pi(-180 到 +180 度)范围内的顺时针角度(以像素坐标为单位)。在您的示例中,((100,100), (25,25))(“预期 225 度,但实际为 135 度”),atan2 将得出 -,这意味着逆时针方向 +。这是您想要的答案(模 360 度)顺时针方向,因为您没有指定时钟指针应该顺时针旋转还是逆时针旋转(您只是指定了起始位置相对于 3 点钟位置是顺时针旋转还是逆时针旋转)。但是,根据(默认为 False)的值,您可以做一些复杂的事情。e9O物理好资源网(原物理ok网)

如果您想确保时钟指针顺时针转动,则应该将得到的角度加上 360 度(如果为负数)顺时针方向,而不是恢复该角度。e9O物理好资源网(原物理ok网)

(注:我删除了旧答案;前两条评论指的是旧答案。)e9O物理好资源网(原物理ok网)

发表评论

统计代码放这里