Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 Phyllotaxis 패턴?

<시간/>

필로택시 패턴이란 무엇입니까?

다시 돌아가서 식물학 수업과 식물 세계에서 phyllotaxis는 피보나치 나선에서 발견되는 것과 유사한 식물 줄기에 꽃, 잎 또는 씨앗의 배열을 의미합니다. 피보나치 수열을 기반으로 하는 피보나치 나선은 파스칼의 삼각형과 유사한 패턴을 따르는 숫자 집합입니다. 피보나치 수열 번호는 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 등입니다. 따라서 피보나치 수열 번호는 이전 수의 합입니다.

피보나치 나선

우리는 일반적으로 주변 사물을 이해하기 위해 대칭과 패턴을 찾습니다. 우리의 눈은 자신도 모르게 피보나치 수열을 보고 있으며, 해바라기 머리의 경우에는 피보나치 나선을 보고 있습니다.

해결책

Python의 Phyllotaxis 패턴?


Python의 Phyllotaxis 패턴?

해바라기 나선

예시 코드

import math
import turtle

def PhyllotacticPattern( t, petalstart, angle = 137.508, size = 2, cspread = 4 ):
   """print a pattern of circles using spiral phyllotactic data"""
   # initialize position
   turtle.pen(outline=1,pencolor="black",fillcolor="orange")
   # turtle.color("orange")
   phi = angle * ( math.pi / 180.0 )
   xcenter = 0.0
   ycenter = 0.0

   # for loops iterate in this case from the first value until < 4, so
   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

      # move the turtle to that position and draw
      turtle.up()
      turtle.setpos(x,y)
      turtle.down()
      # orient the turtle correctly
      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() # this is needed to complete the last petal

turtle.shape("turtle")
turtle.speed(0) # make the turtle go as fast as possible
PhyllotacticPattern( 200, 160, 137.508, 4, 10 )
turtle.exitonclick() # lets you x out of the window when outside of idle

해결책

Python의 Phyllotaxis 패턴?

위의 프로그램을 약간 변경하면 결과가 다음과 같이 바뀔 수 있습니다(사용자 지정 색상 제공 및 일부 값 변경).

Python의 Phyllotaxis 패턴?