我正在尝试创建一个函数,它可以在彼此之间绘制规则多边形,如所附图片所示。多边形边的大小由以下公式定义:
initial_size = initial_radius*(2*math.sin(360/(2*number_of_angles)))
我有两个问题:1。为什么当我用上述公式指定“初始尺寸”时,我的绘图从不同的方向开始,而不是简单地指定初始尺寸=100(忽略公式)?2.你能给我一个提示(或任何方向)吗?我可以像图上那样画正多边形(即,从不同的点开始(沿x轴移动),然后在另一个多边形内画每个多边形
import turtle
import math
turtle.speed(1)
def reg_polygon(number_of_angles, initial_radius):
Q = 180-(180/number_of_angles)/2
turtle.left(Q)
initial_size = initial_radius*(2*math.sin(360/(2*number_of_angles)))
if number_of_angles>=3:
sum_angle = 180*(number_of_angles-2)
angle = sum_angle/number_of_angles
for i in range(number_of_angles):
turtle.forward(initial_size)
turtle.left(180-angle)
elif number_of_angles<3:
print("Minimum number of angels should be >=3")
for i in range(3,6):
reg_polygon(i,100)
turtle.done()
下面是以下代码片段所绘制的内容:;这并不是你发布的gif的绝对完美复制(必须对3、4和5角的大小顺序进行一些调整,以避免较小的邻居们在某些点接触-即gif制作者有点受骗!),但它遵循数学对称性和完美性
下面的代码有一些神奇的数字;我可能稍后再谈,但现在不行。我用来计算正多边形的资源可以找到here和there
相关问题 更多 >
编程相关推荐