منحنی اژدها
در این خواندنی، با فرکتال منحنی اژدها (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
برنامهنویسی فرکتال با لاکی
اگر الگوریتم بالا را با لاکی انجام بدیم، اینطوری میشه:
برنامه کامل رسم منحنی اژدها را پایین میتونی ببینی.
الان تعداد تکرارها (iteration) برابر با ۱۰ گذاشته شده.
یه بار الان اجراش کن.
بعدش مقدار length را بذار ۲۰ و این برنامه را از تعداد تکرار ۲ شروع کن و همینطور برو بالا تا رسم شکلهای بالا را به ترتیب ببینی.
درس فرکتالها در دوره ریاضی مفاهیم پایه فرکتالها را پوشش میدهد و این صفحه ویکیپدیا هم به ریاضیات پیشرفته منحنی اژدها میپردازد.
منابع اصلی: ویکیپدیا و www.instructables.com
نظرات
mahdi1234
آموزش توضیح کمی داشت و خیلی نا مفهوم بود تنها مشکل سایت شما هم همین است یا یک چیز پیش پا افتاده رو زیاد توضیح می دید یا یک چیز نسبتا سخت رو کم توضیح می دید…
**************************
با تشکر از مطالب خوبتون
Admin
این بخش خواندنیها هست.
هدف از بخش خواندنیها آشنایی دانشآموزان با کاربرد برنامهنویسی برای حل مسايل پیشرفته و جذاب است. خواندنیها به دلیل تنوع و کوتاهبودن وارد جزییات و آموزش عمیق نمیشوند. هدف گسترشِ دید دانشآموزان است.
بخش دورههای آموزشی پایلی، از سوی دیگر، بر روی عمق دانش، آموزش، و جزییات تاکید دارند. با توجه به اینکه اغلب کاربران پایلی تجربه قبلی برنامهنویسی نداشتهاند، مفاهیمی که شاید برای برنامهنویسان با تجربه پیش پا افتاده باشند هم به طور کامل توضیح داده میشوند.
به طور خلاصه، خواندنیها برای افزایش سطح دانش و دورهها برای افزایش عمق دانش کاربران هستند.
sahba
خب بنظرم بهتر است که برای همین خواندنی ها هم قسمت توضیحات بیشتر بگذارید
شاید کسی خواست بیشتر بداند یا به طور عمیق این مبحث را دنبال کند.(((؛
=============
ممنون از آموزش ها و مطالب جالبتون
Admin
توضیح زیر اضافه شد در این راستا:
درس فرکتالها در دوره ریاضی مفاهیم پایه فرکتالها را پوشش میدهد و این صفحه ویکیپدیا هم به ریاضیات پیشرفته منحنی اژدها میپردازد.
===
کماکان باید تاکید شود اما که اگر مانند دورههای پایلی همه چیز آموزش داده شود دیگر جایی برای کاوشگری باقی نمیماند. که از اهداف اصلی بخش خواندنیها هست.