// P_2_1_3_01.pde
//
// Generative Gestaltung, ISBN: 978-3-87439-759-9
// First Edition, Hermann Schmidt, Mainz, 2009
// Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni
// Copyright 2009 Hartmut Bohnacker, Benedikt Gross, Julia Laub, Claudius Lazzeroni
//
// http://www.generative-gestaltung.de
/**
* changing circle amount, size and position in a grid
*
* MOUSE
* position x : circle amount and size
* position y : circle position
* left click : random position
*
* KEYS
* s : save png
* p : save pdf
*/
import processing.pdf.*;
import java.util.Calendar;
boolean savePDF = false;
float tileCountX = 10;
float tileCountY = 10;
float tileWidth, tileHeight;
int count = 0;
int colorStep = 15;
int circleCount;
float endSize, endOffset;
int actRandomSeed = 0;
void setup() {
size(800, 800);
tileWidth = width / tileCountX;
tileHeight = height / tileCountY;
}
void draw() {
if (savePDF) beginRecord(PDF, timestamp()+".pdf");
smooth();
noFill();
stroke(0, 128);
background(255);
randomSeed(actRandomSeed);
translate((width/tileCountX)/2, (height/tileCountY)/2);
circleCount = mouseX/30 + 1;
endSize = map(mouseX, 0, width, tileWidth/2.0, 0);
endOffset = map(mouseY, 0, height, 0, (tileWidth-endSize)/2);
for (int gridY=0; gridY <= tileCountY; gridY++) {
for (int gridX=0; gridX <= tileCountX; gridX++) {
pushMatrix();
translate(tileWidth*gridX, tileHeight*gridY);
scale(1, tileHeight/tileWidth);
int toggle = (int) random(0, 4);
if (toggle == 0) rotate(-HALF_PI);
if (toggle == 1) rotate(0);
if (toggle == 2) rotate(HALF_PI);
if (toggle == 3) rotate(PI);
// draw module
for (int i=0; i < circleCount; i++) {
float diameter = map(i, 0, circleCount-1, tileWidth, endSize);
float offset = map(i, 0, circleCount-1, 0, endOffset);
ellipse(offset, 0, diameter, diameter);
}
popMatrix();
}
}
if (savePDF) {
savePDF = false;
endRecord();
}
}
void mousePressed() {
actRandomSeed = (int) random(100000);
}
void keyReleased() {
if (key == 's' || key == 'S') saveFrame(timestamp()+"_##.png");
if (key == 'p' || key == 'P') savePDF = true;
}
// timestamp
String timestamp() {
Calendar now = Calendar.getInstance();
return String.format("%1$ty%1$tm%1$td_%1$tH%1$tM%1$tS", now);
}
Exercise 51
by
Tags:
Leave a Reply