Lire la suite…

De Computer Graphics and Art vol2 n°3 page 10

 // This sketch is part of the ReCode Project - http://recodeproject.com
 // From Computer Graphics and Art vol2 no3 pg 10
 // by William Kolomyjec
 // "Boxes"
 // 
 // Sermad Buni
 // 2012
 // Creative Commons license CC BY-SA 3.0

function setup() {
 
 var canvaswidth = 17;
 var canvasheight = 17;
 var square_size = 40;
 var randomness = 0.03;
 var iw, jh;
 smooth(8);
 createCanvas( (canvaswidth+2)*square_size, (canvasheight+2)*square_size);
 background(255);
 noFill();
 
 for(var i=0; i < canvaswidth; i++) {
 for(var j=0; j < canvasheight; j++) {
 push();
 translate((square_size*i), (square_size*j));
 if(canvasheight % 2 == 0) {
 iw = canvaswidth/2 - Math.abs(i - canvaswidth/2);
 } else {
 iw = canvaswidth/2 - 0.5 - Math.abs(i - canvaswidth/2 - 0.5);
 }
 
 if(canvasheight % 2 == 0) {
 jh = canvasheight/2 - 0.5 - Math.abs(j - canvasheight/2 + 0.5);
 } else {
 jh = canvasheight/2 - Math.abs(j - canvasheight/2);
 }
 if( jh != 0 || iw != 0) {
 rotate( radians(iw * iw * jh * jh * random(-randomness,randomness)) );
 }
 rect(square_size, square_size, square_size, square_size);
 pop();
 }
 } 
}

De Computer Graphics and Art vol2 n°3 page 28

019

// This sketch is part of the ReCode Project - http://recodeproject.com
// From Computer Graphics and Art vol2 no3 pg 28
// Segrid
// by John Roy
// 
// Quin Kennedy
// 2012
// Creative Commons license CC BY-SA 3.0

//Since there are 
//8 sets of images plus a center empty image plus a 1/2 width of black border
//this gives a canvas size of 8*2+1+.5*2 = 9*2 = 18 cells
//each cell is 20 pixels wide (see comment in drawTile(...))
var pixelSize = 1.5;
var linesPerQuadrant = 5;
//the tile size is the 
//(lines per quadrant + spaces per quadrant) * 2 quadrants per side * pixelSize
var tileSize = linesPerQuadrant*2*2;
var visualTileSize = tileSize*pixelSize;
//subtract 1 because the center is not doubled
//subtract another 1 because we only see half of the last tiles
var numTiles = linesPerQuadrant*4-1-1;
var windowSize = numTiles*tileSize;
var visualWinSize = numTiles*visualTileSize;

function setup(){
 createCanvas(ceil(visualWinSize), ceil(visualWinSize));
 noLoop();
}

function draw(){
 background(255);
 stroke(0);
 fill(0);
 strokeWeight(1);
 strokeCap(SQUARE);
 push();
 scale(pixelSize);
 //translate(-tileSize/2., -tileSize/2.);
 //pick a random grid cell to be the focal point
 //for now we will restrict it to have at most one row/column of empty squares
 var focusX = numTiles/2;
 var focusY = numTiles/2;
 //for each grid cell...
 for(var i = 0, gi = 0; i <= numTiles; i++, gi += tileSize){
 for(var j = 0, gj = 0; j <= numTiles; j++, gj += tileSize){
 push();
 translate(gi,gj);
 var num = min(max(abs(focusX-i), abs(focusY-j)), linesPerQuadrant*2);
 drawTile(num);
 pop();
 }
 }
 pop();
}

function drawTile(iteration){
 //there are two versions of the tile, the first where 5 lines (with 5 spaces)
 //grow in,
 //and the second where each consecutive space gets filled in.
 if (iteration == 0){
 return;
 }
 push();
 for(var i = 0; i < 4; i++){
 push();
 translate(-linesPerQuadrant*2, -linesPerQuadrant*2);
 drawQuadrant(iteration);
 pop();
 rotate(HALF_PI);
 }
 pop();
}

function drawQuadrant(iteration){
 if (iteration < linesPerQuadrant){
 push();
 for(var i = 0; i < linesPerQuadrant; i++){
 line(0, .5, iteration*linesPerQuadrant*2.0/(linesPerQuadrant-1.0), 0.5);
 translate(0, 2);
 }
 pop();
 } else {
 drawQuadrant(linesPerQuadrant - 1);
 var lines = iteration - linesPerQuadrant;
 push();
 translate(0, linesPerQuadrant*2-1);
 for(var i = 0; i <= lines; i++){
 line(0, .5, linesPerQuadrant*2, .5);
 translate(0, -2);
 }
 pop();
 }
}
var tiles = [7];
var windowSize = 780;
var tileSize = windowSize/15;

function setup(){
 createCanvas(windowSize,windowSize);
 createTiles();
 noLoop();

}

function draw(){
 background(255);
 imageMode(CENTER);
 for(var i = 0; i < width; i+=tileSize){
 for(var j = 0; j < height; j+=tileSize){
 var tile = floor(random(tiles.length));
 //boolean bw = (random(2) >= 1);
 var rotation = floor(random(4));
 push();
 translate(i,j);
 translate(tileSize/2, tileSize/2);
 rotate(PI*rotation/2);
 image(tiles[tile], 0, 0);
 pop();
 }
 }
}

