# Visualisation of the Rećaman Sequence

I made a small animation sketch in Processing, visualising the properties of the Rećaman integers sequnce.

https://oeis.org/A005132

This is only a snapshot.
Color represents whether a number is achieved with a jump backwards or forwards,
Radius of the arc is the size of the jump, and rotation frequency is relative to the jump size too.
For aesthetics reasons I used only the first 18 terms of the sequnce.

here’s the code:

``````IntList ser    = new IntList();
int     mxjmp  = 18;
float   scl    = 33.0;
float   rt     = 0.0;
Boolean notBack;

void setup() {
size(1500, 1000,P3D);
strokeWeight(3);
rectMode(CENTER);
background(0);

initSer();
}

void draw() {
pushMatrix();
fill(0, 10);
noStroke();
translate(width/2, height/2, -400);
rect(0, 0, width*2, height*2);
popMatrix();

for (int i=0; i<ser.size()-1; i++)
{

float yy    =  scl* (ser.get(i+1)+ser.get(i))/2;
float rr    = scl* abs( ser.get(i+1)-ser.get(i));

noFill();
stroke(255, ser.get(i+1)-ser.get(i)>0?255:100,  ser.get(i+1)-ser.get(i)>0?255:0,100);
pushMatrix();
translate(width/2, 60);
rotateY(rt*300/(1+i));
arc(0, yy, rr, rr, HALF_PI+(i%2)*PI, HALF_PI+PI+(i%2)*PI);
popMatrix();
}

rt+=0.00075;
}

void initSer() {
int     jmp  = 1;
ser = new IntList();
ser.append(0);
while (jmp<mxjmp)
{
check(ser.get(ser.size()-1)-jmp);
if (notBack) ser.append(ser.get(ser.size()-1)+jmp);
else  ser.append(ser.get(ser.size()-1)-jmp);
jmp++;
}
}

void check(int h_)
{
notBack=false;
for (int i=0; i<ser.size(); i++)
if (ser.get(i)==h_ || h_<0) notBack=true;
}``````
5 Likes

fantastic animation, looks awesome…

Congratulations!

1 Like

thanks for the kind word

1 Like

Beautiful. Congrats.

2 Likes