Mod Tables
Chaos Game and the Hexagon
Personal Website
I have setup a personal website koozdra.ca.
There is a preliminary demo of the Chaos Game Path Plotter.
More Interesting Patterns Hidden in the Chaos Game
UPDATE: Interactive version Chaos Game
I was curious to see what would happen If generated chaos games in ascending magnitudes and drew them together. Typically a pattern emerges from 0.5 to 1.5 magnitudes depending on the number of attractors. I split up the spectrum into two parts 0.5 to 1 and 1 to 1.5. This is done because values above 1 draw into the middle of the attractors. This interferes with the internal pattern.
1.5 Magnitude Pentagon Chaos Game
If at each iteration in the chaos game the current point is moved 1.5 times the distance to a randomly selected pentagonal vertex attractor, this image is created.
This image seemed familiar to me. I had created a magnetic shape that looked very similar.
Adding a Little More Chaos to the Chaos Game
The Chaos Game defines a set of attractors and an iterative process that moves a point towards a random attractor by a specified magnitude.
This image is generated by having five attactors, the points of a pentagon. At each iteration the current point moves towards a point on the pentagon by PHI (0.618) times the distance to the attractor.
I wanted to see what would happen if the magnitude of attraction was also chaotic. At each stage of the algorithm a random attraction magnitude is chosen between [0.5,1.5].
More Resources:
Mathworld Chaos Game Page
Wikipedia Chaos Game Page
[Update] Processing code to generate the shapes above:
var attractors = [];
var current = [random(800),random(800)]
for(var i = 0; i < 6; i++){
attractors.push([cos(i * 2 * PI/5) * 300, sin(i * 2 * PI/5) * 300]);
}
var attraction = 0.5;
void draw(){
translate(width/2, height/2);
rotate(PI/2);
stroke(0);
for(var i = 0; i < attractors.length; i++){
rect(attractors[0], attractors[1], 5,5);
}
for(var i = 0; i < 100; i++){
point(current[0],current[1]);
var target = attractors[Math.floor(Math.random() * (attractors.length-1))]
current[0] = current[0] - (current[0] - target[0]) * attraction;
current[1] = current[1] - (current[1] - target[1]) * attraction;
}
attraction = Math.random()+.5;
}