hexes
parent
8b4ac3c159
commit
a9b6e71c91
@ -0,0 +1,3 @@
|
|||||||
|
# hexes
|
||||||
|
|
||||||
|
![output](export.gif)
|
Binary file not shown.
After Width: | Height: | Size: 695 KiB |
@ -0,0 +1,75 @@
|
|||||||
|
import gifAnimation.*;
|
||||||
|
GifMaker gifExport;
|
||||||
|
|
||||||
|
int loopFrames = 60;
|
||||||
|
PVector maskOrigin;
|
||||||
|
Float maskWidth = 250.0;
|
||||||
|
float orbitWidth = 100.0;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
gifExport = new GifMaker(this, "export.gif", 30);
|
||||||
|
gifExport.setRepeat(0); // make it an "endless" animation
|
||||||
|
|
||||||
|
maskOrigin = new PVector();
|
||||||
|
smooth();
|
||||||
|
size(500, 500);
|
||||||
|
noStroke();
|
||||||
|
colorMode(HSB, 100, 100, 100, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw() {
|
||||||
|
background(0, 0, 100);
|
||||||
|
float phase = norm(frameCount % loopFrames, 0, loopFrames) * TWO_PI;
|
||||||
|
maskOrigin.x = sin(phase) * orbitWidth + width / 2.0;
|
||||||
|
maskOrigin.y = cos(phase) * orbitWidth + height / 2.0;
|
||||||
|
|
||||||
|
float r = 16.0;
|
||||||
|
float w = 2.0 * sin(PI/3.0) * r;
|
||||||
|
boolean flip = false;
|
||||||
|
for (float x = 2.0 * r; x < width - r; x += w) {
|
||||||
|
flip = !flip;
|
||||||
|
for (float y = 3.0 * r; y < height - r; y+= (r * 2.0)) {
|
||||||
|
if (flip) {
|
||||||
|
drawHex(x, y - r, r);
|
||||||
|
} else {
|
||||||
|
drawHex(x, y, r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export();
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawHex(float x, float y, float size) {
|
||||||
|
float n = 6.0;
|
||||||
|
float t = TWO_PI/n;
|
||||||
|
PVector hexOrigin = new PVector(x, y);
|
||||||
|
float d = hexOrigin.dist(maskOrigin);
|
||||||
|
float saturation = norm(d, maskWidth / 2.0, 0) * 200.0 * noise(x, y, 1);
|
||||||
|
float hue = map(noise(x, y), 0.0, 1.0, 55, 60);
|
||||||
|
|
||||||
|
fill(hue, saturation, 100);
|
||||||
|
pushMatrix();
|
||||||
|
translate(-size * cos(t), -size * sin(t));
|
||||||
|
translate(x, y);
|
||||||
|
rotate(norm(frameCount % loopFrames, 0, loopFrames) * TWO_PI);
|
||||||
|
|
||||||
|
beginShape();
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
x = size * cos(float(i) * t);
|
||||||
|
y = size * sin(float(i) * t);
|
||||||
|
vertex(x, y);
|
||||||
|
}
|
||||||
|
endShape(CLOSE);
|
||||||
|
popMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
void export() {
|
||||||
|
if(frameCount < loopFrames) {
|
||||||
|
gifExport.setDelay(100);
|
||||||
|
gifExport.addFrame();
|
||||||
|
} else {
|
||||||
|
gifExport.finish();
|
||||||
|
println("gif saved");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue