riemapp is a fast, easy-to-use, minimal library for Python 3.7+ that aliases manim 0.16.0+ functions for visualising animated and intuitive complex mappings (transformations from the real plane to the complex plane) for various shapes and real-valued functions in two dimensions. It uses a minimum number of dependencies through FFmpeg and pangocairo on Linux.
Users and learners may use riemapp to:
- Plot (user-defined)
- Points
- Lines
- Triangles
- Squares
- Rectangles
- Other regular polygons
- Circles
- Irregular polygons
- …and so on
- Create smooth, precise animations for plotted figures and map them on the Argand plane according to user-defined complex functions.
- Save these animations and play them in the default video player available
- Right now,
riemappaliases the geometries provided bymanimunderriemapp.geometry. Users can either use these alias classes or directly use theMObjects provided bymanim. riemappprogrammatically generatesmanimanimations, and the code for this is available underriemapp.core. All of the information added by a user is passed into a placeholder class which inheritsmanim.Scene. This class' object is then used to render the animation.
FFmpeg
- Install FFmpeg through their download page
or your system's package manager (
apt,brew, ...) or clone Saransh-cpp/FFmpeg. - Add the
binfolder to system path.
pangocairo (Linux systems)
Install libpango1.0-dev if you are on a Linux system -
sudo apt-get update
sudo apt install libpango1.0-dev
riemapp uses modern Python packaging and can be installed using pip -
python -m pip install riemapp
In [1]: import riemapp as rp
Manim Community v0.16.0.post0
In [2]: import numpy as np
In [3]: square = rp.geometry.Square(2.)
In [4]: square
Out[4]: Square(side_length=2.0) (alias for manim.Square)
In [5]: cm = rp.ComplexMap(square, lambda z: np.e ** z)
In [6]: cm
Out[6]: ComplexMap(f=Square(side_length=2.0) (alias for manim.Square), transformation=<lambda>)
In [7]: cm.generate_animation(run_time=2.)
Out[7]: Animate(f=Square(side_length=2.0) (alias for manim.Square), transformation=<lambda>)
In [8]: cm.render(preview=False)Animate.mp4
If you want to contribute to riemapp (thanks!), please have a look at our
Contributing Guide.