如何解决pygame模块在绘制宽度值大于半径的圆时产生的值错误?

2024-06-17 08:04:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为傅里叶变换模拟编码。在这里我要画很多本轮。我有一个一些半径值小于1,如:7x10^-14,0等。因此,当我绘制圆并将边框宽度指定为1时,我得到一个值错误:宽度大于半径。如果我把边框宽度设为零,那么圆圈就会被颜色填满,看起来很难看。所以,请告诉我一种方法,如何绘制边界和半径值小于1的圆环。代码如下:

radius_list = [0.0, 8.539660890638339e-15, 66.66666666666669, 3.3275832379191784e-14, ` 
1.1234667099445444e-14, 2.534379764899661e-14, 33.333333333333336, 1.018719954857117e-14, 
2.0236265985141534e-14, 2.4825216024150285e-14, 66.66666666666674, 1.5953403096630258e-13`]

run = False

while not run:
    clock.tick(fps)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

    x = x_pos
    y = y_pos       
    
    for i in range(iteration):  
        
        prevx = x
        prevy = y

        frequency = freq_list[i]    
        radius = radius_list[i]
        phase = phase_list[i]
        print(radius)
            
        x+= int(radius*math.cos((frequency*time) + phase + math.pi/2))
        y+= int(radius*math.sin((frequency*time) + phase + math.pi/2))  
        
        **pygame.draw.circle(screen, white, (prevx, prevy), int(radius),1)**

Tags: runineventfor宽度半径绘制math
1条回答
网友
1楼 · 发布于 2024-06-17 08:04:44

[...] please show me a way to how I can draw a circle with a border and radius values less than 1

你不能。PyGame中的绘图单位是像素。PyGame无法绘制半像素。绘制尺寸小于1的对象是没有意义的,因为PyGame无法做到:

确保最小半径为1:

pygame.draw.circle(screen, white, (prevx, prevy), min(1, round(radius)), 1)

您所能做的就是跳过半径小于0.5的圆:

if radius >= 0.5;
    pygame.draw.circle(screen, white, (prevx, prevy), min(1, round(radius)), 1)

相关问题 更多 >