lett=0;letplanes=[];functionsetup(){createCanvas(500,500,WEBGL);background(255);describe("A Levi graph of a reye configuration with 4 planes rotating in the center that obstruct part of the view of the graph. The graph has 4 different tones of the same grey to show the colors with 16 points on an outer circle and 12 on an inner. The sketch is on radial graph paper. If the user tries to rotate the sketch, they will see it from the side. ");noFill();rectMode(CENTER);background(245,250,255);planes=[];for(leti=0;i<4;i++){planes[i]={tx:random(-50,50),ty:random(-50,50),tz:random(-50,50),rx:random((-2*PI)/3,(2*PI)/3),ry:random((-2*PI)/3,(2*PI)/3),rz:random((-2*PI)/3,(2*PI)/3)};}}functiondraw(){ambientLight(255);background(245,250,255);t+=0.005;orbitControl();rotateX(0);rotateY(0.01);n=25;d=width/n;push();translate(0,0,-100);stroke(100,110,120,40);for(leti=0;i<n;i++){push();rotate(((2*PI)/n)*i);strokeWeight(0.5);line(-width/1.5,0,width/1.5,0);circle(0,0,(width/n)*2*i);pop();}stroke(75,85,95,20);strokeWeight(1);stroke(100,110,120,30);rect(0,0,width/1.02,width/1.02);rect(0,0,width/1.04,width/1.04);pop();push();fill(10,20,30,15);noStroke();push();rotateX(t/5);rotateY(t/4);rotateZ(t/6);for(leti=0;i<planes.length;i++){push();translate(planes[i].tx,planes[i].ty,planes[i].tz);rotateX(planes[i].rx-2*PI*cos(t/4));rotateY(planes[i].ry+2*PI*sin(t/5));rotateZ(planes[i].rz-2*PI*cos(t/2));plane(width/6,width/6);pop();}pop();pop();r1=(width/25)*10;r2=(width/25)*1.5;t1=PI/8;t2=PI/6;fill(100,110,120);noStroke();for(leti=0;i<16;i++){push();rotate(t1/2+t1*i);translate(r1,0,0);sphere(5,20);pop();}for(leti=0;i<12;i++){push();rotate(t2*i);translate(r2,0,0);sphere(5,20);pop();}noFill();strokeWeight(3);stroke(10,20,30);line(r1*cos(t1/2+t1*1),r1*sin(t1/2+t1*1),r2*cos(t2*4),r2*sin(t2*4));line(r1*cos(t1/2+t1*1),r1*sin(t1/2+t1*1),r2*cos(t2*0),r2*sin(t2*0));line(r1*cos(t1/2+t1*1),r1*sin(t1/2+t1*1),r2*cos(t2*11),r2*sin(t2*11));line(r1*cos(t1/2+t1*3),r1*sin(t1/2+t1*3),r2*cos(t2*7),r2*sin(t2*7));line(r1*cos(t1/2+t1*3),r1*sin(t1/2+t1*3),r2*cos(t2*0),r2*sin(t2*0));line(r1*cos(t1/2+t1*3),r1*sin(t1/2+t1*3),r2*cos(t2*2),r2*sin(t2*2));push();scale(1,-1);line(r1*cos(t1/2+t1*1),r1*sin(t1/2+t1*1),r2*cos(t2*4),r2*sin(t2*4));line(r1*cos(t1/2+t1*1),r1*sin(t1/2+t1*1),r2*cos(t2*0),r2*sin(t2*0));line(r1*cos(t1/2+t1*1),r1*sin(t1/2+t1*1),r2*cos(t2*11),r2*sin(t2*11));line(r1*cos(t1/2+t1*3),r1*sin(t1/2+t1*3),r2*cos(t2*7),r2*sin(t2*7));line(r1*cos(t1/2+t1*3),r1*sin(t1/2+t1*3),r2*cos(t2*0),r2*sin(t2*0));line(r1*cos(t1/2+t1*3),r1*sin(t1/2+t1*3),r2*cos(t2*2),r2*sin(t2*2));pop();stroke(100,110,120);line(r1*cos(t1/2+t1*5),r1*sin(t1/2+t1*5),r2*cos(t2*4),r2*sin(t2*4));line(r1*cos(t1/2+t1*5),r1*sin(t1/2+t1*5),r2*cos(t2*3),r2*sin(t2*3));line(r1*cos(t1/2+t1*5),r1*sin(t1/2+t1*5),r2*cos(t2*7),r2*sin(t2*7));line(r1*cos(t1/2+t1*7),r1*sin(t1/2+t1*7),r2*cos(t2*8),r2*sin(t2*8));line(r1*cos(t1/2+t1*7),r1*sin(t1/2+t1*7),r2*cos(t2*5),r2*sin(t2*5));line(r1*cos(t1/2+t1*7),r1*sin(t1/2+t1*7),r2*cos(t2*3),r2*sin(t2*3));push();scale(-1,1);line(r1*cos(t1/2+t1*5),r1*sin(t1/2+t1*5),r2*cos(t2*4),r2*sin(t2*4));line(r1*cos(t1/2+t1*5),r1*sin(t1/2+t1*5),r2*cos(t2*3),r2*sin(t2*3));line(r1*cos(t1/2+t1*5),r1*sin(t1/2+t1*5),r2*cos(t2*7),r2*sin(t2*7));line(r1*cos(t1/2+t1*7),r1*sin(t1/2+t1*7),r2*cos(t2*8),r2*sin(t2*8));line(r1*cos(t1/2+t1*7),r1*sin(t1/2+t1*7),r2*cos(t2*5),r2*sin(t2*5));line(r1*cos(t1/2+t1*7),r1*sin(t1/2+t1*7),r2*cos(t2*3),r2*sin(t2*3));pop();stroke(170,180,190);line(r1*cos(t1/2+t1*4),r1*sin(t1/2+t1*4),r2*cos(t2*4),r2*sin(t2*4));line(r1*cos(t1/2+t1*4),r1*sin(t1/2+t1*4),r2*cos(t2*1),r2*sin(t2*1));line(r1*cos(t1/2+t1*4),r1*sin(t1/2+t1*4),r2*cos(t2*6),r2*sin(t2*6));line(r1*cos(t1/2+t1*6),r1*sin(t1/2+t1*6),r2*cos(t2*3),r2*sin(t2*3));line(r1*cos(t1/2+t1*6),r1*sin(t1/2+t1*6),r2*cos(t2*5),r2*sin(t2*5));line(r1*cos(t1/2+t1*6),r1*sin(t1/2+t1*6),r2*cos(t2*6),r2*sin(t2*6));push();scale(1,-1);line(r1*cos(t1/2+t1*4),r1*sin(t1/2+t1*4),r2*cos(t2*4),r2*sin(t2*4));line(r1*cos(t1/2+t1*4),r1*sin(t1/2+t1*4),r2*cos(t2*1),r2*sin(t2*1));line(r1*cos(t1/2+t1*4),r1*sin(t1/2+t1*4),r2*cos(t2*6),r2*sin(t2*6));line(r1*cos(t1/2+t1*6),r1*sin(t1/2+t1*6),r2*cos(t2*3),r2*sin(t2*3));line(r1*cos(t1/2+t1*6),r1*sin(t1/2+t1*6),r2*cos(t2*5),r2*sin(t2*5));line(r1*cos(t1/2+t1*6),r1*sin(t1/2+t1*6),r2*cos(t2*6),r2*sin(t2*6));pop();stroke(220,230,240);line(r1*cos(t1/2+t1*8),r1*sin(t1/2+t1*8),r2*cos(t2*4),r2*sin(t2*4));line(r1*cos(t1/2+t1*8),r1*sin(t1/2+t1*8),r2*cos(t2*5),r2*sin(t2*5));line(r1*cos(t1/2+t1*8),r1*sin(t1/2+t1*8),r2*cos(t2*9),r2*sin(t2*9));line(r1*cos(t1/2+t1*10),r1*sin(t1/2+t1*10),r2*cos(t2*7),r2*sin(t2*7));line(r1*cos(t1/2+t1*10),r1*sin(t1/2+t1*10),r2*cos(t2*8),r2*sin(t2*8));line(r1*cos(t1/2+t1*10),r1*sin(t1/2+t1*10),r2*cos(t2*9),r2*sin(t2*9));push();scale(-1,1);line(r1*cos(t1/2+t1*8),r1*sin(t1/2+t1*8),r2*cos(t2*4),r2*sin(t2*4));line(r1*cos(t1/2+t1*8),r1*sin(t1/2+t1*8),r2*cos(t2*5),r2*sin(t2*5));line(r1*cos(t1/2+t1*8),r1*sin(t1/2+t1*8),r2*cos(t2*9),r2*sin(t2*9));line(r1*cos(t1/2+t1*10),r1*sin(t1/2+t1*10),r2*cos(t2*7),r2*sin(t2*7));line(r1*cos(t1/2+t1*10),r1*sin(t1/2+t1*10),r2*cos(t2*8),r2*sin(t2*8));line(r1*cos(t1/2+t1*10),r1*sin(t1/2+t1*10),r2*cos(t2*9),r2*sin(t2*9));pop();}