Spend a month making one beautiful thing per day, given a bunch of prompts. A month late, but as they say, ’the second best time is now'.
Let’s do it!
29) Maximalism
let gui;
let params = {
lineWeight: 0.1, lineWeightMin: 0, lineWeightMax: 2.0, lineWeightStep: 0.01,
lineStepSize: 10, lineStepSizeMin: 1,
colorful: ['no', 'yes', 'very'],
balls: 5,
doubleBalls: true,
solidBalls: false,
}
let WORK_IT;
let COLORS = [
"red",
"green",
"blue",
"cyan",
"magenta",
"yellow",
"black",
]
function setup() {
createCanvas(400, 400);
WORK_IT = {
topLeft: {},
topRight: {x: width, r: TWO_PI * 1/4},
bottomLeft: {y: height, r: TWO_PI * 3/4},
bottomRight: {x: width, y: height, r: TWO_PI * 2/4},
centerTopLeft: {s: 0.5, x: width / 2, y: height / 2, r: TWO_PI * 2/4},
centerTopRight: {s: 0.5, x: width / 2, y: height / 2, r: TWO_PI * 3/4},
centerBottomLeft: {s: 0.5, x: width / 2, y: height / 2, r: TWO_PI * 1/4},
centerBottomRight: {s: 0.5, x: width / 2, y: height / 2},
smallTopLeft: {s: 0.5},
smallTopRight: {s: 0.5, x: width, r: TWO_PI * 1/4},
smallBottomLeft: {s: 0.5, y: height, r: TWO_PI * 3/4},
smallBottomRight: {s: 0.5, x: width, y: height, r: TWO_PI * 2/4},
};
for (let key in WORK_IT) {
params[key] = random() < 0.5;
}
gui = createGuiPanel('params');
gui.addObject(params);
gui.setPosition(420, 0);
}
function draw() {
noLoop();
background("white");
// BALLS
strokeWeight(1);
noStroke();
noFill();
(params.solidBalls ? fill : stroke)("black");
for (let i = 0; i < params.balls; i++) {
let r = max(width, height) / 2 * i / params.balls;
let a = TWO_PI * i / params.balls;
let x = width / 2 + r * cos(a);
let y = height / 2 + r * sin(a);
if (params.colorful != 'no') {
(params.solidBalls ? fill : stroke)(random(COLORS));
}
circle(x, y, r);
if (params.doubleBalls) {
x = width / 2 - r * cos(a);
y = height / 2 - r * sin(a);
if (params.colorful != 'no') {
(params.solidBalls ? fill : stroke)(random(COLORS));
}
circle(x, y, r);
}
}
// LINES
strokeWeight(params.lineWeight);
stroke("black");
for (let i = 0; i <= max(width, height); i += params.lineStepSize) {
for (let key in WORK_IT) {
if (params[key]) {
if (params.colorful == 'yes') {
stroke(random(COLORS));
}
missyElliott(doLines, WORK_IT[key]);
}
}
}
}
function doLines() {
let size = max(width, height);
for (let i = 0; i <= size; i += params.lineStepSize) {
if (params.colorful == 'very') {
stroke(random(COLORS));
}
line(i, 0, 0, size - i);
}
}
function missyElliott(thunk, options) {
let {x, y, r, s} = options || {};
push();
{
translate(x || 0, y || 0);
if (r && r != 0) rotate(r);
if (s && s != 1) scale(s);
thunk();
}
pop();
}
Posts in Genuary 2023:
- Genuary 2023.01: Perfect loop
- Genuary 2023.02: Made in 10 minutes
- Genuary 2023.03: Glitch art
- Genuary 2023.04: Intersections
- Genuary 2023.05: Debug view
- Genuary 2023.06: Steal like an artist
- Genuary 2023.07: Sample a color palette
- Genuary 2023.08: Signed Distance Functions
- Genuary 2023.09: Plants
- Genuary 2023.10: Generative Music
- Genuary 2023.11: Suprematism
- Genuary 2023.12: Tessellation
- Genuary 2023.13: Something you've always wanted to learn
- Genuary 2023.14: Asemic Writing
- Genuary 2023.15: Sine Waves
- Genuary 2023.16: Reflections of a Reflection
- Genuary 2023.17: A grid inside a grid inside a grid
- Genuary 2023.18: Definitely not a grid
- Genuary 2023.19: Black and white
- Genuary 2023.20: Art Deco
- Genuary 2023.21: Persian Carpet
- Genuary 2023.22: Shadows
- Genuary 2023.23: Moiré
- Genuary 2023.24: Textile
- Genuary 2023.25: Yayoi Kusama
- Genuary 2023.26: My kid could have made that
- Genuary 2023.27: In the style of Hilma Af Klint
- Genuary 2023.28: Generative poetry
- Genuary 2023.29: Maximalism
- Genuary 2023.30: Minimalism
- Genuary 2023.31: Break a previous image