Primat from Armando Rodriguez on Vimeo.
By ArmyRdz
More: armyrdz.com
//download library http://leebyron.com/mesh/
import megamu.mesh.*;
int sizePoints = 2636;
float[][] points = new float[sizePoints][2];
float[] pointsNoise = new float[sizePoints * 2];
float angulo = 0;
float defase = 0;
void setup() {
size(1920, 1280);
background(255);
colorMode(HSB, 255, 255, 255);
strokeWeight(0.1);
for (int i = 0; i < sizePoints * 2; i++) {
pointsNoise[i] = random(-35, 35);
}
}
void draw() {
background(255);
voro();
}
void voro() {
int n = 0;
angulo = 0;
for (int i = 0; i < sizePoints; i++) {
for (int j =0; j<2; j++) {
if (j == 1) {
points[i][j] = (sin(radians(angulo * 2))* 400) + pointsNoise[n] + height/2;
n++;
} else {
points[i][j] = (cos(sin(radians(angulo * 3)+defase)) * 500) + pointsNoise[n] + width/3;
n++;
}
}
angulo+=1;
}
Voronoi myVoronoi = new Voronoi( points );
MPolygon[] myRegions = myVoronoi.getRegions();
for (int i=0; i<myRegions.length; i++)
{
// an array of points
float[][] regionCoordinates = myRegions[i].getCoords();
// fill(random(255), 200, 200);
noFill();
if (i % 3 == 0) {
fill(0, 180);
}
myRegions[i].draw(this); // draw this shape
}
float[][] myEdges = myVoronoi.getEdges();
for (int i=0; i<myEdges.length; i++)
{
float startX = myEdges[i][0];
float startY = myEdges[i][1];
float endX = myEdges[i][2];
float endY = myEdges[i][3];
line( startX, startY, endX, endY );
}
defase += 0.01;
saveFrame(«shader-######.png»);
}