منحنی اژدها

در این خواندنی، با فرکتال منحنی اژدها (dragon curve) آشنا میشیم و اصول برنامه‌نویسی آن را یاد می‌گیریم.

این فرکتال بنام اژدهای هایوی هم معروف هست. این نام برگرفته از نام فیزیکدان معروف ناسا، جان هایوی هست که روی آن مطالعه کرده است.

البته فقط نام و شکل این فرکتال اژدها نیست، بلکه ویژگی‌های شگفت‌آوری هم داره. مثلا میتونه یک سطح رو با یک طرح مثل موزاییک پر کنه با اینکه فقط از یک خط ساخته شده.

اگر یک نوار کاغذی را از نیمه ی اون تا بزنیم، دوباره این کار رو ادامه بدیم، و بعد تاهای اون رو باز کنیم، یک منحنی اژدها ساخته میشه. مثل این شکل:

dragon curve

هندسه منحنی اژدها

منحنی اژدها مثل همه فرکتال ها، ظاهری بسیار پیچیده داره اما با تکرار یک الگوی ساده ساخته میشه. شکل بعد از هر تکرار نسبت به حالت قبل پیچیده‌تر هست، ولی همه اونها شکل یکسانی با جهت های مختلف دارن. اینطور به نظر میرسه که هر تکرار ۴۵ درجه در جهت عقربه های ساعت می چرخه.

هر تکرار رو میشه بصورت رشته ای از چرخش‌های چپ و راست نشون داد. اگر R را برای راست و L را برای چپ در نظر بگیریم:

اولین تکرار: R

دومین تکرار: RRL

و تکرار سوم RRLRRLL هست

و همینطور ادامه پیدا می کنه.

به این ترتیب تکرارهای متفاوتی از منحنی اژدها ساخته میشه.

برای پیدا کردن تکرار بعدی از هر مدلی که در حال حاضر دارید، مراحل زیر رو انجام بدین:

 ۱. به مدل اولیه یک چرخش به راست اضافه کنید.

 ۲. رشته اصلی را قرینه کنید ( از آخر به اول بنویسید یعنی حرف اول به آخر و حرف آخر به اول منتقل میشه).

 ۳. حالت قرینه شده را در نظر گرفته و همه راست‌ها را به چپ و همه چپ‌ها را به راست تغییر بدید.

 ۴. مدل بدست آمده را به رشته جدیدی که در مرحله اول ساختید اضافه کنید.

رشته اصلی اولیه R

(اضافه‌کردن رشته با چرخش به راست به رشته اصلی) R+R→RR

(اضافه‌کردن قرینه به رشته اصلی) RR+L→RRL

RRL+R→RRLR

قرینه‌شده RRL→LRR

جابجاشده LRR→RLL

RRLR+RLL→RRLRRLL

RRLRRLL+R→RRLRRLLR

قرینه‌شده RRLRRLL→LLRRLRR

جابجاشده LLRRLRR→RRLLRLL

RRLRRLLR+RRLLRLL→RRLRRLLRRRLLRLL

برنامه‌نویسی فرکتال با لاکی

اگر الگوریتم بالا را با لاکی انجام بدیم، اینطوری میشه:

dragoncurve

برنامه کامل رسم منحنی اژدها را پایین می‌تونی ببینی.

الان تعداد تکرارها (iteration) برابر با ۱۰ گذاشته شده.

یه بار الان اجراش کن.

بعدش مقدار length را بذار ۲۰ و این برنامه را از تعداد تکرار  ۲ شروع کن و همینطور برو بالا تا رسم شکل‌های بالا را به ترتیب ببینی.

درس فرکتال‌ها در دوره ریاضی مفاهیم پایه فرکتال‌ها را پوشش می‌دهد و این صفحه ویکیپدیا هم به ریاضیات پیشرفته منحنی اژدها می‌پردازد.
 
منابع اصلی: ویکی‌پدیا و www.instructables.com

 

نظرات

  • mahdi1234

    آموزش توضیح کمی داشت و خیلی نا مفهوم بود تنها مشکل سایت شما هم همین است یا یک چیز پیش پا افتاده رو زیاد توضیح می دید یا یک چیز نسبتا سخت رو کم توضیح می دید…
    **************************
    با تشکر از مطالب خوبتون

    • Admin

      این بخش خواندنی‌ها هست.
      هدف از بخش خواندنی‌ها آشنایی دانش‌آموزان با کاربرد برنامه‌نویسی برای حل مسايل پیشرفته و جذاب است. خواندنی‌ها به دلیل تنوع و کوتاه‌بودن وارد جزییات و آموزش عمیق نمی‌شوند. هدف گسترشِ دید دانش‌آموزان است.

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

      به طور خلاصه، خواندنی‌ها برای افزایش سطح دانش و دوره‌ها برای افزایش عمق دانش کاربران هستند.

  • sahba

    خب بنظرم بهتر است که برای همین خواندنی ها هم قسمت توضیحات بیشتر بگذارید
    شاید کسی خواست بیشتر بداند یا به طور عمیق این مبحث را دنبال کند.(((؛
    =============
    ممنون از آموزش ها و مطالب جالبتون

  • Admin

    توضیح زیر اضافه شد در این راستا:
    درس فرکتال‌ها در دوره ریاضی مفاهیم پایه فرکتال‌ها را پوشش می‌دهد و این صفحه ویکیپدیا هم به ریاضیات پیشرفته منحنی اژدها می‌پردازد.
    ===
    کماکان باید تاکید شود اما که اگر مانند دوره‌های پایلی همه چیز آموزش داده شود دیگر جایی برای کاوشگری باقی نمی‌ماند. که از اهداف اصلی بخش خواندنی‌ها هست.