Category: Assignment-04-Schotter

Maryyann-Schotter

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
int offset;
float rotation;
int min, max;
 
void setup() {
size(540, 840);
background(190);
swidth = sheight = 30;
offset = 90;
rotation = radians(1);
min = -1;
max = 1;
noLoop();
}
 
void draw() {
noFill();
for (int row = 0; row < 22;row++) {
for (int col = 0; col< 12;col++) {
pushMatrix();
translate(col*swidth + offset, row*sheight+offset);
rotate(rotation);
rect(0, 0, swidth, sheight);
popMatrix();
rotation=radians(random(min, max));
}
min -= 3;
max += 3;
}
}

Rachel-Schotter

 photo SchotterImage_zps0f7d747d.jpg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*Rachel Moeller
EMS2 Assignment 4 Schotter Reproduction
*/
int bufferSpace=50;
float r;
float i;
 
 
void setup()
{
  size(340,500);
  smooth();
  noLoop();
  rectMode(CORNER);
}
 
void draw()
{
 background(200);
  strokeWeight(1);
  noFill();
 
 
  for(int rows=bufferSpace;rows< =270;rows+=20)
  {
    i+=i;
    for(int cols=bufferSpace;cols<=410;cols+=20)
    {
      r=(cols)*random(-0.00009,0.00009);
      pushMatrix();
      translate(0,r*cols);
 
 
      rotate(r*(cols/100));
      rect(rows,cols,20,20);
      popMatrix();
 
    }
  }
}

Chloe – Schotter

