gpt4 book ai didi

python - 基于端点的旋转

转载 作者:行者123 更新时间:2023-11-28 19:41:24 26 4
gpt4 key购买 nike

我正在使用 pygame 在任意两个点之间画一条线。我还想在线条行进方向朝外的线条末端附加箭头。

在最后贴一个箭头图像很简单,但我不知道如何计算旋转度数以保持箭头指向正确的方向。

最佳答案

这是完成它的完整代码。请注意,在使用 pygame 时,y 坐标是从顶部开始测量的,因此在使用数学函数时我们取负数。

import pygame
import math
import random
pygame.init()

screen=pygame.display.set_mode((300,300))
screen.fill((255,255,255))

pos1=random.randrange(300), random.randrange(300)
pos2=random.randrange(300), random.randrange(300)

pygame.draw.line(screen, (0,0,0), pos1, pos2)

arrow=pygame.Surface((50,50))
arrow.fill((255,255,255))
pygame.draw.line(arrow, (0,0,0), (0,0), (25,25))
pygame.draw.line(arrow, (0,0,0), (0,50), (25,25))
arrow.set_colorkey((255,255,255))

angle=math.atan2(-(pos1[1]-pos2[1]), pos1[0]-pos2[0])
##Note that in pygame y=0 represents the top of the screen
##So it is necessary to invert the y coordinate when using math
angle=math.degrees(angle)

def drawAng(angle, pos):
nar=pygame.transform.rotate(arrow,angle)
nrect=nar.get_rect(center=pos)
screen.blit(nar, nrect)

drawAng(angle, pos1)
angle+=180
drawAng(angle, pos2)
pygame.display.flip()

关于python - 基于端点的旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/650646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com