| float rectSize = 30; | |
| int numRects = 40; | |
| float outerRadius = 120; | |
| int aframes = 140; | |
| boolean SAVE_FRAMES = true; | |
| void setup() { | |
| size(500, 500); | |
| } | |
| void draw() { | |
| background(255); | |
| drawRects(numRects); | |
| export(); | |
| } | |
| void export() { | |
| if (!SAVE_FRAMES) { | |
| return; | |
| } | |
| if (frameCount > aframes) { | |
| return; | |
| } | |
| String fname = nf((frameCount), 3) + ".png"; | |
| println(fname); | |
| save(fname); | |
| } | |
| void drawRects(int numRects) { | |
| for (int i = 0; i < numRects; i++) { | |
| drawRect(i, numRects); | |
| } | |
| } | |
| void drawRect(int i, int numRects) { | |
| float n = norm(i, 0, numRects); | |
| float offset = 80.0 * sin((5 * TWO_PI * n) + (TWO_PI * norm(frameCount%aframes, 0, aframes))); | |
| pushMatrix(); | |
| translate(width*0.5, height*0.5); | |
| rotate(n*TWO_PI); | |
| translate(outerRadius+offset, 0); | |
| drawRect(); | |
| popMatrix(); | |
| stroke(255, 0, 0); | |
| } | |
| void drawRect() { | |
| stroke(0); | |
| strokeWeight(2); | |
| fill(255); | |
| rectMode(CENTER); | |
| rect(0, 0, rectSize, rectSize, 6); | |
| } |