Screen Shot 2013-09-12 at 3.24.19 AM (2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int sqsize = 38;
int cols = 12, rows = 20;
 
void setup() {
  size(540,844);
  noLoop();
}
 
void draw()
{
  for (float i = 1.0 ; i &lt;= rows; i++)
  {
    for (float j = 1.0 ; j &lt;= cols; j++)
    {
      noFill();
      stroke(0);
      float angle = radians((i/rows)*random(-45, 45));
 
      pushMatrix();
        translate(j*sqsize, i*sqsize);
        rotate(angle);
        rect(0,0,sqsize,sqsize);
      popMatrix();
    }
  }
}

Miles Peyton – Schotter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
int border = 50;
float jitter = .03;
float side;
int numPerRow = 12;
int space;
 
void setup() {
  size(400, 800);  
  background(193);
  noFill();
  smooth();
  side = ((width-(border*2))/float(numPerRow));  
  noFill();
  randomSeed(2);
}
 
void draw() {
  translate(width/2,height/2);
  scale(.86,.9);
  for(int y = border; y &lt; height-border; y+=side) {
    for(int x = border; x &lt; width-border; x+=side) {
      pushMatrix();
        float center = random(side);
        translate(x-width/2 + center,y-height/2 + center);
        rotate(random(-jitter, jitter));
        rect(-center,-center,side,side);
      popMatrix();
    }
    jitter*=1.28;
  }
  saveFrame();
  noLoop();
}

Adam-Assignment-04-Schotter

;

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
 // George Nee's "Schotter" (1968) 
 // http://www.medienkunstnetz.de/works/schotter/
 // Adam Ben-Dror, 09/09/2013
 
void setup() {
  size (500, 750);
  smooth();
  noFill();
//  rectMode(CENTER);
  noLoop(); 
}
 
 
void draw() {
 
  background (180); 
 
  float schotterSquareSize = width/24.0;
  int   nAcross = 12; 
  int   nDown   = 22;
 
  float xStart = 6*schotterSquareSize; 
  float xEnd = xStart + (nAcross-1)* schotterSquareSize; 
 
  float yStart = width/18*3;
  float yEnd = yStart + (nDown-1)* schotterSquareSize; 
 
 
  for (int i=0; i<nacross ; i++) {
    for (int j=0; j<nDown; j++) {
 
      float x = map(i, 0, nAcross-1, xStart, xEnd); 
      float y = map(j, 0, nDown-1,   yStart, yEnd); 
 
      pushMatrix();                        
      translate (x,y);
 
      // float myAngle = radians(45);
      float myAngle = DEG_TO_RAD * j* random(-2.5, 2.5);
      rotate (myAngle); //rotate(j*random(-.001, .001) );
 
      rect(0,0, schotterSquareSize, schotterSquareSize);
      popMatrix();
      println(j);
    }
  }
 
}

Screen Shot 2013-09-11 at 11.59.52 PM

Kristina-Schotter

I’m afraid I am not yet confident enough to create a version which changes when the mouse clicks or any of the other special effects produced by some of the other members of our class. My embedded object is therefore stationary and boring, but rest assured: it does indeed draw a slightly different image each time.
I find Schotter to be a prticualrly beautiful piece. The aesthetics are particularly compelling, and all it really took was a working understanding of the pushMatrix(); and popMatrix(); functions to enable the code to work.

 
void setup()
{
size(300, 520);
noLoop();
//background(200);
}
 
void draw()
{
smooth();
for ( int i=0; i&lt;13;i++)
{
for (int j=0; j&lt;23; j++)
{
pushMatrix();
 
//translations
translate(20+20*i, 20+20*j);
 
//randomness
translate(random(-1, 1), random(-1, 1));
//rotations
float randAngle = (random((-PI)*j,(PI)*j));
rotate(radians(randAngle));
 
//Now, draw the squares!!
noFill();
rect(0, 0, 20, 20);
popMatrix();
}
}
}

Schotter – Swetha

Man, this assignment was frustrating until I took a deeper look into pushmatrix() and popmatrix() after that, it was just a matter if getting the rotations right…

Schotter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void setup() {
  size(400, 550);
  background(200);
  noFill();
  int numOfCol = 300/12;
  int numOfRows = 500/numOfCol;
 
  //Now use nested for loop to generate a graph
  for(int a = 1; a&lt;=numOfRows; a += 1){
    for(int b = 1; b&lt;numOfCol-10; b +=1){
      pushMatrix();
      //push and pop matrix will help reset the rotation of the sqaure
      translate(numOfCol*b, numOfCol*a);
      rotate(radians(random(-a*4, a*4)));
      rect(0,0,numOfCol, numOfCol);
      popMatrix();
  }
  }
 
}

JuliaTeitelbaum-Schotter

Julia-Schotter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/* This is a copy of George Nee's classic "Schotter" (1968) 
 * http://www.medienkunstnetz.de/works/schotter/
 *
 * by Julia Teitelbaum, 09/09/2013
 */
 
int numRows;
int numCols;
float squareSideLength;
float padding;
float rowsRandomnessFactor; 
 
void setup() {
  /* set/calculate width and height based on proprortions of 
   * Schotter's original piece */
  int drawingHeight = 600;
  float widthHeightRatio = 0.49;
  int drawingWidth = int(drawingHeight * widthHeightRatio); // ~285
 
  /* set randomness factor 
   * lower means more rows will be more random, 
   * higher means more rows will be more ordered
   */
  rowsRandomnessFactor = 70.0;
 
  /* calculate padding for squares  and length of their sides 
   * based on proportions of Schotter original */
  float paddingRatio = 0.14;
  padding = drawingWidth * paddingRatio; // ~40
  squareSideLength = padding/2; // ~20
 
  size((drawingWidth + int(padding)), drawingHeight); 
  noLoop(); // we aren't animating, so draw() only needs to run once
  noFill(); // none of the squares have fills, only outlines
}
 
void draw() {
  int schotterGrey = 225;
  background(schotterGrey);
  smooth(); // alias lines so the squares look nice
 
  numCols = 12;
  numRows = 2*numCols; // 24
 
  for (int currentCol = 0; currentCol < numCols; currentCol++) {
    for (int currentRow = 0; currentRow < numRows; currentRow++) {
       pushMatrix(); // save current canvas position
 
       // calculate positional change for canvas
       float leftOffset = padding + (currentCol * squareSideLength);
       float topOffset = padding + (currentRow * squareSideLength);
       translate(leftOffset, topOffset);
 
       // calculate rotational change for canvas
       // to shift the square's angle
       float lowerRandomBound = PI*currentRow/(-1*rowsRandomnessFactor);
       float upperRandomBound = PI*currentRow/rowsRandomnessFactor;
       float angleShift = random(lowerRandomBound, upperRandomBound);
       rotate(angleShift);
 
       // draw the square (as far as it knows, it's at the origin)
       rect(0, 0, squareSideLength, squareSideLength);
 
       // put the canvas back as it was
       popMatrix();
    }
  }
}
 
/* NOTE ON USAGE OF PUSHMATRIX() AND POPMATRIX()
 * We're using matrix translations to conceptually move the canvas. 
 * we're basically always drawing the box/keeping the imaginary
 * pen in the same location, but keeping a record of where we've 
 * moved the canvas so we can shift it differently for each square */

Jun-Schotter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//Number of rows and columns, and margin are adjustable
int nRows = 20;
int nCols = 12;
int margin = 30;
 
float sqSize;
 
void setup() {
  size(360, 600);
  noLoop();
  noFill();
  //Square sizes depend on set margin, 
  //and number of columns and rows
  sqSize = min((width-(2*margin))/nCols, 
  (height-(2*margin))/nRows);
}
 
void draw() {
  background(200);
  for (int row=0; row&lt;nRows; row++) {
    for (int col=0; col&lt;nCols; col++) {
      //Draw squares in each row left to right
      float left = col*sqSize+margin;
      float top = row*sqSize+margin;
 
      //Make each square's disorder depend on its row
      float shiftX = random(-row, row)/2;
      float shiftY = random(-row, row)/2;
      float shiftAngle = random(-PI/2, PI/2)*(1.0*row*row/nRows/nRows);
 
      pushMatrix();
      translate(left+shiftX, top+shiftY);
      rotate(shiftAngle);
      rect(0, 0, sqSize, sqSize);
      popMatrix();
    }
  }
}

Sample output:
schotter-run

Ralph – Schotter

Untitled

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
size (360,560);
 
noFill();
 
for (int row = 0; row &lt;22; row += 1) {
  for (int col = 0; col < 12; col += 1) {
    pushMatrix();
    translate(60+20*col,60+20*row);
    float jitter = random(-3.5*row,3.5*row);  //degree of jitter
    rotate(radians(jitter));
    rect(0,0,20,20);
    popMatrix();
  }
}