如何在Python 3中计算两点之间的角度?

问题描述

我想计算两点之间的角度。例如,假设我正在做一个游戏,我想让一支枪指向鼠标光标,我得到了将枪旋转到该角度所需的角度。

解决方法

使用math库的atan2函数,

p1 = (2,2)
p2 = (-1,5)

# Difference in x coordinates
dx = p2[0] - p1[0]

# Difference in y coordinates
dy = p2[1] - p1[1]

# Angle between p1 and p2 in radians
theta = math.atan2(dy,dx)
,

pygame中,您可以使用pygame.math.Vector2对象和angle_to()计算两个矢量之间的角度:

在下面的示例中,( x0 y0 )是旋转点。 ( x1 y1 )和( x2 y2 )是两个点,它们定义了向量形式( x0 y0 ):

v1 = pygame.math.Vector2(x1-x0,y1-y0)
v2 = pygame.math.Vector2(x2-x0,y2-y0)
angle = v1.angle_to(v2)

angle_to()计算以度为单位的给定矢量的角度。