用Python绘制斐波那契螺旋线(黄金螺旋线)
斐波那契螺旋线也称“黄金螺旋线”。观察图形后可以发现:正方形按顺或逆单一时针方向滚动顶点、并按黄金分割比例缩小,按此规律循环5次,顶点滚动路径对应的曲线(以正方形边长为半径r的扇形的圆弧)即为所求黄金螺旋线。
值得记录的一点是:在绘制思路尚不全面清晰时,也不妨开始大胆实践。有时在实践中,真理会跳跃到你眼前!
话不多说:感兴趣的小伙伴可以运行以下代码、感受上述几何之美:
from turtle import * #import cmath speed(10) pensize(5) #判断较小整数的函数 def little(a,b): if a<b: return a else: return b #初始点 #矩形 x0 = 250 y0 = 150 r= little(2*x0,2*y0) #定义绘制、填充1/2正方形及扇形的函数 def square_sector(r,color_couple): color("black",color_couple[0]) begin_fill() #顺时针画1/2正方形 #for i in range(2): fd(r) rt(90) fd(r) end_fill() #顺时针画剩余1/2正方形及1/4圆弧 color("black",color_couple[1]) begin_fill() for i in range(2): rt(90) fd(r) rt(90) circle(-r,90) end_fill() #黄金比例 #golden_ratio = (cmath.sqrt(5)-1)/2#cant convert complex to int golden_ratio = 0.618 #5组填充色——[color_rect,color_arc]#1/2矩形,扇形 color_ls = [["#8F653B","#EDCB67"],["#B58539","#7D6A98"], ["#FAC374","#56ACA9"],["#D87D84","#DA8F3C"],["#769A43","#CF4749"]] pu() goto(x0,y0)#矩形的右上顶点,默认初始角度0 pd() seth(-90) #循环绘制、填充矩形及扇形 for i in range(5): r = 300*(golden_ratio**i)#边长 #rt(90)#"正方形圆弧图块整体"右转90度绘制 square_sector(r,color_ls[i]) hideturtle() done()
附:取色工具本次使用的是CDR的滴管。
ColorPix.exe也好用:无须安装,按住alt、点击,按空格锁住颜色,再点击可复制不同颜色的代码。