Skip to main content

افزونه فیزیک برای Manim (مکانیک، گرانش، اوپتیک، الکترومغناطیس، الکترواستاتیک)

Project description

🎬 manim-fa-physics

افزونه مانیم (مجموعه‌ای از ماژول‌های فیزیک) برای به تصویر کشیدن مفاهیم فیزیک از قبیل مکانیک، نور و الکترومغناطیس نوشته شده است.
این افزونه یا پلاگین به شما امکان می‌دهد تا با خلق صحنه‌های دینامیک در قالب انیمیشن‌های ویدیویی مفاهیم فیزیک را به صورت بصری آموزش دهید.


🔧 نحوه نصب پلاگین

pip install manim-fa-physics

یا برای نصب محلی (در حالت توسعه):

pip install -e .

💡 مثال‌های آموزشی

🔹 مثال ۱ — حرکت آونگ ساده

from manim import *
from manim_fa_physics import *

class PendulumDemo(SpaceScene):
    def construct(self):
        pend = Pendulum(length=3, initial_theta=0.4)
        self.add(pend)
        self.make_rigid_body(*pend.bobs)
        pend.start_swinging()
        self.add(TracedPath(pend.bobs[-1].get_center, stroke_color=BLUE))
        self.wait(5)

        

🔹 مثال ۲ — انتشار نور در عدسی‌های واگرا

from manim import *
from manim_fa_physics import *
from manim_fa import FaText

class ConcaveLensExampleDynamic(Scene):
    def construct(self):
        # ساخت عدسی واگرا
        lens = Lens(-4, 1, fill_opacity=0.4, color=BLUE).shift(RIGHT)
        self.play(FadeIn(lens))

        # تعریف پرتوها
        rays = [
            Ray(LEFT * 4 + UP * i, RIGHT, 8, [lens], color=YELLOW)
            for i in [0.6, 0.2, -0.2, -0.6]
        ]

        # نمایش تدریجی پرتوها
        for ray in rays:
            self.play(Create(ray), run_time=1.2)
            self.wait(0.2)

        # نمایش متن فارسی با فونت IRLotus
        text = FaText(
            "عبور پرتوهای نور از عدسی واگرا",
            font="IRLotus",
            font_size=36
        )

        text.to_corner(UL)  # گوشه‌ی بالا چپ
        text.shift(RIGHT * 2 + DOWN * 2)

        # انیمیشن نوشتن متن
        self.play(Write(text))
        self.wait(2)

🔹 مثال ۳ — تغییرات میدان الکتریکی بارها

from manim import *
from manim_fa_physics import *


class DynamicElectricFieldSceneII(Scene):
    

    def construct(self):
        # تعریف دو بار ثابت منفی در دو طرف صحنه
        neg_left = Charge(-1, LEFT * 3 + DOWN)
        neg_right = Charge(-1, RIGHT * 3 + DOWN)

        # تعریف یک بار مثبت متحرک
        pos_charge = Charge(2, ORIGIN + UP * 0.5)

        # ایجاد میدان الکتریکی اولیه بر اساس موقعیت فعلی بارها
        field = ElectricField(neg_left, neg_right, pos_charge)

        # افزودن اجزای صحنه
        self.add(neg_left, neg_right, pos_charge, field)

        # تابع به‌روزرسانی میدان برای هر فریم
        def update_field(field_obj):
            field_obj.become(ElectricField(neg_left, neg_right, pos_charge))

        field.add_updater(lambda f: update_field(f))

        # پویانمایی حرکت بار مثبت
        self.play(
            pos_charge.animate.shift(RIGHT * 4),
            run_time=5,
            rate_func=there_and_back,
        )

        # توقف آپدیت میدان و پایان
        field.remove_updater(lambda f: update_field(f))
        self.wait(2)

🌀 فهرست کامل انیمیشن‌های کاربردی

