Solar X-rays:
Geomagnetic Field:
From n3kl.org
/* PROCESSINGJS.COM HEADER ANIMATION MIT License - F1lT3R/Hyper-Metrix Native Processing Compatible */ // Set number of circles int count = 20; // Set maximum and minimum circle size int maxSize = 100; int minSize = 20; // Build float array to store circle properties float[][] e = new float[count][5]; // Set size of dot in circle center float ds=2; // Selected mode switch int sel = 0; // Set drag switch to false boolean dragging=false; // If use drags mouse... void mouseDragged(){ // Set drag switch to true dragging=true; } // If user releases mouse... void mouseReleased(){ // ..user is no-longer dragging dragging=false; } // Set up canvas void setup(){ // Frame rate frameRate(10); // Size of canvas (width,height) size(940,78); // Stroke/line/border thickness strokeWeight(1); // Initiate array with random values for circles for(int j=0;j< count;j++){ e[j][0]=random(width); // X e[j][1]=random(height); // Y e[j][2]=random(minSize,maxSize); // Radius e[j][3]=random(-.5,.5); // X Speed e[j][4]=random(-.5,.5); // Y Speed } } // Begin main draw loop (called 25 times per second) void draw(){ // Fill background black background(0); // Begin looping through circle array for (int j=0;j< count;j++){ // Disable shape stroke/border noStroke(); // Cache diameter and radius of current circle float radi=e[j][2]; float diam=radi/2; // If the cursor is within 2x the radius of current circle... if( dist(e[j][0],e[j][1],mouseX,mouseY) < radi ){ // Change fill color to green. fill(64,187,128,100); // Remember user has circle "selected" sel=1; // If user has mouse down and is moving... if (dragging){ // Move circle to circle position e[j][0]=mouseX; e[j][1]=mouseY; } } else { // Keep fill color blue fill(64,128,187,100); // User has nothing "selected" sel=0; } // Draw circle ellipse(e[j][0],e[j][1],radi,radi); // Move circle e[j][0]+=e[j][3]; e[j][1]+=e[j][4]; /* Wrap edges of canvas so circles leave the top and re-enter the bottom, etc... */ if( e[j][0] < -diam ){ e[j][0] = width+diam; } if( e[j][0] > width+diam ){ e[j][0] = -diam; } if( e[j][1] < 0-diam ){ e[j][1] = height+diam; } if( e[j][1] > height+diam){ e[j][1] = -diam; } // If current circle is selected... if (sel==1) { // Set fill color of center dot to white.. fill(255,255,255,255); // ..and set stroke color of line to green. stroke(128,255,0,100); } else { // otherwise set center dot color to black.. fill(0,0,0,255); // and set line color to turquoise. stroke(64,128,128,255); } // Loop through all circles for(int k=0;k< count;k++){ // If the circles are close... if( dist(e[j][0],e[j][1],e[k][0],e[k][1]) < radi){ // Stroke a line from current circle to adjacent circle line(e[j][0],e[j][1],e[k][0],e[k][1]); } } // Turn off stroke/border noStroke(); // Draw dot in center of circle rect(e[j][0]-ds,e[j][1]-ds,ds*2,ds*2); } }
Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer