【题目描述】
输入一个整数n,绘制出n个不断旋转的六边形,如图1所示。
图1 旋转的六边形图形
【要求】
-绘制速度设为最快,画笔粗细为3。
-六边形每次旋转10度,边长增加10%。
【分析】
这是一个同心正六边,六边形边长每次增加10%,每次逆时针转10°。
正六边形可用circle(rad, steps=6)绘制,由于要以原点为中心,而turtle的circle绘图是以当前点开始的,如图2所示。
图2 trutle的circle()绘旋转正六边形原理图
初始turtle的原点在(0,0),turtle的方向右。
如要画图2所示图形,先右转90+α°,向前移动r距离到绘图起点,方向左转90°,画正六边形,然后回到(0,0),方向回转到向右,为画下一个六边形作准备。
【程序】
import turtle as tl # 导入模块
n = int(input()) # 输入绘制六边形个数
d = 40 # 初始边长
tl.speed(0) # 最快速度
tl.pensize(3) # 画笔粗细为3
for i in range(n): # 绘制n个旋转六边形
tl.pu() # 抬笔
tl.rt(90 + i*10) # 右转90+α(α=i*10, 每次转10°)
tl.fd(d) # 移到绘图起点
tl.lt(90) # 左转90°转向绘图方向
tl.pd() # 落笔准备绘图
tl.circle(d, steps=6) # 绘制边长为d的下楼六边形
d = d * 1.1 # 边长增加10%
tl.pu() # 抬笔
tl.goto(0, 0) # 移回原点
tl.seth(0) # 转向右(0°)方向
【结果】
图3 trutle的circle()绘旋转正六边形原理图