function createTiles(){
 var i = 0;
 pg = createGraphics(tileSize, tileSize);
 pg.background(0);
 pg.noStroke();
 pg.fill(255);
 pg.ellipse(0, 0, tileSize*2, tileSize*2);
 tiles[i++] = pg;
 
 pg1 = createGraphics(tileSize, tileSize);
 pg1.background(255);
 pg1.noStroke();
 pg1.fill(0);
 pg1.ellipse(0, 0, tileSize*2, tileSize*2);
 tiles[i++] = pg1;
 
 pg2 = createGraphics(tileSize, tileSize);
 pg2.background(0);
 pg2.noStroke();
 pg2.fill(255);
 pg2.rect(0, 0, tileSize, tileSize/2);
 tiles[i++] = pg2;
 
 pg3 = createGraphics(tileSize, tileSize);
 pg3.background(255);
 pg3.noStroke();
 pg3.fill(0);
 pg3.rect(0, 0, tileSize, tileSize/2);
 tiles[i++] = pg3;
 
 pg4 = createGraphics(tileSize, tileSize);
 pg4.background(0);
 pg4.noStroke();
 pg4.fill(255);
 pg4.triangle(0, 0, tileSize, 0, 0, tileSize);
 tiles[i++] = pg4;
 
 pg5 = createGraphics(tileSize, tileSize);
 pg5.background(255);
 pg5.noStroke();
 pg5.fill(0);
 pg5.triangle(0, 0, tileSize, 0, 0, tileSize);
 tiles[i++] = pg5;
 
 //might happen less often than others...
 pg6 = createGraphics(tileSize, tileSize);
 pg6.background(0);
 tiles[i++] = pg6;
 //PGraphics pg2 = createGraphics(width/15, width/15, P2D);
}
Version Simplifiée

18b

var tiles = [2];
var windowSize = 400;
var tileSize = windowSize/5;

function setup(){
  createCanvas(windowSize,windowSize);
  createTiles();
  noLoop();
}

function draw(){
  background(255);
  imageMode(CENTER);
  for(var i = 0; i < width; i+=tileSize){
    for(var j = 0; j < height; j+=tileSize){ var tile = floor(random(tiles.length)); //boolean bw = (random(2) >= 1);
      var rotation = floor(random(4));
      push();
      translate(i,j);
      translate(tileSize/2, tileSize/2);
      rotate(PI*rotation/2);
      image(tiles[tile], 0, 0);
      pop();
    }
  }
}

function createTiles(){
  var i = 0;
  pg = createGraphics(tileSize, tileSize);
  pg.background(0);
  pg.noStroke();
  pg.fill(255);
  pg.ellipse(0, 0, tileSize*2, tileSize*2);
  tiles[i++] = pg;
  
  pg1 = createGraphics(tileSize, tileSize);
  pg1.background(255);
  pg1.noStroke();
  pg1.fill(0);
  pg1.ellipse(0, 0, tileSize*2, tileSize*2);
  tiles[i++] = pg1;
}

Inspiré par Computer Graphics and Art nov 1976 vol1 n°4 page 28

// This sketch is part of the ReCode Project - http://recodeproject.com
// From Computer Graphics and Art vol1 no4 pg 28
// Untitled 1 (Computer graphics at the University of Munich - West Germany)
// by Various (Reiner Schneeberger and unnamed students)
// 
// Nick Santaniello
// 2012
// Creative Commons license CC BY-SA 3.0

var cols = 10;
var rows = 10;
var offsetX;
var offsetY;
var sqSize= 78;
var sizeDifference = 12;

function setup() {
 createCanvas(780, 780);
 offsetX = random(-6, 6);
 offsetY = random(-6, 6);
 rectMode(CENTER);
 strokeWeight(2);
 fill(240);

 //for every row...
 for (var r = 0; r<rows; r++) {
 //for every column...
 for (var c = 0; c<cols; c++) {
 //choose a new offset
 offsetX = random(-7, 7);
 offsetY = random(-7, 7);
 rect(c*sqSize, r*sqSize, sqSize, sqSize);
 for (var i=1; i<6; i++) {
 rect((c*sqSize)+(i*offsetX), (r*sqSize)+(i*offsetY), sqSize - (i*sizeDifference), sqSize - (i*sizeDifference));
 }
 }
 }
}

function draw() {
}
function setup() {
 createCanvas(780,780); 
}

// Draws a single cross.
function drawCross(left, top, dim, thickness) {
 var offset_1 = dim/2 - thickness/2;
 var offset_2 = offset_1 + thickness;
 var offset_3 = dim;
 beginShape();
 vertex(left + offset_1, top);
 vertex(left + offset_2, top);
 vertex(left + offset_2, top + offset_1);
 vertex(left + offset_3, top + offset_1);
 vertex(left + offset_3, top + offset_2);
 vertex(left + offset_2, top + offset_2);
 vertex(left + offset_2, top + offset_3);
 vertex(left + offset_1, top + offset_3);
 vertex(left + offset_1, top + offset_2);
 vertex(left, top + offset_2);
 vertex(left, top + offset_1);
 vertex(left + offset_1, top + offset_1);
 vertex(left + offset_1, top);
 endShape(CLOSE);
}

// Draw a stack of crosses.
function drawCrossWithDecay(left, top, base_dim, num_decay, dpos, ddim, dthickness) {
 var thickness = base_dim/3;
 var dim = base_dim;
 var curleft = left;
 var curtop = top;
 for (var i = 0; i < num_decay; i++) {
 drawCross(curleft, curtop, dim, int(thickness));
 curleft += dpos.x + ddim/2;
 curtop += dpos.y + ddim/2;
 dim -= ddim;
 thickness -= dthickness;
 }
}

function drawCrossMatrix(dim, left, top, rows, cols) {
 var thickness = dim/3;
 var dp1 = createVector(0,-1);
 var dp2 = createVector(1,0);
 var dp;
 for (var i = 0; i < rows; i++) {
 var rleft = left + i * thickness;
 var rtop = top + i * 2 * thickness;
 for (var j = 0; j < cols; j++) {
 dp = i%2==0?dp1:dp2;
 dp.mult(-1);
 drawCrossWithDecay(rleft + thickness * 2 *j, rtop - thickness * j, dim, 5, dp, 4, 4.5);
 } 
 }
}

function draw() {
 background(255);
 
 drawCrossMatrix(80, 50, 150, 6, 6);
}

Inspiré par Computer Graphics and Art vol3 n°2 page 16, « Untitled photoprint », 15″ x 19″ par by Aaron Marcus

// This sketch is part of the ReCode Project - http://recodeproject.com
// From Computer Graphics and Art vol3 no2 pg 16
// by Aaron Marcus
// "Untitled photoprint", 15" x 19"
// Other works in the Hieroglyphs series are "Noise Barrier", and various "Untitled" works.
// 
// Genevieve Hoffman
// 2012
// Creative Commons license CC BY-SA 3.0

