Python 在pygame中如何将三角形旋转到某个角度?

Python 在pygame中如何将三角形旋转到某个角度?,python,python-3.x,pygame,Python,Python 3.x,Pygame,我需要在屏幕中心旋转一个三角形而不是图像。我见过其他人回答这个问题,但三角形不能指向上方 我曾尝试使用其他人的功能,但他们只看到部分工作,就像我上面提到的功能一样 导入pygame disp=pygame.display.set_mode200200 输入数学 def旋转_三角形使用_位置,三角形位置: 这里的代码 导入时间 尽管如此: 时间1 pygame.Surface.filldisp,255255 中心=100100 半径=10 鼠标位置=pygame.mouse.get\u位置 对于p

我需要在屏幕中心旋转一个三角形而不是图像。我见过其他人回答这个问题,但三角形不能指向上方

我曾尝试使用其他人的功能,但他们只看到部分工作,就像我上面提到的功能一样

导入pygame disp=pygame.display.set_mode200200 输入数学 def旋转_三角形使用_位置,三角形位置: 这里的代码 导入时间 尽管如此: 时间1 pygame.Surface.filldisp,255255 中心=100100 半径=10 鼠标位置=pygame.mouse.get\u位置 对于pygame.event.get中的事件: 通过 点=旋转\u三角形100100,鼠标\u位置 pygame.draw.polygondisp,0,0,0,点 pygame.display.update
在pygame中,二维向量算法在中实现

为鼠标位置和三角形中心定义Vector2对象。计算从中心点到鼠标位置的矢量角度:

vMouse=pygame.math.Vector2mouse_pos vCenter=pygame.math.Vector2center angle=pygame.math.Vector2.angle_tovMouse-vCenter 围绕0、0定义三角形的3个点,并将其旋转角度

点数=[-0.5,-0.866,-0.5,0.866,2.0,0.0] rotated_point=[pygame.math.Vector2p.rotateangle for p in points] 要计算最终点,这些点必须按三角形的中心进行缩放和平移:

三角形_点=[vCenter+p*旋转_点中p的比例] 请参见示例:

导入pygame 输入数学 def旋转_三角形中心、缩放、鼠标位置: vMouse=pygame.math.Vector2mouse_pos vCenter=pygame.math.Vector2center angle=pygame.math.Vector2.angle_tovMouse-vCenter 点数=[-0.5,-0.866,-0.5,0.866,2.0,0.0] rotated_point=[pygame.math.Vector2p.rotateangle for p in points] 三角形_点=[vCenter+p*旋转_点中p的比例] 返回三角点 disp=pygame.display.set_mode200200 运行=真 运行时: 对于pygame.event.get中的事件: 如果event.type==pygame.QUIT: 运行=错误 鼠标位置=pygame.mouse.get\u位置 点=旋转\u三角形100、100、10、鼠标\u位置 pygame.Surface.filldisp,255255 pygame.draw.polygondisp,0,0,0,点 pygame.display.update 不使用的算法版本如下所示:

def旋转_三角形中心、缩放、鼠标位置: dx=鼠标位置[0]-中心[0] dy=鼠标位置[1]-中心[1] len=math.sqrtdx*dx+dy*dy dx,dy=dx*刻度/透镜,如果透镜>0,则dy*刻度/透镜,否则为1,0 pts=[-0.5,-0.866,-0.5,0.866,2.0,0.0] pts=[center[0]+p[0]*dx+p[1]*dy,center[1]+p[0]*dy-p[1]*dx代表pts中的p] 返回点 注意这个版本可能更快。它需要一个math.sqrt操作,而math.atan2可能分别由前一个算法的.angle_to和math.sin math.cos使用。
结果坐标相同。

可能重复@norok2这不是重复的问题。问题不在于如何从向量中获取角度。