🌐 VI

🌿 Trình tạo fractal L-System

Tạo fractal từ hệ Lindenmayer (L-system). Chọn một mẫu sẵn có như bông tuyết Koch hoặc đường cong rồng, hoặc tự viết quy tắc viết lại và xem rùa vẽ chúng.

Mỗi dòng một quy tắc, ví dụ F=F+F--F+F. Ký hiệu: F và G vẽ tiến lên, + / - quay, [ và ] lưu/khôi phục vị trí.

4
HƯỚNG DẪN

Tìm hiểu thêm

01

L-system là gì?

L-system (hệ Lindenmayer) là một ngữ pháp hình thức do nhà sinh học Aristid Lindenmayer năm 1968 phát minh để mô hình hóa sự phát triển của thực vật và tảo. Bạn bắt đầu từ một chuỗi tiên đề ngắn rồi lặp lại việc thay thế từng ký hiệu bằng một bộ quy tắc viết lại, khiến chuỗi ngày càng chi tiết sau mỗi lượt. Sau đó, chuỗi cuối cùng được đọc như một dãy lệnh đồ họa rùa — di chuyển, quay, phân nhánh — để vẽ fractal lên màn hình.
02

Bảng chữ cái của rùa

Mỗi ký hiệu là một lệnh vẽ cho chú rùa tưởng tượng. FG di chuyển về phía trước trong khi vẽ một đoạn thẳng; + quay trái theo góc đã đặt và - quay phải; [ đẩy vị trí và hướng hiện tại vào ngăn xếp (bắt đầu một nhánh) và ] lấy chúng ra (trở về điểm bắt đầu của nhánh). Chính hai lệnh ngoặc này cho phép một quy tắc duy nhất mọc ra thân và lá, tạo nên các hình giống cây rất tự nhiên chỉ từ vài ký tự.
03

Viết quy tắc tùy chỉnh

Để tạo fractal của riêng bạn, hãy đặt một tiên đề và một quy tắc cho mỗi dòng. Đường cong Koch curve kinh điển dùng tiên đề F, quy tắc F=F+F--F+F, và góc 60° — mỗi lượt thay mỗi F bằng bốn F nhỏ hơn. Vì mỗi lần viết lại có thể nhân độ dài chuỗi, sự tăng trưởng là theo cấp số nhân, nên trình tạo giới hạn số vòng lặp ở 7 và áp dụng một ngưỡng độ dài để dừng các mẫu chạy quá đà trước khi làm treo trình duyệt.

Câu hỏi thường gặp

Tôi có thể dùng những ký hiệu nào trong quy tắc?
F và G vẽ một đoạn thẳng về phía trước; + và - quay rùa sang trái và phải theo góc bạn đặt; [ và ] bắt đầu và kết thúc một nhánh. Bất kỳ chữ cái nào khác chỉ là ký hiệu giữ chỗ, không vẽ gì cả - nó chỉ được viết lại bởi các quy tắc, nhờ đó cấu trúc phức tạp được hình thành qua từng lượt.
Vì sao có giới hạn số vòng lặp?
Mỗi lượt có thể nhân độ dài của chuỗi, nên số lệnh vẽ tăng theo cấp số nhân. Để giữ trình duyệt phản hồi tốt, trình tạo giới hạn số vòng lặp ở 7 và thêm một ngưỡng độ dài để dừng mẫu trước khi nó quá lớn để hiển thị mượt mà.
Một L-system nổi tiếng là gì?
Bông tuyết Koch, đường cong rồng và mũi tên Sierpinski là những ví dụ kinh điển, cùng với các mô hình cây phân nhánh mà Aristid Lindenmayer ban đầu thiết kế L-system để mô tả.