function setup() {
 createCanvas(780,780);
 background(0);
 
 var gridSize = width/10;
 
 for (var x = gridSize; x <= width; x += gridSize) {
 for (var y = gridSize; y <= height; y += gridSize) {
 
 //make grid
 stroke(255);
 smooth();
 line(x, 0, x, height);
 line(x-gridSize, y, width, y);
 
 //generate random seed values for location and size
 var randLoc = random(-gridSize/2,gridSize/2);
 var randLoc2 = random(-gridSize/2,gridSize/2);
 var randLoc3 = random(-gridSize/2,gridSize/2);
 var randLoc4 = random(-gridSize/2,gridSize/2);
 var randLoc5 = random(-gridSize/2,gridSize/2);
 var randLoc6 = random(-gridSize/2,gridSize/2);
 var randLoc7 = random(-gridSize/2,gridSize/2);
 var randLoc8 = random(-gridSize/2,gridSize/2);
 var circSize = random(0, gridSize-10);
 var sqSize = random(0, (gridSize-10)/2);
 
 //draw circles
 noFill();
 ellipse(x+randLoc, y+ randLoc2, circSize, circSize);
 
 //draw squares
 push();
 translate(x+randLoc3, y+randLoc4);
 rotate(random(TWO_PI));
 rect(0, 0, sqSize, sqSize);
 pop();
 
 //draw lines
 push();
 translate(x+randLoc5, y+randLoc6);
 rotate(random(TWO_PI));
 line(0,0,randLoc7, randLoc8);
 pop();
 }
 }
}

function draw() {
 
}

function keyPressed() {
 //saveFrame("Aaron_Marcus_Untitled2_###.jpg");
}

Inspiré par Computer Graphics and Art vol3 n°4, 4e de couverture, « Hex Variations » de William Kolomyjec

 

// This sketch is part of the ReCode Project - http://recodeproject.com
// From Computer Graphics and Art vol3 no4 Back Cover
// by William Kolomyjec
// "Hex Variations"
// 
// Steve Berrick
// 2012
// Creative Commons license CC BY-SA 3.0

var _width = 600;
var _height = 900;
var _size = 20; // hexagon radius

function setup() {
 
 createCanvas(_width, _height);
 noLoop();
 
 background(255);
 noFill();
 stroke(0);
 strokeWeight(2);

}

function draw() {

 // clear background
 background(255);
 
 // line length (hypotenuse)
 var h = sin(PI/3) * _size;
 
 for (var i = 0; i <= _width / (_size * 3); i++) {
 for (var j = 0; j <= (_height / h) + 1; j++) {

 // reference points (centre of each hexagon)
 var x = i * _size * 3 + (_size / 2);
 var y = j * h;
 // offset each odd row
 if (j % 2 > 0) {
 x += _size * 1.5;
 }

 push();
 
 translate(x, y);
 
 // random hexagon 'rotation' (0, 120, 240 degrees)
 rotate(int(random(0, 3)) * PI/3);
 
 // draw line
 line(0, -h, 0, h);
 
 // draw arcs
 arc(-_size, 0, _size, _size, -PI/3, PI/3);
 arc( _size, 0, _size, _size, PI/3 * 2, PI/3 * 4); 
 
 pop();

 } 
 }

}

function mousePressed() {
 
 redraw();

}

Inspiré par Computer Graphics and Art vol3 n°2 page 31, « Unimaginable Images » (from the « 196 Trapeziums Series ») de Vera Molnar

// This sketch is part of the ReCode Project - http://recodeproject.com
// From Computer Graphics and Art vol3 no2 pg 31
// Untitled (from the "196 Trapeziums Series")
// by Vera Molnar
// 
// 
// Quin Kennedy
// 2012
// Creative Commons license CC BY-SA 3.0

var numTiles = 14;
var gutterRelativeSize = 0;
var windowSize = 800;



function setup(){
 var tileSize = floor(windowSize/(numTiles*(1+gutterRelativeSize)+gutterRelativeSize));
 var gutterSize = floor(tileSize*gutterRelativeSize);
 var actualWinSize = (tileSize+gutterSize)*numTiles+gutterSize;
 createCanvas(actualWinSize, actualWinSize);
 noLoop();
}

function draw(){
 background(255);
 stroke(0);
 //strokeWeight(2);
 strokeJoin(ROUND);
 noFill();
 var tileSize = floor(windowSize/(numTiles*(1+gutterRelativeSize)+gutterRelativeSize));
var gutterSize = floor(tileSize*gutterRelativeSize);
 //for each grid cell...
 for(var i = 0, gi = gutterSize; i < numTiles; i++, gi += gutterSize+tileSize){
 for(var j = 0, gj = gutterSize; j < numTiles; j++, gj += gutterSize+tileSize){
 drawTrapezium(random(tileSize, width-tileSize-tileSize), random(tileSize/2., height-tileSize));
 }
 }
}

function drawTrapezium(xCenter, yCenter){
 var tileSize = floor(windowSize/(numTiles*(1+gutterRelativeSize)+gutterRelativeSize));
 var topScale = random(-2, 2);
 var bottomScale = random(-2, 2);
 var halfTile = tileSize/2.;
 quad(xCenter - tileSize/2 + random(-tileSize, tileSize), yCenter - halfTile,
 xCenter + tileSize/2 + random(-tileSize, tileSize), yCenter - halfTile,
 xCenter + tileSize/2 + random(-tileSize, tileSize), yCenter + halfTile,
 xCenter - tileSize/2 + random(-tileSize, tileSize), yCenter + halfTile);
}

Inspiré par Computer Graphics and Art vol3 n°2 page 31, « Unimaginable Images » (from the « 196 Trapeziums Series ») de Vera Molnar

// This sketch is part of the ReCode Project - http://recodeproject.com
// From Computer Graphics and Art vol3 no2 pg 31
// Unimaginable Images (from the "196 Trapeziums Series")
// by Vera Molnar
// 
// 
// Quin Kennedy
// 2012
// Creative Commons license CC BY-SA 3.0

var numTiles = 14;
var gutterRelativeSize = .5;
var windowSize = 780;
//we need space for each tile, 
//space for each gutter above each tile, 
//and space for the final gutter (below of the bottom row)


