第4章 案例研究:接口设计
练习 4-2 用函数画花朵
写一组合适的通用函数,用来画出下图所示的花朵图案(最终代码执行效果图):
【求解】
Step.1 确认组件
如果想通过本张介绍的多边线 polyline(t, n, length, angle)
和弧函数 arc(t, r, angle)
画出花瓣的弧,需要知道:花瓣的弧度和弧长
#多边线
def polyline(t, n, length, angle):
for i in range(n):
t.fd(length)
t.lt(angle)
#弧
def arc(t, r, angle):
arc_length = 2 * math.pi * r * abs(angle) / 360
n = int(arc_length / 4) + 3
step_length = arc_length / n
step_angle = float(angle) / n
t.lt(step_angle/2)
polyline(t, n, step_length, step_angle)
t.rt(step_angle/2)
Step.2 抽象问题
已知:花瓣瓣数 n n n,花瓣长度 l l l
求:花瓣的弧度和弧长( polyline(t, n, length, angle)
中的 angle
和 length
)
Step.3 问题求解
观察花朵:对于花瓣 不重叠 的花朵,花瓣越多,花瓣越细
故,设:组成花瓣的弧线的弧度(angle
)为 2 π n \frac{2π}{n} n2π,以实现“花瓣越多,花瓣越细”的效果
由于在弧度单位下 l = ∣ α ∣ r l=|α| r l=∣α∣r,故还需要知道花瓣弧半径 r r r 才能计算弧长(length
)