voronoi flower

by lefroyobunny

This week I explored the creative process of creating voronois through code and materiality. I created several patterns through using the Fortune’s Algorithm, which essentially sweeps a line across a place of points and draws parabolas between the points. A parabola is equidistant from one of the points, and the place that the parabolas intersect traces out the boundary of the voronoi diagram. Here are a few of the voronoi I made but didn’t cut (due to time constraints).  Nonetheless, they still look very interesting.

During the exploration course, I found a voronoi shape that I became very found of. It is a simple flower shape with one spiral which branches out from the center. The geometry is very simple yet many astonishing moments which I have chosen to capture through photography.

I found the ‘rails’ of this voronoi simple yet beautiful.

This is an image taken of the back of a cut sheet using the metal + heavy paper which did not cut through.

The way that light travels through this voronoi creates and interesting halo.

The centers of this particular cutting is very delicate and I dare not pull the small pieces out.

Lastly, here is the processing code to generate this pattern.

 void setup() {
size(800,800,P3D); //size of your intended pattern
noLoop(); // don't need to use the draw loop
/*unique name for your file. if left unchanged,
will simply save file with current milisecond*/
String fileName= "voronoi"+millis()+".pdf";

beginRaw(PDF, fileName); //enables you to save your design to a pdf

setupVoronoi(); // create your voronoi generator

// =========GENERATE SPIRAL=============== //

int centerLimit = 500; // variable to control the maximum diameter of the spiral
float theta = .2; //like the diameter of your circle, but increases with every point in your spiral, producing the spiral effect.

//this will draw one spiral
for(int k=0;k        theta +=.7; //change to alter the tightness of your spiral
drawPoint(width/2,height/2,theta,theta);

}

drawVoronoi(); //renders your voronoi
endRaw(); //ends the recording

}

void drawPoint(float orgX, float orgY, float theta, float diameter) { //function that generates and adds circular points

float xPos = sin(theta)*diameter+orgX;
float yPos = cos(theta)*diameter+orgY;

 voronoi.addPoint(new Vec2D(xPos, yPos));