function setup(){
 var tileSize = floor(windowSize/(numTiles*(1+gutterRelativeSize)+gutterRelativeSize));
 var gutterSize = floor(tileSize*gutterRelativeSize);
 var actualWinSize = (tileSize+gutterSize)*numTiles+gutterSize;
 createCanvas(actualWinSize, actualWinSize);
 noLoop();
}

function draw(){
 background(255);
 stroke(0);
 var tileSize = floor(windowSize/(numTiles*(1+gutterRelativeSize)+gutterRelativeSize));
 var gutterSize = floor(tileSize*gutterRelativeSize);
 //strokeWeight(2);
 strokeJoin(ROUND);
 noFill();
 //for each grid cell...
 for(var i = 0, gi = gutterSize; i < numTiles; i++, gi += gutterSize+tileSize){
 for(var j = 0, gj = gutterSize; j < numTiles; j++, gj += gutterSize+tileSize){
 drawTrapezium(gi+tileSize/2, gj+tileSize/2);
 }
 }
}

function drawTrapezium(xCenter, yCenter){
 var tileSize = floor(windowSize/(numTiles*(1+gutterRelativeSize)+gutterRelativeSize));

 var topScale = random(-2, 2);
 var bottomScale = random(-2, 2);
 var halfTile = tileSize/2.;
 quad(xCenter - tileSize/2 + random(-tileSize, tileSize), yCenter - halfTile,
 xCenter + tileSize/2 + random(-tileSize, tileSize), yCenter - halfTile,
 xCenter + tileSize/2 + random(-tileSize, tileSize), yCenter + halfTile,
 xCenter - tileSize/2 + random(-tileSize, tileSize), yCenter + halfTile);
}

Inspiré par « Research and Teaching in Art and Science » by Vladimir Bonačić // Computer Graphics and Art Vol. 2, No. 3 pp. 4-8

// This sketch is part of the ReCode Project - http://recodeproject.com

////////////////////////////////////////////////////////////////////////
// //
// "Orbits of Galois Fields" by Vladimir Bonačić //
// //
// ( vareractive version ) //
// //
////////////////////////////////////////////////////////////////////////

// (c) Martin Schneider 2012

// Creative Commons license CC BY-SA 3.0

// These patterns are displayed using 32 x 32 dots.
// They visualize objects from abstract algebra, 
// which are known as orbits of galois fields.

// Source:
// "Research and Teaching in Art and Science" by Vladimir Bonačić
// Computer Graphics and Art Vol. 2, No. 3 pp. 4-8

// See also:
// "Kinetic Art: Application of Abstract Algebra to Objects with Computer-
// Controlled Flashing Lights and Sound Combinations" by Vladimir Bonačić
// Leonardo, Vol. 7, No. 3
// Note: This paper is quite mathematical at times.
// The implementation however is actually really simple.


///////////////////////// varERACTIVE VERSION /////////////////////////

// - Use space to flip through the presets
// - Use the mouse to explore the orbits


////////////////////////////////////////////////////////////////////////

var n = 5; // bits per dimension
var d = 1<<n; // cells per dimension
var led = 20; // size of the dot
var w = led * d + 1; // screen size

var preset = [1087, 1157];
var pick = 0;
var p = preset[pick];

var debug = true;
var i0;
var bg=10;


function setup() {
 createCanvas(w, w);
 ellipseMode(CORNER); 
 noStroke();
}


function draw() {
 
 // adding some afterglow
 fill(bg, 30); 
 rect(0, 0, w, w); 
 fill(255 - bg);

 // use mouse coordinates to get initial cell
 var x = mouseX/led & (d-1);
 var y = mouseY/led & (d-1);
 var i = y * d + x;

 // create empty field
 //boolean[] field = new boolean[d*d];
 
 var field = [d*d];

 // find all cells in the orbit
 i0 = d*d;
 while (!field[i]) {
 i0 = min(i, i0);
 field[i] = true;
 i *= 2; 
 if (i >= d*d ) i ^= p;
 } 

 // draw display
 for (i = 0; i < d*d; i++) {
 if (field[i]) {
 ellipse(led * (i % d), led * floor(i / d), led, led);
 }
 }
}


function keyPressed() {
 switch(key) {
 // switch between presets
 case ' ': pick = (pick + 1) % preset.length; p = preset[pick]; break;
 // next pattern
 case '+': p = (p + 1) | d; break; 
 // previous pattern
 case '-': p = (p - 1) | d; break;
 // toggle debugging
 case 'd': debug = !debug; break;
 // switch background color
 case 'b': bg = 255 - bg; break;
 default: return;
 }
}


 

 

De Computer Graphics and Art vol3 n°2 page 20, par Reiner Schneeberger and students

// This sketch is part of the ReCode Project - http://recodeproject.com
// From Computer Graphics and Art vol3 no2 pg 22
// by Reiner Schneeberger
// 
// Untitled #5 is part of a 10 piece series, intended to test viewers
// perception of art and composition. The section is titled "Experimental
// Esthetics with Computer Graphics -- Analyses of Viewers Impressions 
// of Computer Graphics."
// 
// Jonathan Bobrow
// 2012
// Creative Commons license CC BY-SA 3.0
//
// note: .f enforces float division, dividing by an int would automatically round down
// i.e. 1/2 = 0 , 1/2.f = .5

var gridSize = 40;
var density = 10;

function setup(){
 createCanvas(780, 780);
 background(255);
 
 stroke(0);
 strokeWeight(1);
 var padding = gridSize/density; // even spacing for lines
 
 var rows = height/gridSize;
 var cols = width/gridSize;
 
 for(var i = 0; i < rows; i++){ // iterate over the # of rows (top to bottom)
 for(var j = 0; j < cols; j++){ // iterate over the # of columns (left to right)
 
 push();
 translate(j*gridSize, i*gridSize); // move to grid location
 translate(gridSize/2, gridSize/2); // move to rotate around center
 if(random(1) < .5) 
 rotate(PI/2); // rotate vertical or horizontal
 else 
 rotate(PI);
 
 for(var k = 0; k < density; k++){ // draw # of lines based on density with even spacing
 var _x = (k - density/2) * padding; 
 line(_x, -gridSize/2, _x, gridSize/2);
 }
 pop();
 }
 }
}

De Computer Graphics and Art vol1 no4 page 29 // par Reiner Schneeberger and students

