Skip to main content

🎬 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)

        # نمایش متن فارسی با فونت پیش‌فرض Vazirmatn
        text = FaText(
            "عبور پرتوهای نور از ==عدسی واگرا==",
            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)

🔹 مثال ۴ — موج ایستاده روی تار

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

class StandingWaveExampleScene(Scene):
    def construct(self):
        title = FaText("موج ایستاده در **هارمونیک‌های** مختلف", font_size=32)
        title.to_edge(UP)
        self.play(Write(title))

        wave1 = StandingWave(1)
        wave2 = StandingWave(2)
        wave3 = StandingWave(3)
        waves = VGroup(wave1, wave2, wave3)
        waves.arrange(DOWN).move_to(ORIGIN)
        self.add(waves)

        for wave in waves:
            wave.start_wave()
        self.wait(4)

🔹 مثال ۵ — میدان مغناطیسی دو آهنربای میله‌ای

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

class BarMagnetExample(Scene):
    def construct(self):
        bar1 = BarMagnet().rotate(PI / 2).shift(LEFT * 3.5)
        bar2 = BarMagnet().rotate(PI / 2).shift(RIGHT * 3.5)

        caption = FaText("خطوط میدان از قطب ==شمال== به قطب ==جنوب==", font_size=30)
        caption.to_edge(DOWN)

        self.add(BarMagneticField(bar1, bar2))
        self.play(FadeIn(bar1), FadeIn(bar2))
        self.play(Write(caption))
        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 میدان مغناطیسی تولید شده توسط سیم‌ها نمایش خطوط میدان مغناطیسی و جهت نیرو
Current magnetostatics.py جریان الکتریکی عمود بر صفحه (به سمت داخل یا بیرون) شبیه‌سازی منبع میدان مغناطیسی نقطه‌ای
CurrentMagneticField magnetostatics.py میدان مغناطیسی حاصل از یک یا چند جریان عمود بر صفحه نمایش خطوط میدان حول جریان‌های موازی
BarMagnet magnetostatics.py آهنربای میله‌ای با قطب شمال و جنوب نمایش دوقطبی مغناطیسی
BarMagneticField magnetostatics.py میدان مغناطیسی حاصل از یک یا چند آهنربای میله‌ای نمایش خطوط میدان بین چند آهنربا
LinearWave waves.py موج سه‌بعدی که در یک جهت مشخص حرکت می‌کند شبیه‌سازی انتشار موج تخت
RadialWave waves.py موج سه‌بعدی که به‌صورت شعاعی از یک یا چند منبع منتشر می‌شود شبیه‌سازی تداخل امواج (مثل امواج آب)
StandingWave waves.py موج ایستاده دوبعدی با هارمونیک قابل تنظیم نمایش هارمونیک‌های تار یا لوله صوتی
TwoObjectsFalling examples / mechanics سقوط دو جسم با برخورد و گرانش نمایش حرکت آزاد و برخورد اشیاء تحت گرانش
DynamicElectricFieldAdvanced examples / electrostatics نمایش میدان الکتریکی بارهای مثبت و منفی با آرروهای پویا مثال پیشرفته برای رفتار دینامیک میدان‌ها
DynamicEMFieldScene examples / advanced ترکیب میدان‌های الکتریکی و مغناطیسی با حرکت بارها و سیم‌ها شبیه‌سازی واقع‌گرایانه میدان‌های الکترومغناطیس

🧾 مجوز

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


🤝 مشارکت

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

Release files for manim-fa-physics 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for manim-fa-physics 0.2.0
File Size Uploaded
manim_fa_physics-0.2.0.tar.gz 19.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for manim-fa-physics 0.2.0
File Interpreter ABI Platform
manim_fa_physics-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 40.0 kB

Release files / manim_fa_physics-0.2.0.tar.gz

Download URL manim_fa_physics-0.2.0.tar.gz
Size 19.3 kB
Tags Source
SHA-256 checksum
How to use checksums
6380ede4b1b08c4e88ffce00f065202168dc0a052a4e80bf9a7d7385ea39e8f6
BLAKE2b-256 checksum
How to use checksums
283419b7da9dfe554a634914b7f6cc67107e8200dd6cdca8b2a2d16478f6797f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / manim_fa_physics-0.2.0-py3-none-any.whl

Download URL manim_fa_physics-0.2.0-py3-none-any.whl
Size 20.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
42edaf122f70eb93928bf0a4259bcaf9419f2ce867bc5cf8105ee1ea4054baf8
BLAKE2b-256 checksum
How to use checksums
ac0c1c54031ecb58111ccae1c75271a95317a0b364db03150d52616e18c3d415
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page