با سلام
مقدمه
فرض کنید شما میآخواهید برای یک مقاله، گزارش، ... یک شکل تهیه کنید، به خصوص اگر این شکل شما منظم باشد. خوب شما چی کار میآکنید؟ اولین چیزی که به ذهن میآرسه به خصوص برای ذهن ویندوزیده شده
استفاده از نرمآافزارآهای گرافیک vector-based است. در ویندوز موجوداتی مثل corel-draw و visio و ... وجود داره. در لینوکس هم Dia و Inkscape و... داریم. ولی تمام این ابزارها گرافیکی هستند و کار با آنها سخت و بیآمزه است. خوب روشآهای دیگری نیز وجود دارد آن هم استفاده از ابزارآهای text-base است. برنامهآای که اینجا میآخواهم معرفی کنم، Asymptote است. این برنامه در واقع یک زبان برداری گرافیکی است Vector Graphic Language.
Asymptote
این برنامه یک زبان برای کشیدن اشکال مختلف است به خصوص اشکال ریاضی. علاوه بر این asy از یک اسکریپت نویسی شبیه به C استفاده میآکند. این امکان تواناییآهای خارق العادهآای به شما میآدهد که میآتوانید به کمک آن اشکال خیلی پیچیدهآای را به سادگی رسم کنید!
یک مثال خیلی خیلی ساده
من در آزمایش یک مدار استپر موتوری، میآخواستم چند دایره روی استپر موتورآها بچسبانم که چرخش آنها را به خوبی نشان بدهد (اینجا هم در وبلاگم توضیح دادهآام). منظورم این دایرهآها است (البته مثال خیلی ساده است):


