int windowsize=300; void setup() { size(windowsize, windowsize); background(255); // frameRate(20); loop(); } void draw() { int n=mouseX/10; int m=mouseY/10; fill(255); rect(0,0,windowsize,windowsize); federico(13,n,0,1); federico(13,m,0,1); } void federico(int a, int b, int c, int d) { noStroke(); float sidelength = 9; for(int i=-200; i<=200; i+=10) { for(int j=-200; j<=200; j+=10) { //identity times matrix fill(0,160,200); rect(a*i+b*j+windowsize/2,c*i+d*j+windowsize/2,sidelength,sidelength); // alpha times matrix fill(0,140,180); rect(c*i+d*j+windowsize/2, -a*i-b*j+windowsize/2,sidelength,sidelength); // beta times matrix fill(0,120,160); rect(c*i+d*j+windowsize/2, a*i+b*j+windowsize/2,sidelength,sidelength); // alpha beta times matrix fill(0,100,140); rect(a*i+b*j+windowsize/2, -c*i-d*j+windowsize/2,sidelength,sidelength); } } }