chaos/README.md

23 lines
1.6 KiB
Markdown

# Chaos game app
A Javascript web app that allows you to test the "Chaos game" algorithm that consists in a few steps:
1. take a n-vertices polygon (in the app, there is only regular polygons, but it is possible to use scalenous ones);
2. choose a random point (out or inside the polygon);
3. choose a random vertex;
4. take the middle of the segment vertex-point (other factors can also be used);
5. go to step 2. using the middle point.
This game was created by Michael Barnsley and was described in his book _Fractals everywhere_ in 1993. When using a triangle and a factor 1/2, you get the Sierpinski's triangle. Other fractal forms can also be plotted using other settings. Most common settings are present in the "Presets" section in the app.
## Technical details
This experiment made me try several ways of drawing a lot of points on a canvas element. Actually, the coordinates of the points are calculated in a separate thread using Workers (js/lib/chaos.js), and then plotted using putDataImage. I wrote some [performance tests here](http://jsperf.com/filling-a-bunch-of-points-in-canvas) and the result is that this method is about 100x faster.
Points of a regular polygon are calculated using a circle and a loop that iterates along it (angle per angle). Using trigonometric functions, we can then retrieve the actual coordinates of these points (more in the js/lib/script.js file).
## Links
[More on Michael Barnsley](http://en.wikipedia.org/wiki/Michael_Barnsley)
[More on Chaos game](http://en.wikipedia.org/wiki/Chaos_game)
[See the app](http://matteo78.github.io/chaos-game)