Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Fractal Trees ใน Python

รูปแบบ Fractal อยู่รอบๆ เราในธรรมชาติ เช่น กิ่งเล็กที่หยิบมาจากใบของพืชเฟิร์น (fern) คล้ายกับใบเอง หรือหินเล็กมักคล้ายรูปรูปของภูเขา! ดังนั้นแนวคิดของการซ้ำของรูปแบบเล็กๆ เพื่อสร้างรูปแบบใหญ่ เรียกว่า Fractal Tree ในการเขียนโปรแกรม Python เราสามารถสร้าง Fractal Trees ได้โดยใช้โมดูลต่างๆ ที่มีอยู่

ใช้โมดูล pygame

โมดูลนี้ให้ฟังก์ชันที่จำเป็นสำหรับสร้าง Fractal Trees ที่นี่เรากำหนดขนาดเลย์เอาท์หน้าจอ ก่อน แล้วกำหนดความลึก (deepness) ที่รูปแบบจะซ้ำตัวเอง Recursion มีบทบาทสำคัญที่นี่ เนื่องจากเราจะทำซ้ำรูปแบบเดิมซ้ำๆ จนถึงความลึกที่กำหนด

ตัวอย่าง

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

เอาต์พุต

การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้:

Fractal Trees ใน Python

ใช้ Turtle

ใช้โมดูล turtle เราสามารถทำตามแนวทางเดียวกันได้ ที่นี่โปรแกรม turtle เริ่มวาดกิ่งของต้นไม้เป็นรูปแบบซ้ำ โดยเพียงเปลี่ยนทิศทางการวาด เรากำหนุมุมที่ฟังก์ชันจะซ้ำตัวเอง และได้ต้นไม้สมบูรณ์

ตัวอย่าง

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

เอาต์พุต

การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้:

Fractal Trees ใน Python