xxxxxxxxxx
91
function binary(num, digits) {
let s = "";
for (let i = 0; i < digits; i++) {
s = str(num % 2) + s;
num = int(num / 2);
}
return s;
}
function binary2(num) {
let s = "";
while (num > 0) {
s = str(num % 2) + s;
num = int(num / 2);
}
return s;
}
function sequence(n) {
let seq = "";
for (let i = 0; i < pow(2, n); i++) {
seq += binary(i, n);
// seq += binary2(i);
}
return seq;
}
function display() {
let n = 19;
let x = 0;
let y = 0;
let px = x;
let py = y;
let seq = sequence(n);
let step = 0.05/4/4;
noFill();
stroke(0);
strokeWeight(1);
let a = [1001, 1001, -1, -1];
let xs = [x];
let ys = [y];
let dir = [1, 0];
for (let i = 0; i < seq.length; i++) {
px = x;
py = y;
x += dir[0] * step;
y += dir[1] * step;
xs.push(x);
ys.push(y);
a = [min(a[0], x), min(a[1], y), max(a[2], x), max(a[3], y)];
if (seq[i] == '0') {
if (dir[0] == 1 && dir[1] == 0) {
dir = [0, 1];
} else if (dir[0] == 0 && dir[1] == 1) {
dir = [-1, 0];
} else if (dir[0] == -1 && dir[1] == 0) {
dir = [0, -1];
} else {
dir = [1, 0];
}
} else {
if (dir[0] == 1 && dir[1] == 0) {
dir = [0, -1];
} else if (dir[0] == 0 && dir[1] == -1) {
dir = [-1, 0];
} else if (dir[0] == -1 && dir[1] == 0) {
dir = [0, 1];
} else {
dir = [1, 0];
}
}
}
let midX = (a[0] + a[2]) / 2;
let midY = height - (a[1] + a[3]) / 2;
translate(width / 2 - midX, height / 2 - midY);
colorMode(HSB, 100);
for (let i = 0; i < seq.length; i++) {
stroke(i / seq.length * 100, 100, 75);
line(xs[i], height - ys[i], xs[i+1], height - ys[i+1]);
}
}
function setup() {
createCanvas(1000, 1000);
}
function draw() {
background(255);
display();
noLoop();
}