Python 中的叶序模式?

pythonserver side programmingprogramming

什么是叶序模式?

回顾一下,在我们的植物学课程和植物世界中,叶序是指花、叶或种子在植物茎上的排列,类似于斐波那契螺旋。基于斐波那契数列,斐波那契螺旋是一组遵循类似帕斯卡三角形的模式的数字。斐波那契数列数字类似于 - 1、1、2、3、5、8、13、21、34、55、89、144 等。因此,斐波那契数列是其前面数字的总和。

斐波那契螺旋

我们通常会寻找对称性和模式来了解我们周围的物体。不知不觉中,我们的眼睛就看到了斐波那契数列,或者在向日葵头的情况下,看到了斐波那契螺旋。

解决方案


向日葵螺旋

示例代码

import math
import turtle

def PhyllotacticPattern( t, petalstart, angle = 137.508, size = 2, cspread = 4 ):
   """使用螺旋叶序数据打印圆圈图案"""
   # 初始化位置
   turtle.pen(outline=1,pencolor="black",fillcolor="orange")
   # turtle.color("orange")
   phi = angle * ( math.pi / 180.0 )
   xcenter = 0.0
   ycenter = 0.0

   # for 循环在此例中从第一个值迭代直到 < 4,因此
   for n in range (0,t):
      r = cspread * math.sqrt(n)
      theta = n * phi

      x = r * math.cos(theta) + xcenter
      y = r * math.sin(theta) + ycenter

      # 将海龟移动到该位置并绘制
      turtle.up()
      turtle.setpos(x,y)
      turtle.down()
      # 正确调整海龟方向
      turtle.setheading(n * angle)
      if n > petalstart-1:
         #turtle.color("yellow")
         drawPetal(x,y)
      else: turtle.stamp()

def drawPetal( x, y ):
   turtle.up()
   turtle.setpos(x,y)
   turtle.down()
   turtle.begin_fill()
   #turtle.fill(True)
   turtle.pen(outline=1,pencolor="black",fillcolor="yellow")
   turtle.right(25)
   turtle.forward(100)
   turtle.left(45)
   turtle.forward(100)
   turtle.left(140)
   turtle.forward(100)
   turtle.left(45)
   turtle.forward(100)
   turtle.up()
   turtle.end_fill() # 这是完成最后一片花瓣所必需的

turtle.shape("turtle")
turtle.speed(0) # 让乌龟尽可能快地移动
PhyllotacticPattern( 200, 160, 137.508, 4, 10 )
turtle.exitonclick() # 让您在空闲状态之外将 x 移出窗口

解决方案

对上述程序进行小幅更改后,结果可能会发生类似变化(提供自定义颜色并更改一些值):


相关文章