gpt4 book ai didi

python - 在 Python 3.2 中绘制具有 n 个边的多边形

转载 作者:太空狗 更新时间:2023-10-29 20:58:52 25 4
gpt4 key购买 nike

我必须用 Python 编写一个程序来读取值 n 并在屏幕上绘制一个 n 边的多边形。我可以使用 turtle 图形模块或 graphics.py 模块。

当 n = 您输入的点数然后在屏幕上单击 n 次时,我知道如何绘制多边形,但我在想出如何将多个边转换为多边形时遇到了一些问题。

这是我为具有 n 个点的多边形编写的代码:

def newPolygon(self,cmd):
p = eval(input("how many points"))
print("click",p,"times")
num = []
for i in range(p):
vertices = self.win.getMouse()
num.append(vertices)

poly = Polygon(num)
poly.setFill(self.color)
poly.draw(self.win)

self.figs.append(poly)

这不是程序的全部代码(384 行)。这只是程序中绘制多边形函数所在的部分,其中 self.figs = [ ] 是绘制图形的列表。

最佳答案

我假设您想要一种生成等边多边形坐标的方法,您可以将其提供给绘图程序。我不确定您使用的是哪个库,所以我将坚持使用值对列表:

import math


def polygon(sides, radius=1, rotation=0, translation=None):
one_segment = math.pi * 2 / sides

points = [
(math.sin(one_segment * i + rotation) * radius,
math.cos(one_segment * i + rotation) * radius)
for i in range(sides)]

if translation:
points = [[sum(pair) for pair in zip(point, translation)]
for point in points]

return points

那里发生了很多事情,所以我会讲一讲。基本的做法是扫出一个圆,在上面放上n个等距的点。这些将是我们多边形的点,从 12 点钟位置开始。

首先要做的是计算出每个楔形从中心向外的角度(以弧度为单位)。一个圆的总弧度数为 2 pi,因此我们的值为每段 2 pi/n

之后,一些基本的触发给了我们我们的观点(https://en.wikipedia.org/wiki/Trigonometry#Extending_the_definitions)。在这一点上,我们按我们想要的半径缩放,并且有机会也将旋转偏移一个固定的量。

之后我们将值平移一定量,因为您可能希望多边形位于屏幕中央,而不是角落。

几个例子

print polygon(5)    # A unit pentagon

# [(0.0, 1.0), (0.9510565162951535, 0.30901699437494745), (0.5877852522924732, -0.8090169943749473), (-0.587785252292473, -0.8090169943749476), (-0.9510565162951536, 0.30901699437494723)]

print polygon(4, 100) # A square, point up, 100 from the center to the points

# [(0.0, 100.0), (100.0, 6.123233995736766e-15), (1.2246467991473532e-14, -100.0), (-100.0, -1.8369701987210297e-14)]

print polygon(4, 2, math.pi / 4, [10, 10]) # A flat square centered on 10, 10

# [[11.414213562373096, 11.414213562373096], [11.414213562373096, 8.585786437626904], [8.585786437626904, 8.585786437626904], [8.585786437626904, 11.414213562373094]]

如您所见,这些都是 float ,因此您可能需要先将它们压缩为整数,然后才能使用它们。

关于python - 在 Python 3.2 中绘制具有 n 个边的多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23411688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com