/* built with Studio Sketchpad: * https://sketchpad.cc * * observe the evolution of this sketch: * https://studio.sketchpad.cc/sp/pad/view/ro.FhVIJtLdLOT/rev.15 * * authors: * GoToLoop * license (unless otherwise specified): * creative commons attribution-share alike 3.0 license. * https://creativecommons.org/licenses/by-sa/3.0/ */ /** * Lerp Dots (v3.80) * by GokPotter (2013/Feb) * mod GoToLoop * * http://forum.processing.org/topic/gradual-movement-within-a-for-loop * http://forum.processing.org/topic/drawing-a-network-of-nodes-and-links * * http://studio.processingtogether.com/sp/pad/export/ro.9Kzw4QVZGKeFZ/latest */ final static byte FPS = 040, BIND_DIST = 020; final static float DOT_THICK = 4, LINE_THICK = 1.5; final static color BG = 0350, DOT_COLOR = #FFA000, LINE_COLOR = #0000FF; final static short NUM_STEPS = 0500, DOT_AMOUNT = 01000; final static boolean IS_SMOOTH = false; final static PVector[] dotList = new PVector[DOT_AMOUNT]; final static PVector[] oldDotList = new PVector[DOT_AMOUNT]; final static PVector[] currentPos = new PVector[DOT_AMOUNT]; final static String ENGINE = JAVA2D; // Use JAVA2D or P2D void setup() { size(800, 600, ENGINE); frameRate(FPS); if (IS_SMOOTH) smooth(); else noSmooth(); createDotList(); newDotList(); } void createDotList() { for (int i = 0; i != DOT_AMOUNT; i++) { dotList[i] = new PVector( random(width), random(height) ); currentPos[i] = new PVector(); } } void newDotList() { arrayCopy(dotList, oldDotList); for (int i = 0; i != DOT_AMOUNT; dotList[i++] = new PVector( random(width), random(height) )); } void connectPoints(int i) { for (int z = i+1; z != DOT_AMOUNT; z++) if (currentPos[i].dist(currentPos[z]) < BIND_DIST) line(currentPos[i].x, currentPos[i].y, currentPos[z].x, currentPos[z].y); } void draw() { background(BG); final float amt = (float) frameCount/NUM_STEPS; for (int i = 0; i != DOT_AMOUNT;) { final float pointX = lerp(oldDotList[i].x, dotList[i].x, amt); final float pointY = lerp(oldDotList[i].y, dotList[i].y, amt); currentPos[i].set(pointX, pointY, 0); strokeWeight(DOT_THICK); stroke(DOT_COLOR); point(pointX, pointY); strokeWeight(LINE_THICK); stroke(LINE_COLOR); connectPoints(i++); } /* frame.setTitle( "Lerp Dots Frame: #" + frameCount + " FPS: " + round(frameRate) ); */ if (frameCount == NUM_STEPS) { frameCount = 0; newDotList(); } } void keyPressed() { if (key == ' ') frameCount = NUM_STEPS-1; else mousePressed(); } void mousePressed() { if (looping) noLoop(); else loop(); }