// This sketch is part of the ReCode Project - http://recodeproject.com
// From Computer Graphics and Art vol1 no4 pg 29
// by Reiner Schneeberger and students
// Computer graphics made at the University of Munich (West Germany)
// 
// Genevieve Hoffman
// 2012
// Creative Commons license CC BY-SA 3.0


var cols = 10;
var rows = 80;
var counter = 0;

function setup() {
 createCanvas(540, 800);
 background(255);
 stroke(0);

 var horiz = width/cols;
 var vert = horiz/2;

 for (var i = 0; i < rows; i++) {
 for (var j = 0; j < cols; j++) {
 var rand = random(0, 2); 
 if (rand > 1) {
 //draw vertical lines
 for (var k = 0; k < horiz; k+=horiz/8) {
 line(j*horiz+k, i*vert, j*horiz+k, i*vert+vert);
 }
 } 
 else {
 //draw horizontal lines
 for(var k = 0; k < vert; k+=vert/8) {
 line(j*horiz, i*vert+k, j*horiz+horiz, i*vert + k);
 }
 }
 }
 }
}

function draw() {
}

function keyPressed() {
 //saveFrame("Reiner_Schneeberger_Untitled2_####.jpg");
}
 function setup() {
 createCanvas( 400, 400);
 background( 255 );
 stroke( 0 );
 strokeWeight( 2 );
 noFill();
 smooth();
 drawRects();
 }

 function draw() {
 }

 function drawRects() {
 background(255);
 for( var i = 0; i < 400; i++ ) {
 roundedRect( random(-10,width), random(-10,height), random( 5, 40), random(5,40), 5, 5 );
 }
 }

 function mousePressed() {
 drawRects();
 }

 function roundedRect(x, y, w, h, rx, ry) { 
 beginShape();
 vertex(x, y+ry); //top of left side
 bezierVertex(x, y, x, y, x+rx, y); //top left corner
 vertex(x+w-rx, y); //right of top side
 bezierVertex(x+w, y, x+w, y, x+w, y+ry); //top right corner
 vertex(x+w, y+h-ry); //bottom of right side
 bezierVertex(x+w, y+h, x+w, y+h, x+w-rx, y+h); //bottom right corner
 vertex(x+rx, y+h); //left of bottom side
 bezierVertex(x, y+h, x, y+h, x, y+h-ry); //bottom left corner
 endShape(CLOSE);
 }

 

function setup() {
 createCanvas( 780, 780);
 fill( 0 );
 noStroke();

 pg = createGraphics(780, 780);
 
 drawSquares();
}

function draw() {
}

function drawSquares() {
 background(240 );
 
 pg.background( 240 );
 for( var r = 2; r < 22; r++ ) {
 for( var c = 0; c < 32; c++ ) {
 var rand = int(round(random(0,1)));
 pg.noStroke();
 if( rand == 1 ) {
 pg.fill( 10 );
 } else {
 pg.noFill();
 }
 pg.rect( r*32, c*32, 32, 32 );
 }
 }

 rotate(-0.01);
 translate( -8, 0, 0 );
 image(pg, 0, 0);
}

function mousePressed() {
 drawSquares();
}
var radius = 150;

function setup() {
 createCanvas( 600, 600 );
 background( 255 );
 stroke( 0 );
 noFill();
 strokeWeight( 2 );
 drawCircles();
}

function draw() {}

function drawCircles() {
 background( 255 );
 for(var r = 0; r < 2; r++ ) {
 for(var c = 0; c < 2; c++ ) {
 push();
 translate( 150+(300*r), 150+(300*c));
 for(var i = 0; i < random(100,300); i++ ) {
 var a = random(0, TWO_PI);
 var x1 = radius*cos(a);
 var y1 = radius*sin(a);
 a = random(0, TWO_PI);
 var x2 = radius*cos(a);
 var y2 = radius*sin(a);
 stroke(20); 
 line( x1, y1, x2, y2);
 }
 pop();
 }
 }
}

function mousePressed() {
 drawCircles();
}

 

Basé sur la « Diamond Theory » de Steven H Cullinane

/* 
Part of the ReCode Project (http://recodeproject.com)
Based on "Diamond Theory" by Steven H Cullinane
Originally published in "Computer Graphics and Art" v2n1, 1977
Copyright (c) 2013 Radames Ajna - OSI/MIT license (http://recodeproject/license).
*/

/* @pjs pauseOnBlur="true"; */

var bits = [
 0, 1, 0, 1, 
 2, 3, 2, 3, 
 0, 1, 0, 1, 
 2, 3, 2, 3
];

var lsize = 10;

function setup() {
 createCanvas(int(lsize*4+100)*5, int(lsize*4+100)*5);
 background(255);
 smooth();
 redraw();
 noStroke();
}

function draw() { 
 background(255);
 for (var i=0; i<10; i++) {
 for (var j=0; j<10; j++) {
 randss();
 push();
 translate(i*(width/lsize)+lsize*3, j*(height/lsize)+lsize*3);
 drawTriangle(bits);
 pop();
 }
 }
 randss();
 if (frameCount>50) {
 noLoop();
 }
}

function drawTriangle(bits) {
 push();
 translate(-lsize*4/2, -lsize*4/2);
 for (var x=0;x<4;x++) {
 for (var y=0;y<4;y++) {
 var i = x + y*4;
 // pushStyle();
 fill(0);
 push();
 translate(x*lsize, y*lsize);
 beginShape(TRIANGLES);
 switch(bits[i]) {
 case 0:
 // bottom right
 //triangle(lsize, lsize, 0, lsize, lsize, 0);
 vertex(lsize, lsize);
 vertex(0, lsize);
 vertex(lsize, 0);
 break;
 case 1:
 ///bottom left
 //triangle(0, 0, 0, lsize, lsize, lsize);
 vertex(0, 0);
 vertex(0, lsize);
 vertex(lsize, lsize);
 break;
 case 2:
 //top right
 //triangle(0, 0, lsize, 0, lsize, lsize);
 vertex(0, 0);
 vertex(lsize, 0);
 vertex(lsize, lsize);
 break;
 case 3:
 //top left
 //triangle(0, 0, lsize, 0, 0, lsize);
 vertex(0, 0);
 vertex(lsize, 0);
 vertex(0, lsize);
 break;
 }
 endShape(CLOSE);
 //popStyle();
 pop();
 }
 }
 pop();
}
/*leva l1 para l2 */
function transposeRow(bits, r0, r1) {
 var temp = [4];
 //temp[i] = new int[4];
 for (var x=0;x<4;x++) {
 //keep the values from row r0 on temp
 var i = x + r0*4;
 temp[x] = bits[i];
 // put on row r0 values from row r1
 var i2 = x + r1*4;
 bits[i] = bits[i2];
 //put on row r1 values from r0 i.e. from temp
 bits[i2] = temp[x];
 }
}

