If I want to create a high quality figure to illustrate a scientific concept or experiment I usually use tikz
together with pgfplots
or pstricks
. However this is for static content. Both tools are extremely powerfull for it's purpose and give high quality results. Furhtermore there is a large database of examples, very good documentation and a huge, active user community around those projects.
What would be the "equivalent" of this for creating physics animations or simulations?
I want to start with 2d and 3d animations and simulations like found on the following pages (but possibly looking a bit more high quality):
- http://jakobvogel.net/legacy/index.php?url=physics/index.xml
- http://www.surendranath.org/Apps.html
- http://www.walter-fendt.de/ph6en/
and then proceed to more complex things when I get how to use it.
So what would you recommend for this task and why? I have little bit background in python so I would prefer this but if there is a "killer tool" for this, it would be ok to learn a new language from scratch. Here are the requirements:
- free and open source (FOSS) and should run on linux
- it should be a good interface to recreate the examples from the three cited web sites above (with the potential to make even more complex things)
- like for tikz in the case of static content there should be good documentation and a large active user base
- I need something for 2d and also for 3d
Concerning the difference between animations and simulations, I think that there should be no difference because for a simulation I have to solve a differential equation first (using another library, for example numpy/scipy) and then animating the data. So one could reduce the term "simulation" to "animation" for this question (or did I overlook something?).
Sure I googled for this, but the problem was that got I a very long list of packages and I am not sure where to start. For the static content it was easy as described above, but here I don't see, what would be worth to learn in detail.
Since I have a little bit python experience at first I narrowd the search down to this language.
The only tool I found made for this purpose is vpython, which I tried. However the results didn't look very professional compared to what I was used to get for static content with
tikz
.Then I found some nice plotting tools like
mathplotlib
,mayavi
,bokeh
,chaco
,nodebox
,pyqtgraph
,vispy
,protovis
andvisvis
which possibly could be used to make animations but I am not sure if this is a good way since they seem to be more suited for static plottingThe next category I found were game engines like
pygame
orpylet
,panda3d
orpython-ogre
. I am not sure if it is a good idea to use a complete gaming environment like this for physics animations.Another possibility would be to use just the OpenGl bindings for python directly: pyopengl
Then there is
blender
Finally there seems to be much specalized tools like
pymbs
,pyblocksim
orpyOpTools
However the most physics animations or simulations I can find on the web are java applets. Most of them closed source so I didn't find out which java libraries were used for them. The only one was ejs
which has a graphical user interface but which looks a bit old fashioned.
Finally I considered using html5
for this.