noise by gpt & veryblueofnaman
Log in to post a comment.
// Title: Organic Cube Grid
// Author: Veryblueofnaman
const turtle = new Turtle();
const cols = 6;
const rows = 6;
const size = 40;
function setup() {
turtle.penup();
turtle.goto(-cols * size / 2, -rows * size / 2);
turtle.pendown();
}
function walk(i) {
const x = (i % cols) * size - (cols * size) / 2;
const y = Math.floor(i / cols) * size - (rows * size) / 2;
const rot = Math.random() * 360;
drawCube(x, y, size, rot);
return i < cols * rows - 1;
}
function drawCube(x, y, size, rot) {
turtle.penup();
turtle.goto(x, y);
turtle.setheading(rot);
turtle.pendown();
// Outer distorted square with curvature
for (let i = 0; i < 4; i++) {
let step = size / 8;
for (let j = 0; j < 8; j++) {
turtle.forward(step + Math.random() * 2 - 1);
turtle.right(5 + Math.random() * 2);
}
turtle.right(90 + Math.random() * 10 - 5);
}
// Random noise lines
for (let n = 0; n < 3; n++) {
turtle.penup();
turtle.goto(x + (Math.random() - 0.5) * size, y + (Math.random() - 0.5) * size);
turtle.pendown();
for (let k = 0; k < 5; k++) {
turtle.forward(Math.random() * size / 3);
turtle.right(60 + Math.random() * 30);
}
}
// Random triangles
for (let t = 0; t < 2; t++) {
turtle.penup();
turtle.goto(x + (Math.random() - 0.5) * size, y + (Math.random() - 0.5) * size);
turtle.setheading(Math.random() * 360);
turtle.pendown();
let triSize = size / 2 + Math.random() * size / 3;
for (let s = 0; s < 3; s++) {
turtle.forward(triSize);
turtle.right(120);
}
}
}