int N=5*5; void setup() { size(1+10*N, 1+10*N); background(0); noStroke(); fill(128); rect(0,0,1+10*N,1+10*N); } int[][] patroon = { {0,0,1,1,0,0,1,1}, {1,0,0,1,1,0,0,1}, {1,1,0,0,1,1,0,0}, {0,1,1,0,0,1,1,0}, {0,0,1,1,0,0,1,1}, {1,0,0,1,1,0,0,1}, {1,1,0,0,1,1,0,0}, {0,1,1,0,0,1,1,0} }; int y=0; int wa=0; void warp(){ if (wa%8<4) fill(255); else fill(0); rect(1+10*wa,y,9,2*N); y+=2*N; if (y==10*N) {y=0; wa++;} if (wa==N) phase=1; } int x=0; int we=0; void weft(){ if (we%8<4) fill(220); else fill(50); if (patroon[we%8][int(x/10)%8]==1) rect (x,1+10*we,1,9); if(++x==10*N) {x=0;we++;} if (we==N) {phase=2;frameRate(30);} } int phase=0; void draw() { switch (phase){ case 0: warp(); break; case 1: weft(); break; default: x=0;y=0;wa=0;we=0;phase=0;setup(); } }