This repository is a fork of manim-data-structures. The code should be used as a reference for we're going for, but we are aiming to make the animation interface for our objects a little more fluid.
Manim is a library for math animation written by Grant Sanderson (3b1b) to create videos for his YouTube channel. The open source community adopted his project and began developing the community version of Manim. What Manim provides is a set of Mobjects (mathematical objects) that can be instantiated and manipulated programatically as well as a rendering engine that can be called to convert the manipulations into videos.
We are aiming to create Mobjects that implement common structures from computer science. For example similarly to how Manim provides a Plane Mobject we will provide a Variable Mobject that can hold an Mobject. Then we can build up more complex Mobjects such as arrays, pointers, linked lists, etc. These Mobjects will be able to be manipulated and animated in the same way as the Mobjects provided by Manim, thus allowing for the creation of videos that demonstrate the use of these data structures with very little additional effort.
The goal is to produce a Manim Plugin that can be installed and used by the community. The plugin will provide a set of Mobjects that can be used to create animations of common data structures. The plugin will also provide a set of animations that can be used to manipulate the Mobjects in a way that is consistent with the way the Mobjects are used in the real world. For example, when a variable is assigned a value, the value is copied into the variable.
- Variable
- Pointer
- Array
- List
- Stack
- Queue
- Set
- Map
- Linked List
- Nary-Tree
- B-Trees
- Heap
- Graph
- Directed Graph
- Undirected Graph
- Weighted Graph
- Directed Weighted Graph
- Undirected Weighted Graph
- Trie
For information on how to contribute to this project, please see CONTRIBUTING.md.