Remix of Square to Circle
Square to Circle ⬜️⚪️
Log in to post a comment.
const turtle = new Turtle();
const rectSize = 100; // min=1, max=100, step=1
const rectLooseness = 20; // min=0, max=25, step=1
const rectLooseness2 = 3; // min=0, max=25, step=1
const rectSize2 = 50; // min=1, max=100, step=1
const circleSize = 2; // min=1, max=100, step=1
const circleLooseness = 33; // min=0, max=25, step=1
const totalLines = 1111; // min=1, max=2000, step=1
const density = 20;
const outerScale = 20;
const size = 90;
const _size = outerScale - size;
const stops = Array.from(new Array(Math.ceil(72*density)), x => size * Math.random());
let lastStop;
const lerp = (from,to, t) => from + (to - from) * t;
const or = (a, b) => Math.random() < 0.75 ? a : b;
const getLooseness = (amount) => lerp(-amount * 0.5, amount * 0.5, Math.random());
const getCircleEdge = radius => {
const angle = Math.PI * 0.42 * Math.random();
return [
Math.sin(angle) * radius,
Math.cos(angle) * radius
]
}
function getSquareEdge(a, b) {
const rect = [
lerp(a, b, Math.random()),
or(a, b)
];
if (Math.random() > 0.9) rect.push(rect.shift());
return rect;
}
function getSquareEdge2(a, b) {
const rect2 = [
lerp(a, b, Math.random()),
or(a, b)
];
if (Math.random() < 0.9) rect2.push(rect2.shift());
}
function walk(step) {
turtle.goto( getSquareEdge(-rectSize + getLooseness(rectLooseness), rectSize + getLooseness(rectLooseness)) );
turtle.goto( getSquareEdge2(-rectSize2 + getLooseness(rectLooseness2), rectSize2 + getLooseness(rectLooseness2)) );
turtle.jump( getCircleEdge(circleSize + getLooseness(circleLooseness)) );
return step < totalLines;
}