function transposeColumn(bits, c0, c1) {
 var temp = [4];
 for (var y=0;y<4;y++) {
 //keep the values from column c1 on temp
 var i = c0 + y*4;
 temp[y] = bits[i];
 //put on column c0 values from column c1
 var i2 = c1 + y*4;
 bits[i] = bits[i2];
 //put on column c1 values from column c0 i.e. temp
 bits[i2] = temp[y];
 }
}

function transposeQuadrant(bits, q0, q1) {
 var temp = [4];
 //given a q0 - quadrant 0,1,2,3 
 // |0|1|
 // |2|3|
 //returns x,y initial coordinates 
 // |00|10|20|30|
 // |01|11|21|31|
 // |02|12|22|32|
 // |03|13|23|33| 
 var x0q0 = (q0%2)*2;
 var y0q0;
 if (q0>1) {
 y0q0 =2;
 } else {
 y0q0 =0;
 }
 var x0q1 = (q1%2)*2;
 var y0q1;
 if (q1>1) {
 y0q1 =2;
 } else {
 y0q1 =0;
 }
 var c=0; 
 for (var i=0;i<2;i++) {
 for (var j=0;j<2;j++) {
 temp[c] = bits[x0q0+i + (y0q0+j)*4];
 bits[x0q0+i + (y0q0+j)*4] = bits[x0q1+i + (y0q1+j)*4];
 bits[x0q1+i + (y0q1+j)*4] = temp[c];
 c++;
 }
 }
}

function randss() {
 transposeRow(bits, int(random(0, 4)), int(random(0, 4)));
 transposeColumn(bits, int(random(0, 4)), int(random(0, 4)));
 transposeQuadrant(bits, int(random(0, 4)), int(random(0, 4)));
}

function mousePressed() {
 randss();
 redraw();
}

Inspiré par « Structure Square Series Inwards » de Roger Coqart

/* 
Part of the ReCode Project (http://recodeproject.com)
Based on "Structure Square Series Inwards" by Roger Coqart
Originally published in "Computer Graphics and Art" v1n3, 1976
Copyright (c) 2013 Fabien bonnamy - OSI/MIT license (http://recodeproject/license).
*/

/* @pjs pauseOnBlur="true"; */

var x1,x2,y1,y2,aleatoire,ecart,marge,taille; 
var h = 36; // Mettre un multiple de 3
var check = [0,1,2,3,4,5,6,7];
var lines = [ [0,0,h,h], [h,0,0,h], [h/2,0,h/2,h], [0,h/2,h,h/2], [0,h/2,h/2,0], [0,h/2,h/2,h], [h/2,0,h,h/2], [h,h/2,h/2,h] ]; 

function setup(){
 noLoop(); // j'utilise le noLoop car je ne souhaite pas la fonction draw() soit executée plus d'une fois 
 smooth(); // pour que mes traits soient plus net
 aleatoire = 0; //
 marge = h/3; // l'espace entre les carrés
 ecart = h+marge; // la place dans laquelle evelue un carré
 taille = ((h+marge)*13); // la taille de mon carré
 createCanvas(taille +marge , taille + marge); // notez que rajoute marge encore une fois afin dessiner la border droit et bas
}

function draw(){
 background(255);
 translate(marge,marge);// je deplace le point initial de mon ecran pour creer une marge en haut et à gauche
 stroke(0);
 strokeWeight(2); // traits sont noir

 // j'utilise une double bouble for pour placé chaque carrés sur l'ecran. 
 // Ici je place 15 carrés en long (i) et 15 en large (j)
 for (var i = 0; i <15; i++){
 for (var j = 0; j < 15; j++){
 //Je deplace le point 0,0 de mon ecran à chaque tour de boucle. cela me permet de toujour utilser 0,0 comme point de reference.
 // pour ce faire je vais un translate encapsuluer avec mon code dans un pushMatrix, popMatrix
 push();
 translate(i*ecart, j*ecart);
 fill(255,255,255);

 //maintenant en fonction de l'emplacement de mon carré je dessine plus ou moins de trais à l'interieur

 // carré est au centre
 if(j == 6 && i == 6){
 rect(0, 0, h, h);
 }
 // carrés sont 1 carré du centre
 else if(j>=5 && j<8 && i>=5 && i<8){
 rect(0, 0, h, h); 
 strokeWeight(2);
 generateLines(2);
 }
 // carrés sont 2 carrés du centre
 else if(j>=4 && j<9 && i>=4 && i<9){
 rect(0, 0, h, h); 
 strokeWeight(2);
 generateLines(3);
 }
 // carrés sont 3 carrés du centre
 else if(j>=3 && j<10 && i>=3 && i<10){
 rect(0, 0, h, h); 
 strokeWeight(2);
 generateLines(4);
 }
 // carrés sont 4 carré du centre
 else if(j>=2 && j<11 && i>=2 && i<11){
 rect(0, 0, h, h); 
 strokeWeight(2);
 generateLines(5);
 }
 // carrés sont 5 carré du centre
 else if(j>=1 && j<12 && i>=1 && i<12){
 rect(0, 0, h, h); 
 strokeWeight(2);
 generateLines(6);
 }
 // carrés sont 6 carré du centre
 else if(j>=0 && j<13 && i>=0 && i<13){
 rect(0, 0, h, h); 
 strokeWeight(2);
 generateLines(7);
 }
 pop();
 } 
 }
 //decommenter pour enregistrer l'image produite
 //saveFrame("squareColor"+h+".jpg");
}

