All Projects → neozhaoliang → Pywonderland

neozhaoliang / Pywonderland

Licence: mit
A tour in the wonderland of math with python.

Programming Languages

python
139335 projects - #7 most used programming language
GLSL
2045 projects
POV-Ray SDL
72 projects
Jupyter Notebook
11667 projects

Projects that are alternatives of or similar to Pywonderland

mandelbrot
No description or website provided.
Stars: ✭ 36 (-99.11%)
Mutual labels:  fractals
reaction-diffusion
WebGL reaction-diffusion system with variable anisotropic diffusion and Phong illumination.
Stars: ✭ 23 (-99.43%)
Mutual labels:  reaction-diffusion
koch fractals
Koch Fractals Demo for Unity
Stars: ✭ 31 (-99.23%)
Mutual labels:  fractals
CVoxelEngine
A C++ Voxel Engine, to succeed my Java Voxel Engine. Uses SDL, and may use OpenCL in the future.
Stars: ✭ 17 (-99.58%)
Mutual labels:  fractals
fractal-rs
Rust-based program for drawing fractal curves
Stars: ✭ 21 (-99.48%)
Mutual labels:  fractals
fractals-js
Fractals in JavaScript using HTML5 Canvas
Stars: ✭ 24 (-99.4%)
Mutual labels:  fractals
Fatou.jl
Fatou sets in Julia (Fractals, Newton basins, Mandelbrot)
Stars: ✭ 92 (-97.72%)
Mutual labels:  fractals
mandelbrot
A mandelbrot fractal viewer in javascript using svelte
Stars: ✭ 30 (-99.26%)
Mutual labels:  fractals
timewave z3r0
A public domain version of Terrence Mckenna's Timewave Zero software
Stars: ✭ 69 (-98.29%)
Mutual labels:  fractals
unity-raymarcher
Real-time ray marching shaders in Unity
Stars: ✭ 28 (-99.31%)
Mutual labels:  fractals
discretize-guides
This is the source repository for all https://discretize.eu markdown guides.
Stars: ✭ 19 (-99.53%)
Mutual labels:  fractals
topologic
Visualiser for basic geometric primitives and fractals in arbitrary-dimensional spaces
Stars: ✭ 39 (-99.03%)
Mutual labels:  fractals
PixelGlitch
Image glitch visualization using various Pixel Sorting methods for Processing
Stars: ✭ 25 (-99.38%)
Mutual labels:  reaction-diffusion
recursion-and-dynamic-programming
Julia and Python recursion algorithm, fractal geometry and dynamic programming applications including Edit Distance, Knapsack (Multiple Choice), Stock Trading, Pythagorean Tree, Koch Snowflake, Jerusalem Cross, Sierpiński Carpet, Hilbert Curve, Pascal Triangle, Prime Factorization, Palindrome, Egg Drop, Coin Change, Hanoi Tower, Cantor Set, Fibo…
Stars: ✭ 37 (-99.08%)
Mutual labels:  fractals
keikan
An elegant (imo) rendering engine written in Rust.
Stars: ✭ 55 (-98.64%)
Mutual labels:  fractals
Fractal-Inferno
An Online Fractal Flame Generator.
Stars: ✭ 41 (-98.98%)
Mutual labels:  fractals

A Tour in the Wonderland of Math with Python

A collection of python scripts for drawing beautiful figures and animating interesting algorithms in mathematics.

About this repo

The purpose of this project is to show the beauty of math with python by rendering high quality images, videos and animations. It consists of several independent projects with each one illustrates a special object/algorithm in math. The current list contains:

  • Aperiodic tilings like Penrose tiling, Ammann-Beenker tiling, etc.
  • Triology on perfectly random sampling algorithms.
    1. Domino shuffling algorithm on Aztec diamonds.
    2. Wilson's uniform spanning tree algorithm on 2d grids.
    3. Coupling from the past algorithm on lozenge tilings.
  • Hopf fibration.
  • 3D and 4D Uniform polytopes.
  • 2D uniform tilings and 3D uniform honeycombs in Euclidean, spherical and hyperbolic spaces.
  • Make gif animations of various algorithms.
  • Lots of shader animations.
  • Miscellaneous scripts like E8 root system, Mandelbrot set, Newton's fractal, Lorenz attractor, etc.

These topics are chosen largely due to my personal taste:

  1. They must produce appealing results.
  2. There must be some non-trivial math behind them.
  3. The code should be as simple as possible.

I'll use only popular python libs and build all math stuff by hand (tools like sage, sympy, mathemetica will not be used here).

Gallery

The code for some of the images are not in the master branch, they can be found in the released version.

  • Uniform 3D and 4D polytopes

  • Möbius transformations

  • 3D Euclidean uniform honeycombs and their duals

  • Gray-Scott simulation

  • 3D hyperbolic uniform honeycombs

  • Limit set of rank 4 Coxeter groups

  • Aperiodic tilings

  • 3D Fractals

  • Coxeter automata and 2D Uniform tilings

  • GIF animations of various algorithms

  • Others

Many more to be comtinued ...

How to use

All projects here are implemented in a ready-to-use manner for new comers. You can simply run the examples without tweaking any parameters once you have the dependencies installed correctly.

Dependencies

The recommended way to install all dependencies is simply running the bash script install_dependencies.sh.

sudo bash install_dependencies.sh

Or you can install the python libs by pip:

pip install -r requirements.txt

Open source softwares required:

  • python3-tk (for file dialog)
  • ImageMagick (for making gif animations)
  • FFmpeg (for saving animations to video files)
  • POV-Ray (for generating high quality raytracing results)
  • graphviz (for drawing automata of Coxeter groups)
  • Inkscape (optional, for convering large svg files to png)

They can all be installed via command-line:

sudo apt-get install python3-tk imagemagick ffmpeg povray graphviz inkscape

Note pygraphviz also requires libgraphviz-dev:

sudo apt-get install libgraphviz-dev

In the scripts these softwares are called in command line as povray, ffmpeg, convert (from ImageMagick), etc. For Windows users you should add the directories contain these .exe files to the system Path environment variables to let the system know what executables these commands refer to. For example on Windows the default location of POV-Ray's exe file is C:\Program Files\POV-Ray\v3.7\bin\pvengine64.exe, so you should add C:\Program Files\POV-Ray\v3.7\bin to system Path and rename pvengine64.exe to povray.exe, then you can run the scripts without any changes and everything works fine.

Thanks

I have learned a lot from the following people:

License

see the LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].