Ward Penney-Schotter

by Ward Penney @ 2:15 am 12 January 2011

Ward Penney – Schotter, Processing.js Active Object

Ward Penney – Schotter, Processing Applet

Ward Penney – Schotter, Code

/*
Interactive Art & Computational Design / Spring 2011
Carnegie Mellon University

Ward Penney
12-Jan-2011

This is an educational reproduction of the Schotter computational art, located at http://www.medienkunstnetz.de/works/schotter/
*/

// setup variables
int rows = 24; // rows of sqaures
int columns = 12; // columns of squares
int margin = 30; // margin around the matrix
int sideLength = 25; // side of each square
float factor = .5; // factor for randomness, smaller fraction means less variability in rotation and offset of squares

void setup() {

// set up the screen to have the desired margins around the determined
// amount of rows / columns of squares of a given sideLength
int sizeX = 2*margin + columns*sideLength;
int sizeY = 2*margin + rows*sideLength;
size (sizeX, sizeY);

smooth(); // turn on anti-aliasing
noFill(); // turn of rectangle fills
background(#FFFFFF); // background color
noLoop(); // execute draw() only once
}

void draw() {

// count squares
int squareCount = 1;

// print rows
for (int ir = 1 ; ir < rows ; ir ++) { // print columns for (int ic = 1 ; ic < columns ; ic ++) { // translate translate(margin + ic*sideLength + sideLength/2, margin + ir*sideLength + sideLength/2); // get proportional counter / count amount of rotaion, over a degree range float absRotationDegs = (map(squareCount, 0, rows * columns - 1, 0, 360) * factor)/2; float randomRotationRadians = radians(random(-absRotationDegs, absRotationDegs)); rotate(randomRotationRadians); // get random offsets, halved for negtive possibility float absOffsetX = (map(squareCount, 0, rows * columns - 1, 0, sideLength/2) * factor)/2; float absOffsetY = (map(squareCount, 0, rows * columns - 1, 0, sideLength*2) * factor)/2; float randomOffsetX = random(-absOffsetX, absOffsetX); float randomOffsetY = random(-absOffsetY, absOffsetY); // draw rectangle rectMode(CENTER); rect(randomOffsetX, randomOffsetY, sideLength, sideLength); // rotate back rotate(-randomRotationRadians); // translate back translate(-1*(margin + ic*sideLength + sideLength/2), -1*(margin + ir*sideLength + sideLength/2)); // increment square count squareCount += 1; } } }

Ward Penney - Schotter video demo in OpenFrameworks

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
(c) 2023 Interactive Art & Computational Design / Spring 2011 | powered by WordPress with Barecity