// fonction qui recoit un nombre de lignes en arguments
// Cette dessine les trais et fait aussi attention ne pas en dessiner les uns sur les autres
function generateLines(numberOfLines) {
 // nous avons un tableau initial allant de 0 à 7
 // on echange quelques valeurs 
 for (var i = 0; i<numberOfLines-1; i++){
 var rand1 = int(random(8));
 var rand2 = int(random(8));
 var temp;

 temp = check[rand1];
 check[rand1] = check[rand2];
 check[rand2] = temp;
 }

 // puis on lit un nombre d'entrées egale à l'argument passé
 for (var i = 0; i< numberOfLines; i++){
 aleatoire = check[i];
 line(lines[aleatoire][0], lines[aleatoire][1], lines[aleatoire][2], lines[aleatoire][3]); 
 }
}

Hommage to Zdeňek Sýkora

/*
 * Untitled, Hommage to Zdeňek Sýkora (1920 - 2011)
 * 
 * Kof / Kryštof Pešek 2012
 *
 */
 
var theta = [];
var moznosti = [0,90,180,270];
var rot = [1,2,4];
var r;

function preload(){
 plny = loadImage("plny.png");
}
 
function setup(){
 createCanvas(576,704,P2D);
 imageMode(CENTER);
 for (var i = 0 ; i < 3000 ; i ++){
 theta[i] = moznosti[int(random(4))];
 }
}
 
function draw(){
 background(0);
 r = plny.width;
 
 var idx = 0;
 for(var y = 0;y <= height/plny.height;y++){
 for(var x = 0;x <= width/plny.width;x++){
 push();
 translate(x*r+plny.width/2,y*r+plny.height/2);
 rotate(radians(theta[idx]));
 theta[idx] += 0.004*degrees(frameCount/200.0*atan2(mouseY-y*r,mouseX-x*r));
 image (plny,0,0);
 pop();
 idx += 1;
 }
 }
}

Inspiré par « From the Square Series » de Roger Coqart

/* 
Part of the ReCode Project (http://recodeproject.com)
Based on "From the Square Series" by Roger Coqart
Originally published in "Computer Graphics and Art" v3n2, 1978
Copyright (c) 2015 Haydn Edgvaron-King - OSI/MIT license (http://recodeproject/license).
*/

/* @pjs pauseOnBlur="true"; */

var lin = 0;
var col = 0;
var taille = 12;
var lin2 = 0;
var col2 = 0;
var taille2 = 36;
 
function setup() {
createCanvas(780, 780);
background(0);
stroke(255);
strokeWeight(3.2);
strokeCap(ROUND);
}
 
function draw() {
 var sorte = round(random(0,5));
 //println(#5ea19a + sorte);
 if (sorte == 0) {
 line(lin * taille, col * taille, taille + (lin * taille), taille + (col * taille));
 }
 if (sorte == 1) {
 line(lin * taille + taille, col * taille, lin * taille, col * taille + taille);
 }
 if (sorte == 2) {
 line(lin * taille, col * taille, taille + (lin * taille), taille + (col * taille));
 }
 if (sorte == 3) {
 line(lin * taille + taille, col * taille, lin * taille, col * taille + taille);
 }
 if (sorte == 4) {
 }
lin++;
if (lin * 12 > width) {
col++;
lin = 0;
}
if (col * 12 > height) {
 noLoop();
}
 var sorte2 = round(random(0,5));
// println(#5ea19a + sorte2);
 strokeCap(ROUND);
 if (sorte2 == 0) {
 line(lin2 * taille2, col2 * taille2, lin2 * taille2 + taille2, col2 * taille2);
 }
 if (sorte2 == 1) {
 line(lin2 * taille2, col2 * taille2, lin2 * taille2, col2 * taille2 + taille2);
 }
 if (sorte2 == 2) {
 line(lin2 * taille2, col2 * taille2, lin2 * taille2 + taille2, col2 * taille2);
 }
 if (sorte2 == 3) {
 line(lin2 * taille2, col2 * taille2, lin2 * taille2, col2 * taille2 + taille2);
 }
 if (sorte2 == 4) {
 }
lin2++;
if (lin2 * 36 > width) {
col2++;
lin2 = 0;
}
if (col2 * 36 > height) {
}
}

Inspiré par « From the Square Series » de Roger Coqart

/* 
Part of the ReCode Project (http://recodeproject.com)
Based on "From the Square Series" by Roger Coqart
Originally published in "Computer Graphics and Art" v3n2, 1978
Copyright (c) 2015 Haydn Edginton-King - OSI/MIT license (http://recodeproject/license).
*/
/* @pjs pauseOnBlur="true"; */
var lin = 0;
var col = 0;
var sizer = 6;
var lin2 = 0;
var col2 = 0;
var sizer2 = 24;
var lin3 = 0;
var col3 = 0;
var sizer3 = 12;
var lin4 = 0;
var col4 = 0;
var sizer4 = 48;
 
function setup() {
createCanvas(400, 400);
background(0);
stroke(255);
strokeWeight(1);
strokeCap(ROUND);
}
 
