int aa = 1920; int bb = 1200; int num = 1000; float[] wli = new float[num]; float[] xli = new float[num]; float[] yli = new float[num]; float[] wdli = new float[num]; float[] rli = new float[num]; float[] xcli = new float[num]; float[] ycli = new float[num]; int m = 0; float ww, xx, yy, wd, dd, rr, wwi, rri, dr, dw, wwdi, xxi, yyi, dx, dy, xxc, yyc; int soweit = 2300; float[][] xBEZli = new float[soweit][num]; float[][] yBEZli = new float[soweit][num]; float malecek = PI/180; float maleceki = 180*PI; float fak, faki; float M = 1; //---------------------------------------------------------------------------------------------------------------------------------------- void setup() { size(1920, 1200, P2D); background(0); frameRate(500); smooth(); stroke(255, 5); strokeWeight(1); noFill(); randomSeed(0); for (int n = 0; n < num; n++) { wli[n] = random(360*100)/100; xli[n] = aa/2; yli[n] = bb/2; xcli[n] = xli[n]; ycli[n] = yli[n]; wdli[n] = 0; rli[n] = 0; } for (int n = 0; n < num; n++) { for (int i = 0; i < soweit; i++) { xBEZli[i][n] = aa/2; yBEZli[i][n] = bb/2; } } } //---------------------------------------------------------------------------------------------------------------------------------------- void draw() { m = m +1; for (int n = 0; n < num; n++) { ww = wli[n]; rr = rli[n]; xx = xli[n]; yy = yli[n]; rr = rr +10; for (int i = 0; i < num; i++) { wwi = wli[i]; rri = rli[i]; xxi = xli[i]; yyi = yli[i]; if (n != i) { dd = dist(xx, yy, xxi, yyi); if (dd < 45) { dd = pow((45 -dd), 2) /(4500 -max(0, m-7000)*4.49); dx = xx -xxi; dy = yy -yyi; if (dx==0) {dx = 0.001;} if (dy==0) {dy = 0.001;} if ((dx >= 0) && (dy >= 0)) {wwdi = atan(dy/dx)*(maleceki) +180;} if ((dx < 0) && (dy >= 0)) {wwdi = atan(dy/dx)*(maleceki);} if ((dx < 0) && (dy < 0)) {wwdi = atan(dy/dx)*(maleceki);} if ((dx >= 0) && (dy < 0)) {wwdi = atan(dy/dx)*(maleceki) +180;} wwdi = min(wwdi, ww)*5; xx = xx +cos(wwdi*malecek)*dd; yy = yy +sin(wwdi*malecek)*dd; } } } xx = xx*faki/100 +(aa/2 +cos(ww*malecek)*sqrt(rr)*3)*fak/100; yy = yy*faki/100 +(bb/2 +sin(ww*malecek)*sqrt(rr)*3)*fak/100; wli[n] = ww; xli[n] = xx; yli[n] = yy; rli[n] = rr; xxc = xcli[n]; yyc = ycli[n]; xcli[n] = xx; ycli[n] = yy; } for (int n = 0; n < num; n++) { xBEZli[m][n] = xli[n]; yBEZli[m][n] = yli[n]; } if (m == soweit-2) { for (int n = 0; n < num; n++) { beginShape(); for (int i = 0; i < soweit; i++) { curveVertex(xBEZli[i][n]*2-960, yBEZli[i][n]*2-600); } endShape(); } saveFrame("ii_#############.tif"); background(0); randomSeed(0); for (int n = 0; n < num; n++) { wli[n] = random(360*100)/100; xli[n] = aa/2; yli[n] = bb/2; xcli[n] = xli[n]; ycli[n] = yli[n]; wdli[n] = 0; rli[n] = 0; } m = 0; M = M *1.01; fak = M/100; faki = 100 -fak; } } //Code for Video "Seele Machen 2/2", 1994-2019 Walter Gorgosilits (Dextro.org)