Python Pygame找到两点之间的角度

时间:2017-01-11 19:25:45

标签: python pygame angle

我目前正在制作一款涉及精灵图像的游戏,以便始终面向鼠标。我到处寻找能够做到这一点的功能,但我似乎无法找到它。 有没有办法计算从一个点到另一个点的差异角度? 例如:

angleA_X, angleA_Y = (12, 52)
angleB_X, angleB_Y = (45, 11)

deltaX = angleB_X - angleA_X
deltaY = angleB_Y - angleA_Y

tan = deltaX/deltaY

formula = math.atan(tan)

formula = formula ** 2
formula = math.sqrt(formula)

formula = math.degrees(formula)

print(formula)

这将计算角度的差异,但这不会返回右侧的anwser。知道什么是错的吗?

3 个答案:

答案 0 :(得分:2)

您正在进行一些不需要的数学运算(例如** 2sqrt),您只需要math.atan2(这将产生{之间的弧度角度} {1}}和A):

B

math.atan2(angleA_Y - angleB_Y, angleA_X - angleB_X) 还可以在math.atan2时使用。

答案 1 :(得分:0)

如果你真的需要一个角度

angle = math.atan2(ymouse-ysprite, xmouse-xsprite)

如果您更需要正弦和余弦

dy, dx = ymouse-ysprite, xmouse-xsprite
r = math.hypot(dx, dy)
s, c = dy/r, dx/r

答案 2 :(得分:0)

PyGame pygame.math.Vector2() angle_to()

import pygame

angleA_X, angleA_Y = (12, 52)
angleB_X, angleB_Y = (45, 11)

a = pygame.math.Vector2(angleA_X, angleA_Y)
b = pygame.math.Vector2(angleB_X, angleB_Y)

zero = pygame.math.Vector2()

print( zero.angle_to(a-b) ) # 128.8298249049704