function draw() {
 var sorte = round(random(0,5));
  if (sorte == 0) {
 line(lin * sizer, col * sizer, sizer + (lin * sizer), sizer + (col * sizer));
 }
 if (sorte == 1) {
 line(lin * sizer + sizer, col * sizer, lin * sizer, col * sizer + sizer);
 }
 if (sorte == 2) {
 }
 if (sorte == 3) {
 }
 if (sorte == 4) {
 }
 lin++;
 if (lin * sizer > width) {
col++;
lin = 0;
}
 if (col * sizer > height) {
 noLoop();
}
 var sorte2 = round(random(0,5));
  if (sorte2 == 0) {
 line(lin2 * sizer2, col2 * sizer2, sizer2 + (lin2 * sizer2), sizer2 + (col2 * sizer2));
 }
 if (sorte2 == 1) {
 line(lin2 * sizer2 + sizer2, col2 * sizer2, lin2 * sizer2, col2 * sizer2 + sizer2);
 }
 if (sorte2 == 2) {
 }
 if (sorte2 == 3) {
 }
 if (sorte2 == 4) {
 }
 lin2++;
 if (lin2 * sizer2 > width) {
col2++;
lin2 = 0;
}
 if (col2 * sizer2 > height) {
}
var sorte3 = round(random(0,5));
  if (sorte3 == 0) {
 line(lin3 * sizer3, col3 * sizer3, sizer3 + (lin3 * sizer3), sizer3 + (col3 * sizer3));
 }
 if (sorte3 == 1) {
 line(lin3 * sizer3 + sizer3, col3 * sizer3, lin3 * sizer3, col3 * sizer3 + sizer3);
 }
 if (sorte3 == 2) {
 line(lin3 * sizer3, col3 * sizer3, sizer3 + (lin3 * sizer3), sizer3 + (col3 * sizer3));
 }
 if (sorte3 == 3) {
 line(lin3 * sizer3 + sizer3, col3 * sizer3, lin3 * sizer3, col3 * sizer3 + sizer3);
 }
 if (sorte3 == 4) {
 }
 lin3++;
 if (lin3 * sizer3 > width) {
col3++;
lin3 = 0;
}
 if (col3 * sizer3 > height) {
}
var sorte4 = round(random(0,5));
  if (sorte4 == 0) {
 line(lin4 * sizer4 + sizer4, col4 * sizer4, lin4 * sizer4, col4 * sizer4 + sizer4);
 }
 if (sorte4 == 1) {
 line(lin4 * sizer4 + sizer4, col4 * sizer4, lin4 * sizer4, col4 * sizer4 + sizer4);
 }
 if (sorte4 == 2) {
 }
 if (sorte4 == 3) {
 }
 if (sorte4 == 4) {
 } 
lin4++;
 if (lin4 * sizer4 > width) {
col4++;
lin4 = 0;
}
 if (col4 * sizer4 > height) {
}
}

‘S’ pour sauvegarder / 1, 2, 3, 4, 5, 6, 7, 8, 9 pour modifier la trame + déplacement de la souris

 

var img;
var drawMode = 1;
function preload() {
 img = loadImage("perec.jpg");
}
function setup() {
 createCanvas(img.width*7, img.height*7);
}
function draw() {
 background(255);
 var mouseXFactor = map(mouseX, 0, width, 0.05, 1);
 var mouseYFactor = map(mouseY, 0, height, 0.05, 1);
 for (var gridX = 0; gridX < img.width; gridX++) {
 for (var gridY = 0; gridY < img.height; gridY++) {
 var tileWidth = width / img.width;
 var tileHeight = height / img.height;
 var posX = tileWidth*gridX;
 var posY = tileHeight*gridY;
 var c = img.get(gridX, gridY);
 var greyscale = round(red(c)*0.222+green(c)*0.707+blue(c)*0.071);
 switch(drawMode) {
 case 1:
 var w1 = map(greyscale, 0,255, 15,0.1);
 stroke(0);
 strokeWeight(w1 * mouseXFactor);
 line(posX, posY, posX+5, posY+5); 
 break;
 case 2:
 fill(0);
 noStroke();
 var r2 = 1.1284 * sqrt(tileWidth*tileWidth*(1-greyscale/255.0));
 r2 = r2 * mouseXFactor * 3;
 ellipse(posX, posY, r2, r2);
 break;
 case 3:
 var l3 = map(greyscale, 0,255, 30,0.1);
 l3 = l3 * mouseXFactor; 
 stroke(0);
 strokeWeight(10 * mouseYFactor);
 line(posX, posY, posX+l3, posY+l3);
 break;
 case 4:
 stroke(0);
 var w4 = map(greyscale, 0,255, 10,0);
 strokeWeight(w4 * mouseXFactor + 0.1);
 var l4 = map(greyscale, 0,255, 35,0);
 l4 = l4 * mouseYFactor;
 push();
 translate(posX, posY);
 rotate(greyscale/255.0 * PI);
 line(0, 0, 0+l4, 0+l4);
 pop();
 break;
 case 5:
 var w5 = map(greyscale,0,255,5,0.2);
 strokeWeight(w5 * mouseYFactor + 0.1);
 var c2 = img.get(min(gridX+1,img.width-1), gridY);
 stroke(c2);
 var greyscale2 = int(red(c2)*0.222 + green(c2)*0.707 + blue(c2)*0.071);
 var h5 = 50 * mouseXFactor;
 var d1 = map(greyscale, 0,255, h5,0);
 var d2 = map(greyscale2, 0,255, h5,0);
 line(posX-d1, posY+d1, posX+tileWidth-d2, posY+d2);
 break;
 case 6:
 var w6 = map(greyscale, 0,255, 25,0);
 noStroke();
 fill(c);
 ellipse(posX, posY, w6 * mouseXFactor, w6 * mouseXFactor); 
 break;
 case 7:
 stroke(c);
 var w7 = map(greyscale, 0,255, 5,0.1);
 strokeWeight(w7);
 fill(255,255* mouseXFactor);
 push();
 translate(posX, posY);
 rotate(greyscale/255.0 * PI* mouseYFactor);
 rect(0,0,15,15);
 pop();
 break;
 case 8:
 noStroke();
 fill(greyscale,greyscale * mouseXFactor,255* mouseYFactor);
 rect(posX,posY,3.5,3.5);
 rect(posX+4,posY,3.5,3.5);
 rect(posX,posY+4,3.5,3.5);
 rect(posX+4,posY+4,3.5,3.5);
 break;
 case 9:
 stroke(255,greyscale,0);
 noFill();
 push();
 translate(posX, posY);
 rotate(greyscale/255.0 * PI);
 strokeWeight(1);
 rect(0,0,15* mouseXFactor,15* mouseYFactor);
 var w9 = map(greyscale, 0,255, 15,0.1);
 strokeWeight(w9);
 stroke(0,70);
 ellipse(0,0,10,5);
 pop();
 break;
 }
 }
 }
}

function keyPressed(){
 if (key == 's' || key == 'S') save(timestamp()+".png");
}

function keyTyped() {
 if (key == '1') drawMode = 1;
 if (key == '2') drawMode = 2;
 if (key == '3') drawMode = 3;
 if (key == '4') drawMode = 4;
 if (key == '5') drawMode = 5;
 if (key == '6') drawMode = 6;
 if (key == '7') drawMode = 7;
 if (key == '8') drawMode = 8;
 if (key == '9') drawMode = 9;
}

function timestamp() {
 var now = new Date();
 return now.toISOString();
}