Based on: Hex Variation by William Kolmyjec, 1978
Category: direct
Description:
This sketch is running in the browser. Move the mouse inside the canvas to redraw.
/* Part of the ReCode Project (http://recodeproject.com) Based on "Hex Variation" by William Kolmyjec Originally published in "Computer Graphics and Art" vol3 no4, 1978 Copyright (c) 2012 Steve Berrick - OSI/MIT license (http://recodeproject/license). */ int _width = 600; int _height = 900; int _size = 20; // hexagon radius void setup() { size(_width, _height); noLoop(); background(255); noFill(); stroke(0); strokeWeight(2); } void draw() { // clear background background(255); // line length (hypotenuse) float h = sin(THIRD_PI) * _size; for (int i = 0; i <= _width / (_size * 3); i++) { for (int j = 0; j <= (_height / h) + 1; j++) { // reference points (centre of each hexagon) float x = i * _size * 3 + (_size / 2); float y = j * h; // offset each odd row if (j % 2 > 0) { x += _size * 1.5; } pushMatrix(); translate(x, y); // random hexagon rotation (0, 120, 240 degrees) rotate(int(random(0, 3)) * THIRD_PI); // draw line line(0, -h, 0, h); // draw arcs arc(-_size, 0, _size, _size, -THIRD_PI, THIRD_PI); arc( _size, 0, _size, _size, THIRD_PI * 2, THIRD_PI * 4); popMatrix(); } } } void mousePressed() { redraw(); }