خوب این دایرهآها را با این کد میآتوانید به سادگی درست کنید:
توضیحات کد:
خط ۱:اولین دستور (size) ابعاد تصویر را مشخص میآکنه به این معنی که اندازه هر واحد از تصویر بعد از این دستور ۷۰۰ پیکسل خواهد بود.
خط ۲:چون شکل تصویر کاملا منظم است (دقت کنید که این ابزار مناسب رسم اشکالی است که تا حدی منظم باشند)، کشیدن هر دایره را به صورت یک تابع (drawcir) در نظر گرفته شده است. این تابع دو پارامتر دارد، base که نقطه مرکزی دایره را نشان میآدهد و parts که تعداد قسمتآهای سیاه سفید را مشخص میآکند.
خط ۳:در داخل تابع اولین دستور draw برای کشیدن مسیرآها استفاده میآشود. مسیر ما در این حالت یک دایره (circle) است که مرکز آن base است و شعاع آن یک واحد است. دستور draw پارامترآهای فراوانی دارد که یکی از آنها ضخامت خط است (linewidth).
خط ۴: حالا برای کشیدن قسمتآهای سیاه سفید نیاز به یک حلقه داریم. این حلقه در واقع رسم کننده قسمتآهای مشکی است که نصف تعداد parts هستند.
خط ۵: این قسمت قلب این کد است. filldraw مانند draw یک مسیر را رسم میکند ولی علاوه بر آن داخل آن را پر میآکند (در اینجا به صورت ساده فقط با رنگ مشکی و به صورت یکنواخت پر میآشود). مسیر ما (قطاعآهای مشکی) از base شروع میآشوند و با یک خط صاف (&ndash
به ابتدای کمان (arc) میآرسند. پارامترآهای کمان هم به ترتیب مرکز کمان، زاویه شروع و زاویه پایان است. در انتها نیز مسیر باید بسته شود و به جای ابتدایی باز گردد (cycle).
خط ۸-۱۰: فراخوانی تابع برای کشیدن سه دایره.
حالا باید فایل را با صدا زدن asy کامپایل کنید. دقت کنید که فرمت خروجی پیشفرض eps است. شما میآتوانید با سوئیچ f- فرمت خروجی مورد نظر خودتون را مشخص کنید:
این فقط یک نمونه خیلی ساده برای asy بود که به هیچ عنوان نمیآتواند حق مطلب را درباره این برنامه فوقآالعاده بیان کند. حتما سری به سایت asy در اینجا بزنید. علاوه بر این گالری اشکال تولید شده را نیز در اینجا از دست ندهید!
این هم یک مثال زیبا از گالری به نام درخت پیتاگوراس (البته من تغییرش دادهآام و کمی احتمالات به آن اضافه کردهآام).

(*) آدرس سایت برنامه http://asymptote.sourceforge.net/
(*) گالری برنامه http://asymptote.sourceforge.net/gallery/
(*) دوستان لینوکس کار میآتوانند این برنامه را به سادگی از مخازن نصب کنند. دوستان ویندوزی هم نگران نباشند نسخه ویندوز نیز وجود دارد.
مقدمه
فرض کنید شما میآخواهید برای یک مقاله، گزارش، ... یک شکل تهیه کنید، به خصوص اگر این شکل شما منظم باشد. خوب شما چی کار میآکنید؟ اولین چیزی که به ذهن میآرسه به خصوص برای ذهن ویندوزیده شده

Asymptote
این برنامه یک زبان برای کشیدن اشکال مختلف است به خصوص اشکال ریاضی. علاوه بر این asy از یک اسکریپت نویسی شبیه به C استفاده میآکند. این امکان تواناییآهای خارق العادهآای به شما میآدهد که میآتوانید به کمک آن اشکال خیلی پیچیدهآای را به سادگی رسم کنید!
یک مثال خیلی خیلی ساده
من در آزمایش یک مدار استپر موتوری، میآخواستم چند دایره روی استپر موتورآها بچسبانم که چرخش آنها را به خوبی نشان بدهد (اینجا هم در وبلاگم توضیح دادهآام). منظورم این دایرهآها است (البته مثال خیلی ساده است):


خوب این دایرهآها را با این کد میآتوانید به سادگی درست کنید:
کد PHP:
size(700);
void drawcir(pair base,int parts) {
draw(circle(base,1),linewidth(0.5mm));
for(int i=0;i<parts;i=i+2){
filldraw(base--arc(base,1,(360/parts)*i,(360/parts)*(i+1))--cycle,black);
}
}
drawcir((1,1),8);
drawcir((3.2,1),16);
drawcir((5.4,1),32);
توضیحات کد:
خط ۱:اولین دستور (size) ابعاد تصویر را مشخص میآکنه به این معنی که اندازه هر واحد از تصویر بعد از این دستور ۷۰۰ پیکسل خواهد بود.
خط ۲:چون شکل تصویر کاملا منظم است (دقت کنید که این ابزار مناسب رسم اشکالی است که تا حدی منظم باشند)، کشیدن هر دایره را به صورت یک تابع (drawcir) در نظر گرفته شده است. این تابع دو پارامتر دارد، base که نقطه مرکزی دایره را نشان میآدهد و parts که تعداد قسمتآهای سیاه سفید را مشخص میآکند.
خط ۳:در داخل تابع اولین دستور draw برای کشیدن مسیرآها استفاده میآشود. مسیر ما در این حالت یک دایره (circle) است که مرکز آن base است و شعاع آن یک واحد است. دستور draw پارامترآهای فراوانی دارد که یکی از آنها ضخامت خط است (linewidth).
خط ۴: حالا برای کشیدن قسمتآهای سیاه سفید نیاز به یک حلقه داریم. این حلقه در واقع رسم کننده قسمتآهای مشکی است که نصف تعداد parts هستند.
خط ۵: این قسمت قلب این کد است. filldraw مانند draw یک مسیر را رسم میکند ولی علاوه بر آن داخل آن را پر میآکند (در اینجا به صورت ساده فقط با رنگ مشکی و به صورت یکنواخت پر میآشود). مسیر ما (قطاعآهای مشکی) از base شروع میآشوند و با یک خط صاف (&ndash

خط ۸-۱۰: فراخوانی تابع برای کشیدن سه دایره.
حالا باید فایل را با صدا زدن asy کامپایل کنید. دقت کنید که فرمت خروجی پیشفرض eps است. شما میآتوانید با سوئیچ f- فرمت خروجی مورد نظر خودتون را مشخص کنید:
asy circles.asy -f gif
این فقط یک نمونه خیلی ساده برای asy بود که به هیچ عنوان نمیآتواند حق مطلب را درباره این برنامه فوقآالعاده بیان کند. حتما سری به سایت asy در اینجا بزنید. علاوه بر این گالری اشکال تولید شده را نیز در اینجا از دست ندهید!
این هم یک مثال زیبا از گالری به نام درخت پیتاگوراس (البته من تغییرش دادهآام و کمی احتمالات به آن اضافه کردهآام).

(*) آدرس سایت برنامه http://asymptote.sourceforge.net/
(*) گالری برنامه http://asymptote.sourceforge.net/gallery/
(*) دوستان لینوکس کار میآتوانند این برنامه را به سادگی از مخازن نصب کنند. دوستان ویندوزی هم نگران نباشند نسخه ویندوز نیز وجود دارد.
دیدگاه