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