این تمرین طراحی و تجزیه و تحلیل الگوریتم های بازگشتی نسبتاً پیشرفته را ارائه می دهد."نسبتاً پیشرفته" در اینجا به معنای الگوریتم هایی است که در آن یک بازوی واحد از مشروط اصلی پیام های بازگشتی متعدد ارسال می کند.
زمینه
این آزمایشگاه شامل تعدادی تمرینات در مورد طراحی ، برنامه نویسی و تجزیه و تحلیل الگوریتم هایی است که باعث ایجاد نقشه های مختلف خط بازگشتی می شود از یک نوع که به عنوان "Fractals" شناخته می شود.
دیافراگم
از نظر ریاضی ، یک فراکتال منحنی است که در آن قسمت های کوچک ، بزرگنمایی ، دقیقاً مانند کل از نظر جنجالی ، شکل عمومی و غیره به نظر می رسند. به عنوان مثال ، خطوط ساحلی اغلب به عنوان داشتن این خاصیت توصیف می شوند - خط ساحلی یک قاره کل دارای ویژگی هایی است (خلیج ها ، شبه جزیره ها و غیره) که به روشی مشابه ظاهر می شوند ، اما در مقیاس کوچکتر ، در خط ساحلی یک منطقه کوچک قاره. در یک فراکتال ریاضی ، برخلاف یک خط ساحلی ، این "خود شفقت" به سطوح بی نهایت خوب جزئیات تکرار می شود.
از نظر الگوریتمی ، برخی از الگوهای زیبا و زیبا با وام خودآگاهی فراکتال در مقیاس های مختلف می توانند ایجاد شوند. به طور معمول ، فرد با فکر کردن به یک شکل ساده شروع می شود ، و سپس نسخه های کوچکتر از آن شکل را به صورت اولیه تعبیه می کند. به دلیل ارتباط آنها با فراکتال های ریاضی ، تصاویر حاصل اغلب تصاویر "فراکتال" نامیده می شوند.
نقشه های خط
این آزمایشگاه از کلاس به نام LinedRawing استفاده می کند ، که نشان دهنده نقاشی های ساخته شده از بخش های خط رنگی است. این کلاس به طور رسمی در فصل 15 الگوریتم ها و ساختار داده ها معرفی می شود: علم محاسبات. برای خلاصه ای از توانایی های آن ، به نوار کناری تحت عنوان "کلاس نقاشی خط" در آن فصل مراجعه کنید. مستندات کامل همانطور که در بخش "جزئیات نهایی" این سند شرح داده شده است.
برنامه هایی که از کلاس LinedRawing استفاده می کنند ، باید پرونده ای به نام linedrawing. java را شامل شوند. برای اطلاعات در مورد یافتن این پرونده ، به بخش "جزئیات نهایی" در زیر مراجعه کنید.
هر پرونده منبع جاوا که به کلاس Linedrawing اشاره دارد باید از طریق بیانیه آن را "وارد" کند
در ابتدای پرونده.
ورزش
الگوریتم های طراحی که هر یک از اشکال فراکتال را که در زیر شرح داده شده است ، ترسیم می کنند. هر الگوریتم را در جاوا کدگذاری کنید ، به عنوان روشی برای زیر کلاس از LinedRawing. سرانجام ، برای تعداد پیام های MovePEN که هر الگوریتم ارسال می کند ، به عنوان تابعی از پیچیدگی شکل ("پیچیدگی" هر نوع شکل در توضیحات شکل ها تعریف شده است) ، عبارات را مشتق کنید.
یک "Fractal T" را به شکلی که از حرف "t" الهام گرفته است ، تعریف کنید ، اما با خط متقاطع در بالای ساخته شده از Ts Fractal کوچکتر. دقیق تر،
- یک Fractal T از پیچیدگی 0 و طول N یک پیکسل خط مستقیم N است.
- A fractal T of complexity c >0 و طول N یک خط مستقیم N پیکسل است که در یک انتها به دو TS فراکتال از پیچیدگی C-1 و طول N /2 پیوست.
به عنوان مثال ، در اینجا TS فراکتال از پیچیدگی های 0 ، 1 ، 2 و 3 وجود دارد:
طراحی و کد یک الگوریتم T Fractal T که پیچیدگی و طول T را به عنوان پارامترها می گیرد. به عنوان پیش شرط فرض کنید که پیچیدگی یک عدد طبیعی است و طول آن یک عدد واقعی مثبت است. در صورت لزوم پیش شرط های اضافی را در مورد موقعیت قلم ، عنوان ، رنگ و غیره اتخاذ کنید.
ستاره ها
"ستاره فراکتال" را به شرح زیر تعریف کنید:
- یک ستاره پیچیدگی 0 چیزی نیست (یعنی هیچ خط یا تصویر دیگری)
- A star of complexity c >0 مجموعه ای از 5 خط است که از یک نقطه مرکزی تابش می کند ، با پیچیدگی C-1 ستاره در انتهای هر خط.
توجه داشته باشید که خطوط موجود در پیچیدگی بازگشتی ستاره های C-1 کوتاهتر از خطوط موجود در پیچیدگی C ستاره هستند. همچنین توجه داشته باشید که اگرچه تعریف فوق می گوید ستاره ها دارای 5 خط هستند ، در واقع می توان از اعداد مختلف استفاده کرد و ظاهر متفاوتی کسب کرد. رنگ آمیزی خطوط برای هر سطح پیچیدگی نیز می تواند ستاره ها را از نظر بصری جالب تر کند (مثالهای زیر این ایده را نشان می دهد).
به عنوان مثال ، در اینجا ستاره های پیچیدگی 1 (در سمت چپ) و 3 (در سمت راست) وجود دارد:
برای نشان دادن چگونگی تزئین یک ستاره ، در اینجا یک پیچیدگی 5 ستاره بر اساس 7 و نه 5 خط وجود دارد:
طراحی و کد یک الگوریتم ستاره فراکتال که پیچیدگی ستاره را به عنوان یک پارامتر می گیرد. الگوریتم همچنین ممکن است در صورت تمایل پارامترهای دیگری را نیز در نظر بگیرد ، به عنوان مثال تعداد یا طول خطوط. به عنوان پیش شرط فرض کنید که پیچیدگی یک عدد طبیعی است و قلم در نقطه ای قرار می گیرد که از آن خطوط باید تابش کنند.
جزئیات نهایی
کلاس نقاشی خط
linedrawing. java را می توان از وب بارگیری کرد.
مستندات در کلاس LinedRawing نیز در وب موجود است. صفحه اصلی مستندات یک فهرست برای مستندات برای کلیه کلاسهای جاوا است که برای استفاده با الگوریتم ها و ساختار داده ها نوشته شده است: علم محاسبات. برای دیدن مستندات برای یک کلاس خاص ، روی نام آن کلاس در صفحه سمت چپ صفحه کلیک کنید.
ارسال کار خود
این آزمایشگاه حداکثر تا ساعت 5 بعد از ظهر روز دوشنبه 3 مه انجام می شود. چاپ زیر کلاس خود و مشتقات تعداد پیام های MovePen را که هر الگوریتم ارسال می کند ، بپیچید. مشتقات ممکن است روی یک برگه جداگانه یا در نظرات در زیر کلاس باشد.
مبانی تجارت فارکس...
ما را در سایت مبانی تجارت فارکس دنبال می کنید
برچسب :
نویسنده : سحر دولتشاهی
بازدید : 55
تاريخ : شنبه
20 اسفند
1401 ساعت: 16:24