رفتن به محتوا

سیستم‌های لیندنمایر

آموزش سیستم‌های L: از کلمات تا نمادها

بخش اول: مثال‌های فارسی

آکسیوم چیست؟

آکسیوم حالت اولیه سیستم است. مثل یک کلمه یا نماد شروع که قوانین روی آن اعمال می‌شوند.

قوانین چیست؟

قوانین دستورالعمل‌هایی هستند که مشخص می‌کنند هر عنصر چگونه به عناصر دیگر تبدیل شود.

مثال ۱: سیستم تک‌قانونی

در این مثال ساده می‌بینیم که در هر تکرار، کلمه “کتاب” با عبارت “کتاب خوب” جایگزین می‌شود. کلمه “خوب” تغییر نمی‌کند چون قانونی برای آن تعریف نشده است. در هر تکرار، رشته طولانی‌تر می‌شود و الگوی رشد را می‌توانیم مشاهده کنیم.

مثال ۲: سیستم دو‌قانونی

نکته مهم ۱

جایگزینی‌ها همزمان انجام می‌شوند. یعنی ابتدا کل رشته را می‌خوانیم، سپس همه تغییرات را یکجا اعمال می‌کنیم.

نکته مهم ۲

در هر مرحله، تمام کلماتی که قانون دارند جایگزین می‌شوند، حتی اگر در مرحله قبل اضافه شده باشند.

سیستم تک‌قانونی: کتاب ⟶ کتاب خوب

کتاب
تکرار: 0

سیستم دو‌قانونی:

قانون ۱: کتاب ⟶ کتاب خوب
قانون ۲: خوب ⟶ گلمراد
کتاب
تکرار: 0
جایگزینی‌های ممکن: "کتاب" می‌تواند با "کتاب خوب" جایگزین شود

بخش دوم: سیستم‌های نمادین

مثال: منحنی کج ساده

آکسیوم: F قانون: F -> F+F-F زاویه چرخش: 90 درجه

نتایج مراحل مختلف:

  • تکرار ۰: F
  • تکرار ۱: F+F-F
  • تکرار ۲: F+F-F+F+F-F-F+F-F

شبیه‌ساز 1 (proccess_ins تابع):

این تابع تعداد تکرار n را میگیرد و عبارت مربوط به آن را تولید میکند

Depth: 0
Rule: F → F+F-F | Colors show when each symbol was introduced

شبیه ساز 2 (تابع follow):

این تابع یک عبارت میگیرد و تک تک حرف های آنرا اجرا و طرح را میکشد.

Iteration: 0
F

سیستم های دوشاخه یا درختی

این سیستم قبلی فقط دور خود میچرخد. حتی با زیاد کردن تعداد دور ها دور خود خواهد چرخید اما ما میخواهیم شاخه بزنیم. برای اینکار در فرمول از [ و ] استفاده میکنیم. عکس زیر را ببینید.

چگونه این را پیاده سازی کنیم؟

تابع follow یک عبارت مثل F+F-F+F+F-F-F+F-F را در آرگومان s میگیرد و آنرا روی صفحه میکشد

def follow(s):
"""Draw the L-system string using turtle graphics"""
# something to do
for c in s:
if c == 'f':
turtle.forward(x)
elif c == '-':
turtle.left(a)
elif c == '+':
turtle.right(a)
elif c == '[':
# Save the current position and angle
elif c == ']':
# Restore the last saved position and angle

در تابع بالا استفاده از درسنامه قبلی جاهای خالی را موقعیت میگیریم و ذخیره میکنیم..

ساده سازی برای تصور

بیاید عکس بالا را برای ساده سازی فرمول ساده تر بدیم. تعداد تکرار را 1 بگذاریم شکلی زیر پدید می آید. مراحل را مطابق شکل بکشید.

تنها یک بخش مانده به فرمول اضافه کنیم تا شاخه دوم پدید آید و آن +x است که با رنگ قرمز به آن اضافه شد.


تیم تدریس‌یاران درس - © ۱۴۰۳