รูปแบบ 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())
เอาต์พุต
การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้:

ใช้ 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()
เอาต์พุต
การรันโค้ดข้างต้นให้ผลลัพธ์ดังนี้:
