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

파이썬의 프랙탈 트리

<시간/>

프랙탈 패턴은 자연에서 우리 주변 어디에나 있습니다. 고사리의 잎사귀에서 나온 작은 가지처럼 잎 자체를 닮았다. 또는 조약돌은 종종 산의 모양과 비슷합니다! 따라서 작은 패턴을 반복하여 큰 패턴을 생성한다는 이 아이디어를 프랙탈 트리라고 합니다. 파이썬 프로그래밍에서는 사용 가능한 다양한 모듈을 사용하여 프랙탈 트리를 생성할 수도 있습니다.

파이게임 모듈 사용

이 모듈은 프랙탈 트리를 생성하는 데 필요한 기능을 제공합니다. 여기에서 먼저 화면 레이아웃 크기를 정의한 다음 패턴이 반복될 깊이를 정의합니다. 재귀는 특정 깊이까지 동일한 패턴을 계속해서 반복할 것이기 때문에 여기서 큰 역할을 합니다.

예시

import pygame, math

pygame.init()
screen = pygame.display.set_mode((750, 650))
pygame.display.set_caption("Fractal Tree")
display = pygame.display.get_surface()

def drawTree(a, b, pos, deepness):
if deepness:
c = a + int(math.cos(math.radians(pos)) * deepness * 10.0)
d = b + int(math.sin(math.radians(pos)) * deepness * 10.0)
pygame.draw.line(display, (127,255,0), (a, b), (c, d), 1)
drawTree(c, d, pos - 25, deepness - 1)
drawTree(c, d, pos + 25, deepness- 1)

def process(event):
if event.type == pygame.QUIT:
exit(0)

drawTree(370, 650, -90, 10)
pygame.display.flip()
while True:
process(pygame.event.wait())

출력

위의 코드를 실행하면 다음과 같은 결과가 나타납니다.

파이썬의 프랙탈 트리

거북이 사용

거북이 모듈을 사용하여 유사한 접근 방식을 따를 수 있습니다. 여기서 거북이 프로그램은 그림의 방향을 바꾸는 것만으로 나무의 가지를 반복적인 패턴으로 그리기 시작합니다. 함수가 반복되는 각도를 정의한 다음 완전한 트리를 얻습니다.

예시

import turtle
def tree(Length,n):
   if Length > 10:
      n.forward(Length)
      n.right(25)
      tree(Length-15,n)
      n.left(50)
      tree(Length-15,n)
      n.right(25)
      n.backward(Length)

def function():
   n = turtle.Turtle()
   data = turtle.Screen()
   n.left(90)
   n.up()
   n.backward(100)
   n.down()
   n.color("green")
   tree(85,n)
   data.exitonclick()

function()

출력

위의 코드를 실행하면 다음과 같은 결과가 나타납니다.

파이썬의 프랙탈 트리