Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Pygame中绘制五边形、六边形_Python_Algorithm_Pygame_Python 3.4 - Fatal编程技术网

Python 在Pygame中绘制五边形、六边形

Python 在Pygame中绘制五边形、六边形,python,algorithm,pygame,python-3.4,Python,Algorithm,Pygame,Python 3.4,我正在尝试制作可以绘制五边形、六边形等的函数。在算法上有问题,我应该将这些线与pygame.draw.line进行比较吗?看起来围绕确定线的坐标做的工作太多了。有没有一个简单的方法来画它们?我也不知道还有哪个图书馆能画这些东西。我只知道Pygame,还有别的吗?你可以用线条画它。您只需要使用简单的三角法生成顶点列表 类似这样的事情(如果我没有犯错误): 您可以使用pygame.draw.polygon(曲面、颜色、点列表)绘制多边形。在这种情况下,可以使用三角法生成顶点列表,并将其作为点列表参数

我正在尝试制作可以绘制五边形、六边形等的函数。在算法上有问题,我应该将这些线与
pygame.draw.line
进行比较吗?看起来围绕确定线的坐标做的工作太多了。有没有一个简单的方法来画它们?我也不知道还有哪个图书馆能画这些东西。我只知道Pygame,还有别的吗?

你可以用
线条画它。您只需要使用简单的三角法生成顶点列表

类似这样的事情(如果我没有犯错误):


您可以使用
pygame.draw.polygon(曲面、颜色、点列表)
绘制多边形。在这种情况下,可以使用三角法生成顶点列表,并将其作为
点列表
参数传递。下面是一个函数,用于绘制具有
顶点\u计数
顶点的任何正多边形:

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)
    ])

您可以运行并查看此函数的运行情况,使用向上/向下箭头键更改顶点计数。

这只是一个突然的灵感,因为我还在这里工作,但您是否尝试从图形的中心绘制所有内容?我在考虑一个函数,它接收点到中心的距离,然后用角度计算它们的位置。我在家的时候会仔细考虑,但也许它会给你带来新的想法。@GLHF我想是的,而且我刚刚为位置添加了额外的参数。
来自math import*
math.cos
math.sin
它正在工作,但我也想显示五角大楼内部的线条。你明白我的意思吗?@GLHF从中心到顶点的直线?这是一项出色的工作。希望我能把你的答案翻两遍,谢谢:)
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)
    ])