分析镂空五角星边长的关系
计算分析
分析五角星和内接正五边形的边长关系。已知五角星的边长为l,求在同一直线上五角星的顶点到正五边形的顶点的距离,即r的值;以及正五边形的边长x的值。如下图所示:

已知正五边形的顶角∠EBD=180°-360°/5=108°,五角星的顶角∠BCA=(180°-108°)/2=36°,∠AED=(360°-2×∠CED)/2=(360°-2×72°)/2=108°,∠DEB=(180°-108°)/2=36°,因此DE=r。
△BDE∽△BCA,因此有

,得到

,带入

,经过计算可以得出

,

。
绘制边长l为400的五角星
功能要求
绘制边长l为400的五角星,将画笔颜色设置为yellow,填充颜色设置为red,画笔宽度为3,画笔速度最快,并隐藏画笔。
实例代码
import turtle
turtle.speed(0)
turtle.ht()
l = 400 # 设定五角星的边长
turtle.speed(0) # 设置画笔的速度
turtle.ht() # 隐藏画笔
turtle.pensize(3) # 设置画笔的粗细
# 设置画笔的初始位置
turtle.penup()
turtle.goto(-200, 50)
turtle.pendown()
# 绘制外面的五角星
turtle.color("yellow", "red")
turtle.begin_fill()
for i in range(5):
turtle.forward(l)
turtle.right(144)
turtle.end_fill()
turtle.done()
运行结果

绘制边长l为400的镂空五角星
功能要求
绘制边长l为400的五角星,将画笔颜色设置为yellow,填充颜色设置为red;移动画笔到正五边形的顶点,即向前移动r距离,绘制一个边长为x的正五边形,设置画笔颜色为yellow,填充颜色为white,即用白色正五边形覆盖五角星的中学部分,画笔宽度为3,画笔速度最快,并隐藏画笔。
实例代码
import turtle
import math
l = 400 # 设定五角星的边长
r = l * 2 / (math.sqrt(5) + 3) # 计算两个顶点的距离
x = l * (math.sqrt(5) - 1) / (math.sqrt(5) + 3) # 计算五边形的边长
turtle.speed(0) # 设置画笔的速度
turtle.ht() # 隐藏画笔
turtle.pensize(3) # 设置画笔的粗细
# 设置画笔的初始位置
turtle.penup()
turtle.goto(-200, 50)
turtle.pendown()
# 绘制外面的五角星
turtle.color("yellow", "red")
turtle.begin_fill()
for i in range(5):
turtle.forward(l)
turtle.right(144)
turtle.end_fill()
# 绘制正五角星
turtle.penup()
turtle.forward(r)
turtle.pendown()
turtle.color("yellow", "white")
turtle.begin_fill()
for i in range(5):
turtle.forward(x)
turtle.right(72)
turtle.end_fill()
turtle.done()
运行结果

为镂空五角星添加文字信息
功能要求
绘制边长l为400的五角星,将画笔颜色设置为yellow,填充颜色设置为red;移动画笔到正五边形的顶点,即向前移动r距离,绘制一个边长为x的正五边形,设置画笔颜色为yellow,填充颜色为white,即用白色正五边形覆盖五角星的中学部分,画笔宽度为3,画笔速度最快,并隐藏画笔。完成绘图后,在图中添加文字“镂空五角星”
实例代码
import turtle
import math
l = 400 # 设定五角星的边长
r = l * 2 / (math.sqrt(5) + 3) # 计算两个顶点的距离
x = l * (math.sqrt(5) - 1) / (math.sqrt(5) + 3) # 计算五边形的边长
turtle.speed(0) # 设置画笔的速度
turtle.ht() # 隐藏画笔
turtle.pensize(3) # 设置画笔的粗细
# 设置画笔的初始位置
turtle.penup()
turtle.goto(-200, 50)
turtle.pendown()
# 绘制外面的五角星
turtle.color("yellow", "red")
turtle.begin_fill()
for i in range(5):
turtle.forward(l)
turtle.right(144)
turtle.end_fill()
# 绘制正五角星
turtle.penup()
turtle.forward(r)
turtle.pendown()
turtle.color("yellow", "white")
turtle.begin_fill()
for i in range(5):
turtle.forward(x)
turtle.right(72)
turtle.end_fill()
# 在图中添加文字信息
turtle.penup()
turtle.goto(-150, -50)
turtle.color("violet")
turtle.write("镂空五角星", font=('微软雅黑', 48, 'bold'))
turtle.done()
运行结果
