## Triadic map and lines

The “triadic” discrete time dynamical system, i.e. the one obtained by iterating the function f(x)=3*x mod 1, is a very interesting one, showing a chaotic behaviour for given values of the starting point. I have used a bidimensional version of this in the following code, done with Processing: the starting point is given by (0.12,2.13), and at each iteration you have a line connecting the point at step n with the one at step n-1.

The number of points per frame is dictated by the x-position of the mouse, while the y-position controls the transparency of the lines. The x-position also controls their thickness.

float y;

float a=0.12;

float b=2.13;

float points=500;

float s;

boolean paused=true;

void setup(){

size(400,400);

background(255);

}

void draw(){

if (!paused){

points=map(mouseX,0,width,0,500);

s=map(mouseY,0,height,0,100);

background(255);

translate(width/2,height/2);

stroke(0,int(s));

strokeWeight(int(points/100));

for (int i=0;i<points;i++){

x=(3*a) % 1;

y=(3*b) % 1;

line(map(a,0,1,-width/2,width/2),map(b,0,1,-height/2,height/2),map(x,0,1,-width/2,width/2),map(y,0,1,-height/2,height/2));

a=x;

b=y;

};

};

};

void mousePressed() {

// if paused == true make it false

if(paused) {

paused = false;

}

// otherwise make it true

else {

paused = true;

}

};

Click on the white square to start/stop the animation. 😉