Generative Art #125
Code
void setup() {
size(840, 840);
pixelDensity(2);
noLoop();
rectMode(CENTER);
}
void draw() {
hexTile();
powder();
}
void powder() {
for (int i = 0; i < 500000; i ++) {
stroke(255, 60);
strokeWeight(0.4);
point(random(width), random(height));
}
}
void hexTile() {
int c = 10;
float s = width/c;
for (int i = 0; i <= c * 1.5; i += 1) {
for (int j = 0; j <= c; j ++) {
hexagon(j * s * 1.5, i * s * cos(radians(30)), s);
}
for (int j = 0; j <= c; j ++) {
hexagon((j * s * 1.5) + s * 0.75, i * s * cos(radians(30)) + s * cos(radians(30))/2, s);
}
}
}
void hexagon(float x, float y, float s) {
push();
translate(x, y);
rotate((PI/3) * (int)random(6));
beginShape();
noStroke();
fill(getCol());
for (float a = 0; a < TAU; a += TAU/6) {
float x_ = s/2 * cos(a);
float y_ = s/2 * sin(a);
vertex(x_, y_);
}
endShape();
pattern(s);
pop();
}
void pattern(float s) {
float r = random(1);
noStroke();
fill(getCol());
if (r > 6.0 / 7.0) {
circle(0, 0, s * 0.7);
} else if (r > 5.0 / 7.0) {
beginShape();
vertex(0, 0);
vertex(s/2, 0);
vertex(s/2 * cos(radians(60)), s/2 * sin(radians(60)));
vertex(s/2 * cos(radians(120)), s/2 * sin(radians(120)));
vertex(-s/2, 0);
endShape();
} else if (r > 4.0 / 7.0) {
float len = s * 0.30;
stroke(getCol());
strokeWeight(s * 0.1);
line(-len, 0, len, 0);
rotate(radians(90));
line(-len, 0, len, 0);
} else if (r > 3.0 / 7.0) {
rect(0, 0, s*0.5, s*cos(radians(30)));
} else if (r > 2.0 / 7.0) {
beginShape();
vertex(0, 0);
vertex(s/2, 0);
vertex(s/2 * cos(radians(60)), s/2 * sin(radians(60)));
endShape();
} else if(r > 1.0 / 7.0){
for (int i = 0; i < 3; i ++) {
beginShape();
vertex(0, 0);
vertex(s/2, 0);
vertex((s/2 + 1) * cos(radians(60)), (s/2 + 1) * sin(radians(60)));
endShape();
rotate(radians(120));
println(2.0/ 6.0);
}
}
else{
circle(0, 0, s*0.8);
fill(getCol());
circle(0, 0, s*0.5);
fill(getCol());
circle(0, 0, s*0.2);
}
}
void mousePressed() {
redraw();
}
void keyPressed() {
if (key == 's')saveFrame("####.png");
}
int[] colors = {#98c1d9, #6969b3, #533a7b, #4b244a, #25171a, #E5B027};
int getCol() {
return colors[(int)random(colors.length)];
}
六角形をタイリング。偶数列と奇数列でy座標をずらして並べた。
あとは六角形の中身に色んな形を描画。
これは中身を変えて無限に遊べるシリーズ。
色は補色を意識して作ったよ。補色はなぜかいい感じになるよ。不思議だね!
Happy coding!!!
応援してくださる方!いつでもサポート受け付けてます!