Message
Message
*;
PeasyCam cam;
// max value
int N = 100000;
// red
float r = 192;
float rvar = 40;
float rmin = 96;
float rmax = 255;
// green
float g = 192;
float gvar = 4;
float gmin = 10;
float gmax = 192;
// blue
float b = 192;
float bvar = 2;
float bmin = 96;
float bmax = 255;
// even angles
float axe = PI/13;
float aye = PI/13;
float aze = PI/13;
// odd angles
float axo = -PI/20;
float ayo = -PI/20;
float azo = -PI/20;
void setup() {
fullScreen(P3D);
cam = new PeasyCam(this, 800);
chains = new ArrayList();
IntList done = new IntList();
for (int i = N; i >= 2; i--) {
if (!done.hasValue(i)) {
IntList chain = collatzChain(i);
done.append(chain);
chains.add(chain);
}
}
}
void draw() {
background(0);
stroke(255);
drawChains(chains);
}
int collatz(int n) {
if (n % 2 == 0) {
return n / 2;
} else {
return (3 * n + 1) / 2;
}
}
IntList collatzChain(int n) {
IntList l = new IntList();
if (n < 2) {
return l;
}
while (n != 1) {
l.append(n);
n = collatz(n);
}
return l;
}
float a = 0;