#python #pygame #border #valueerror
#python #pygame #граница #ошибка valueerror
Вопрос:
Я кодирую для моделирования преобразования Фурье. Здесь мне нужно нарисовать много эпициклов. У меня есть некоторые значения radius, которые меньше 1, например: 7×10 ^ -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)**
Ответ №1:
[…] пожалуйста, покажите мне способ, как я могу нарисовать круг со значениями границы и радиуса меньше 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)