float x,y,x2,y2,xD,yD,n; float xB,yB,xB2,yB2,xBD,yBD; float xC,yC,xC2,yC2,xCD,yCD; float dist,distB,distC,angle; float distAB, distBC, distAC; float test; void setup(){ size(400,400); ellipseMode(CENTER_DIAMETER); translate(width/2,height/2); //????? x=random(-100,100); y=random(-100,100); x2=random(-100,100); y2=random(-100,100); xB=random(-100,100); yB=random(-100,100); xB2=random(-100,100); yB2=random(-100,100); xC=random(-100,100); yC=random(-100,100); xC2=random(-100,100); yC2=random(-100,100); n=3; } void loop(){ background(150,140,140); noStroke(); // BIG CIRCLE translate(width/2,height/2); fill(100,100,100); ellipse(2,2,295,295); fill(200,200,200); ellipse(0,0,290,290); fill(255,255,255); ellipse(0,0,275,275); // MOVE CODE xD=x2-x; yD=y2-y; dist=sqrt(xD*xD+yD*yD); // angle=degrees(atan2(yD,xD)); xBD=xB2-xB; yBD=yB2-yB; distB=sqrt(xBD*xBD+yBD*yBD); xCD=xC2-xC; yCD=yC2-yC; distC=sqrt(xCD*xCD+yCD*yCD); x=x+xD/30; y=y+yD/30; xB=xB+xBD/30; yB=yB+yBD/30; xC=xC+xCD/30; yC=yC+yCD/30; x2=x2+random(-40,40); y2=y2+random(-40,40); xB2=xB2+random(-40,40); yB2=yB2+random(-40,40); xC2=xC2+random(-40,40); yC2=yC2+random(-40,40); // fill(0,255,0); // rect(-50,-50,100,100); // MAKE SURE INVISIBLE PRIMARY DOTS STAY IN CIRCLE test=sqrt(x2*x2+y2*y2); if (test > 170){ if (x2 > 0) { x2 = x2 - 40; } if (x2 < 0) { x2 = x2 + 40; } if (y2 > 0) { y2 = y2 - 40; } if (y2 < 0) { y2 = y2 + 40; } } test=sqrt(xB2*xB2+yB2*yB2); if (test > 170){ if (xB2 > 0) { xB2 = xB2 - 40; } if (xB2 < 0) { xB2 = xB2 + 40; } if (yB2 > 0) { yB2 = yB2 - 40; } if (yB2 < 0) { yB2 = yB2 + 40; } } test=sqrt(xC2*xC2+yC2*yC2); if (test > 170){ if (xC2 > 0) { xC2 = xC2 - 40; } if (xC2 < 0) { xC2 = xC2 + 40; } if (yC2 > 0) { yC2 = yC2 - 40; } if (yC2 < 0) { yC2 = yC2 + 40; } } // KEEP DOTS FROM COLLIDING WITH EACH OTHER distAB = sqrt((x-xB)*(x-xB)+(y-yB)*(y-yB)); if (distAB < 10 ) { if (x > xB) { x=x+n; xB = xB - n; } else { x=x-n; xB = xB + n; } if (y > yB) { y=y+n; yB = yB - n; } else { y=y-n; yB=yB+n; } } distBC = sqrt((xC-xB)*(xC-xB)+(yC-yB)*(yC-yB)); if (distBC < 10 ) { if (xC > xB) { xC=xC+n; xB = xB - n; } else { xC=xC-n; xB = xB + n; } if (yC > yB) { yC=yC+n; yB = yB - n; } else { yC=yC-n; yB=yB+n; } } distAC = sqrt((xC-x)*(xC-x)+(yC-y)*(yC-y)); if (distAC < 10 ) { if (x > xC) { x=x+n; xC = xC - n; } else { x=x-n; xC = xC + n; } if (y > yC) { y=y+n; yC = yC - n; } else { y=y-n; yC=yC+n; } } // DRAW THE CIRCLES // fill(255,0,0); // ellipse (x2,y2, 10, 10); fill(0,0,0); ellipse (x,y, 10, 10); // line(x,y, x2,y2); fill(0,0,0); ellipse (xB,yB, 10, 10); // fill(255,0,0); // ellipse (xB2,yB2, 10, 10); fill(0,0,0); ellipse (xC,yC, 10, 10); // fill(255,0,0); // ellipse (xC2,yC2, 10, 10); }