Computer >> Máy Tính >  >> Lập trình >> Python

Fractal Trees trong Python

Các mẫu Fractal đều có xung quanh chúng ta trong tự nhiên. Giống như một nhánh nhỏ được lấy ra từ lá của một chiếc lá dương xỉ giống như chính chiếc lá. Hoặc một viên sỏi thường giống hình dạng của một ngọn núi! Vì vậy, ý tưởng về sự lặp lại của một mẫu nhỏ để tạo ra một mẫu lớn được gọi là cây Fractal. Trong lập trình python, chúng tôi cũng có thể tạo cây Fractal bằng cách sử dụng các mô-đun khác nhau có sẵn.

Sử dụng Mô-đun pygame

Mô-đun này cung cấp cho chúng tôi các chức năng cần thiết để tạo ra các cây Fractal. Ở đây, trước tiên chúng ta xác định kích thước bố cục màn hình và sau đó xác định độ sâu mà các mẫu sẽ tự lặp lại. Đệ quy có một vai trò lớn ở đây vì chúng ta sẽ lặp đi lặp lại cùng một mẫu cho đến một độ sâu nhất định.

Ví dụ

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())

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau:

Fractal Trees trong Python

Sử dụng Turtle

Sử dụng mô-đun rùa, chúng ta có thể làm theo một cách tiếp cận tương tự. Tại đây, chương trình con rùa bắt đầu vẽ các cành cây theo mô hình lặp đi lặp lại bằng cách chỉ thay đổi hướng của hình vẽ. Chúng tôi xác định các góc mà tại đó hàm sẽ tự lặp lại và sau đó chúng tôi có được cây hoàn chỉnh.

Ví dụ

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()

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau:

Fractal Trees trong Python