ترسیم فراکتال ها در پایتون

مثلث ترسیم شده با کد این پست
مثلث ترسیم شده با کد این پست

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

در این پست نحوه ترسیم مثلث سرپنیسکی در پایتون را بیان می کنم. یک مثال خوب برای درک ساختارهایی بازگشتی. یکی از مباحث نسبتا سخت فهم در برنامه نویسی درک ساختارهای بازگشتی است. اما پس از این که به درستی متوجه آن شویم ابزاری کارآمد است.

مثلث سرپنیسکی

گام اول: برای ترسیم مثلث سرپنیسکی ابتدا یک مثلث متساوی الاضلاع را رسم کنید:

تصویر یک
تصویر یک

گام دوم:وسط هر ضلع مثلث را با یک نقطه مشخص کنید . این سه نقطه را با خط کش به هم وصل کنید تا مثلث جدیدی ایجاد شود .

تصویر دو
تصویر دو

حالا ما ۴ مثلث داریم ، یکی در وسط و ۳ تا در هر طرف آن .

مثلث وسط به پایین اشاره دارد . در حالیکه سه مثلث دیگر اصطلاحا سربالا هستند (به بالا اشاره دارند) برای هر مثلث که به بالا اشاره دارد مرحله ۲ را تکرار کنید .یعنی وسط هر ضلع آن را با یک نقطه مشخص و سپس به هم وصل کنید .

مرحله سوم ) مر حله دوم را برای هر کدام از مثلث های بیرونی جدید ادامه دهید.

کد برنامه

در تصویر زیر کد لازم برای ترسیم فراکتال پرسنیسکی مشاهده می کنید در ادامه توضیح می دهم

خط ۲ تابع draw_triangle برای ترسیم یک مثلث با اندازه size با استفاده از شی turtle است. turtle یک لاک پشت در زبان پایتون است که برای ترسیم اشکال و آموزش برنامه نویسی استفاده می شود. تابع forward در جهتی که لاک پشت قرار دارد به اندازه پارامتر ورودی به جلو حرکت می کند در صورتی که قلم لاک پشت بر روی زمین باشد خطی ترسیم می شود. اندازه قلم و رنگ قلم را می توان تنظیم کرد. توابع left و right به ترتیب برای چرخش به چپ یا به راست بر اساس زاویه داده شده است.

خط ۱۱ تابع draw_ser تعریف شده است. این تابع سه آرگومان می گیرد آرگومان اول لاک پشت است که برای ترسیم استفاده می شود. آرگومان دوم مرتبه مثلث و آرگومان سوم اندازه اضلاع مثلث را تعیین می کند.

خط ۱۲ و ۱۳ در صورتی که مرتبه مثلث ۰ باشد یک مثلث ساده به اندازه متغییر size ترسیم می شود.

در غیر این صورت مثلث سرپنیسکی با یک مرتبه کمتر، اندازه نصب اندازه داده شده ترسیم می کنیم با اجرای خط 16 اولین مثلث یعنی مثلث پایین سمت چپ ایجاد می شود.

برای ترسیم مثلث دوم به اندازه نصف ضلع به جلو حرکت می کنیم و مثلث دوم،پایین سمت راست، با یک مرتبه کمتر ایجاد می کنیم خط20

دستورات خط 22 تا 24 لاک پشت را به نقطه شروع مثلث سوم هدایت می کند.

خط 26 مثلث سوم را با یک مرتبه کمتر و اندازه نصف مقدار سایز ترسیم می کند.

خطو 28 تا 30 لاک پشت را به نقطه شروع بر می گرداند.

تصویر سه
تصویر سه

در تصویر ۳ یک شی لاک پشت ایجاد شده در متغییر t قرار می گیرد.

خط ۳۳ برای ترسیم مثلث مرتبه ۳ با اندازه اولیه ۳۰۰ فراخوانی می شود

خط ۳۵ برای جلوگیری از بسته شدن پنجره لازم است.


منابع

منابع کاملی برای شناخت ریاضی در زمینه فراکتال ها در اینترنت وجود دارد برای اطلاع کافی می توانید به ویکی پیدیا مراجعه کنید.

کد برای ترسیم غالب اشکال فراکتال در اینترنت موجود است یکی از وبلاگ ها برای این منظور ادرس زیر است:

http://www.designcoding.net/polygon-fractals-with-rhino-python/

تورتل یا لاک پشت موجود جالبی است نحوه کار و جزئیات بیشتر در مورد این موجود در پایتون را می توانید در آدرس زیر مشاهده کنید:

https://docs.python.org/2/library/turtle.html