نام انیمیشن / کلاس ماژول توضیح فارسی کاربرد آموزشی
MultiPendulum pendulum.py یک سیستم چند نوسانی شامل چند وزنه متصل به هم شبیه‌سازی نوسان پیچیده چند وزنه‌ای
Pendulum pendulum.py یک پاندول ساده با طول و زاویه اولیه قابل تنظیم نمایش حرکت نوسانی پاندول
SpaceScene mechanics.py صحنه پایه برای اعمال مکانیک سخت و گرانش ایجاد اشیاء صلب و ثابت، و اعمال نیروهای گرانشی و برخورد
make_rigid_body mechanics.py تبدیل یک Mobject به جسم متحرک با گرانش و برخورد نمایش حرکت واقعی اشیاء تحت گرانش
make_static_body mechanics.py تبدیل یک Mobject به جسم ثابت ایجاد موانع و سطوح برخوردی
Lens lenses.py یک عدسی محدب یا مقعر با ضخامت و ضریب شکست مشخص شبیه‌سازی شکست نور و رفتار عدسی‌ها
Ray rays.py پرتو نور که می‌تواند از عدسی‌ها عبور کند و شکست شود نمایش عبور نور از عدسی‌ها و قوانین شکست نور
Charge electrostatics.py بار الکتریکی مثبت یا منفی با اثر میدان الکتریکی نمایش نقاط بار و تاثیر آن‌ها بر میدان الکتریکی
ElectricField electrostatics.py میدان الکتریکی تولید شده توسط یک یا چند بار نمایش خطوط میدان الکتریکی و جهت نیرو
Wire magnetostatics.py سیم حامل جریان الکتریکی شبیه‌سازی منابع میدان مغناطیسی
MagneticField magnetostatics.py میدان مغناطیسی تولید شده توسط سیم‌ها نمایش خطوط میدان مغناطیسی و جهت نیرو
TwoObjectsFalling examples / mechanics سقوط دو جسم با برخورد و گرانش نمایش حرکت آزاد و برخورد اشیاء تحت گرانش
DynamicElectricFieldAdvanced examples / electrostatics نمایش میدان الکتریکی بارهای مثبت و منفی با آرروهای پویا مثال پیشرفته برای رفتار دینامیک میدان‌ها
DynamicEMFieldScene examples / advanced ترکیب میدان‌های الکتریکی و مغناطیسی با حرکت بارها و سیم‌ها شبیه‌سازی واقع‌گرایانه میدان‌های الکترومغناطیس

🧾 مجوز

این پروژه تحت مجوز MIT منتشر می‌شود.
ساخته‌شده توسط علی تابش برای جامعه‌ی فارسی‌زبان Manim.


🤝 مشارکت

اگر پیشنهادی برای بهبود پلاگین، کلاس‌ها، تابع‌ها یا سازگاری با نسخه‌های جدید Manim دارید،
Pull Request بسازید یا در بخش Issues مطرح کنید.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

manim_fa_physics-0.1.0.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

manim_fa_physics-0.1.0-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file manim_fa_physics-0.1.0.tar.gz.

File metadata

  • Download URL: manim_fa_physics-0.1.0.tar.gz
  • Upload date:
  • Size: 15.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for manim_fa_physics-0.1.0.tar.gz
Algorithm Hash digest
SHA256 31ab2fcdc117434b9bc1783a7f853d49e15bc9dd5c3a890117c0ce89db126471
MD5 4d68c7f6420ed4ae916eb9600794b097
BLAKE2b-256 ea603cfcad63e05a7b8fb5a9f198a5d48ef0d082194fadfd923203d226aca0a0

See more details on using hashes here.

File details

Details for the file manim_fa_physics-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for manim_fa_physics-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ae44ca2a3a059c28e565cd37deba2e3f1147686f4e894d8991bf9b37ee3935cd
MD5 05940a7368d2a9547fb02fde1a197129
BLAKE2b-256 f2f20b5c49597c57f30b702eab416cea718dc1c89398c9f88669ff9fa904d242

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page