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,
riemapp
aliases the geometries provided bymanim
underriemapp.geometry
. Users can either use these alias classes or directly use theMObject
s provided bymanim
. riemapp
programmatically generatesmanim
animations, 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
bin
folder 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.