This project uses a custom package called interference_package to simulate and visualize wave interference patterns.
You can import functions like I1, I2, Is, and constants like c1, z, l from interference_package.
Example usage inside a Manim scene:
from manim import *
from interference_package import I1, z, l, c1
class SimplePlot(Scene):
def construct(self):
axes = Axes(
x_range=[-7*z, 7*z, 20],
y_range=[0, 1, 0.2],
x_length=10,
y_length=6,
)
plot = axes.plot(lambda x: I1(x, 30*l, c1), color=BLUE)
self.add(axes, plot)To get started, clone or download the repository.
It is recommended to create your own virtual environment instead of using the pre-existing manim_env/ folder.
python -m venv manim_env.\manim_env\Scripts\activatesource manim_env/bin/activateOnce activated, you'll see (manim_env) at the beginning of your command prompt.
After activating the environment, install all required Python dependencies:
pip install -r requirements.txtMake sure you also have a LaTeX distribution installed on your system:
LaTeX is needed for Manim to render text labels like axis labels.
After activating the environment and installing requirements, you can run Manim commands as usual.
To run a Manim script:
manim -pql <filename>.pyThe flags mean:
-p: Preview the video after rendering-ql: Low quality (you can use-qhfor high quality)
To render a specific scene:
manim -pql <filename>.py SceneNameBefore running tests, make sure you have installed all requirements including pytest.
To run all tests:
pytestPytest will automatically discover and run all test cases inside the tests/ folder.
Example output:
=================================== test session starts ===================================
platform darwin -- Python 3.x.x, pytest-x.x.x
collected 3 items
tests/test_wave_functions.py ... [100%]
==================================== 3 passed in 0.14s ====================================
If you prefer, you can also run:
python -m unittest discover tests- For development, use
-sto skip rendering and show the last frame - Use
-nto render specific frames only - First render is usually slowest due to font building and cache generation
- Break complex scenes into smaller parts if needed
- The first time you run Manim, it may take longer due to:
- Building the font cache
- Initializing components
- Compiling and caching animations
- This is normal. Subsequent runs will be faster.
- Some font warnings might appear — these can be safely ignored.
- Always create and activate your own virtual environment before running Manim commands
- If you get LaTeX errors, double-check that TeX Live (or MacTeX) is properly installed
- For any missing Python packages, reinstall using
pip install -r requirements.txt - Avoid uploading your
manim_env/folder to GitHub; instead, userequirements.txtto define dependencies.