[英]Python Pygame find angle between two points
我目前正在制作一個游戲,該游戲涉及一個精靈圖像,始終要面對鼠標。 我到處都在尋找可以做到這一點的函數,但是我似乎找不到一個。 有沒有一種方法可以計算出一個點到另一個點的夾角? 例如:
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)
這將計算角度的差異,但這不會返回右箭頭。 知道有什么問題嗎?
您正在執行一些不需要的數學運算(例如** 2
和sqrt
),只需要math.atan2
(這將產生弧度A
和B
之間的角度):
math.atan2(angleA_Y - angleB_Y, angleA_X - angleB_X)
math.atan2
的好處是,當deltaX == 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
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.