在 Pygame 中绘制五边形、六边形
Drawing pentagon,hexagon in Pygame
我正在尝试制作可以绘制五边形六边形等的函数。算法有问题,我应该将线条与 pygame.draw.line
进行比较吗?看起来围绕确定线坐标的工作太多了。有没有简单的方法来绘制它们?我也不知道另一个可以绘制这些东西的图书馆。我只知道Pygame,还有吗?
您可以使用 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)])
您可以使用pygame.draw.polygon(surface, color, point_list, width=0)
绘制多边形。在这种情况下,您可以使用三角函数生成顶点列表并将其作为 point_list
参数传递。这是一个绘制任何具有 vertex_count
个顶点的正多边形的函数:
def draw_regular_polygon(surface, color, vertex_count, radius, position, width=0):
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)
], width)
您可以 运行 this demo 并查看此函数的运行情况,使用向上/向下箭头键更改顶点数。
我正在尝试制作可以绘制五边形六边形等的函数。算法有问题,我应该将线条与 pygame.draw.line
进行比较吗?看起来围绕确定线坐标的工作太多了。有没有简单的方法来绘制它们?我也不知道另一个可以绘制这些东西的图书馆。我只知道Pygame,还有吗?
您可以使用 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)])
您可以使用pygame.draw.polygon(surface, color, point_list, width=0)
绘制多边形。在这种情况下,您可以使用三角函数生成顶点列表并将其作为 point_list
参数传递。这是一个绘制任何具有 vertex_count
个顶点的正多边形的函数:
def draw_regular_polygon(surface, color, vertex_count, radius, position, width=0):
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)
], width)
您可以 运行 this demo 并查看此函数的运行情况,使用向上/向下箭头键更改顶点数。