我试图制作可绘制五边形六边形等的函数。对算法感兴趣,我应该将这些行与pygame.draw.line
进行比较吗?看起来围绕确定线条的线索做了太多工作。有没有简单的方法来绘制它们?此外,我不知道另一个可以绘制这些东西的图书馆。我只知道Pygame,还有另一个吗?
答案 0 :(得分:5)
您可以使用lines
绘制它。您只需要使用简单的三角函数生成顶点列表。
这样的事情(如果我没有犯错):
def draw_ngon(Surface, color, n, radius, position):
pi2 = 2 * 3.14
for i in range(0, n):
pygame.draw.line(Surface, color, position, (cos(i / n * pi2) * radius + position[0], sin(i / n * pi2) * radius + position[1]))
return pygame.draw.lines(Surface,
color,
True,
[(cos(i / n * pi2) * radius + position[0], sin(i / n * pi2) * radius + position[1]) for i in range(0, n)])
答案 1 :(得分:0)
您可以使用pygame.draw.polygon(surface, color, point_list)
绘制多边形。在这种情况下,可以使用三角函数生成顶点列表,并将其作为point_list
参数传递。这是一个绘制具有vertex_count
顶点的常规多边形的函数:
def draw_regular_polygon(surface, color, vertex_count, radius, position):
n, r = vertex_count, radius
x, y = position
pygame.draw.polygon(surface, color, [
(x + r * cos(2 * pi * i / n), y + r * sin(2 * pi * i / n))
for i in range(n)
])
您可以运行this demo并在运行中查看此功能,并使用UP / DOWN箭头键更改顶点数。