2Dphysics: موتور فیزیک دوبعدی جاوااسکریپت در ۱.۵ کیلوبایت
خلاصهٔ کاملتر
Xem نسخهٔ 1.1 پروژهٔ 2Dphysics رو منتشر کرده. به گفتهٔ خودش این کوچیکترین موتور فیزیک دوبعدی جاوااسکریپته که فنر و مفصل (joint) هم داره. موتور فیزیک یعنی کدی که حرکت، برخورد و نیروهای بین اجسام رو حساب میکنه تا لازم نباشه خودت معادلهها رو بنویسی.
سه نسخه ازش هست: سورس کامنتدار حدود ۲۰ کیلوبایت، نسخهٔ مینیفای که zipشده حدود ۱.۵ کیلوبایته، و نسخهٔ micro بدون joint که حدود ۱.۲ کیلوبایته. کل کد تحت مالکیت عمومی (public domain) منتشر شده.
API خیلی سادهست. با shape یه مستطیل یا دایره میسازی و جرم، اندازه و گزینههایی مثل اصطکاک، restitution (یعنی میزان برگشت جسم بعد از برخورد)، زاویه، سرعت و جاذبهٔ اختصاصی رو بهش میدی. اگه جرم رو صفر بذاری، جسم ثابت میشه. با anchor روی جسم یه نقطهٔ اتصال میذاری و با joint دو نقطه رو به هم وصل میکنی. run() هم یه قدم شبیهسازی رو اجرا میکنه.
چهار نوع اتصال داره: SPRING (فنر با طول استراحت)، REPULSIVE (دافعه تا یه حداقل فاصله)، HINGE (لولا) و FIXED (اتصال ثابت). مثلاً برای وصل کردن یه دایره به یه مستطیل ثابت با فنر:
r1 = shape(RECTANGLE, [130, 100], 0, 90, 50);
c1 = shape(CIRCLE, [90, 250], 1, 30, 30);
a1 = anchor(r1, [20,15]);
a2 = anchor(c1, [0,-10]);
joint(SPRING, r1, a1, c1, a2, .2, 80);رندرر جزو موتور نیست؛ خودت باید با canvas شکلها رو از روی لیست H و اتصالها رو از لیست J بکشی. صفحهٔ پروژه یه رندرر نمونه و یه حلقهٔ بازی ساده با setInterval هر ۱۶ میلیثانیه گذاشته. یعنی موتور فقط ریاضی رو انجام میده و ظاهر کاملاً دست خودته.
نکات کلیدی:
- نسخهٔ فعلی 1.1 هست و تحت public domain منتشر شده.
- نسخهٔ مینیفای حدود ۱.۵ کیلوبایت و نسخهٔ micro بدون joint حدود ۱.۲ کیلوبایته (zipشده).
- شکلها فقط مستطیل و دایره هستن و جرم صفر یعنی جسم ثابت.
- چهار نوع joint داره: SPRING، REPULSIVE، HINGE و FIXED.
- مقادیر پیشفرض: جاذبه [0,.1] و ۲۰ بار resolution در هر فریم.
- رندرر همراهش نیست و باید خودت با canvas بنویسی.




