Concentric circles
Log in to post a comment.
// LL 2021 const count = 3; // min=1 max=10 step=1 const increment = 1; // min=0.01 max=10 step=0.01 const spacing = 0.02; // min=0.001 max=1 step=0.001 const seed = 0; // min=0 max=100 step=1 const size = 300 /// min=1 max=1000 step=1 const canvas_size = 90; Canvas.setpenopacity(1); const turtle = new Turtle(); var centers = []; const ring_count = Math.ceil(size / increment); function walk(i, t) { if (i==0) { centers = Array.from({length: count}, (_, id) => ([ (rng.nextFloat() * canvas_size * 2 - canvas_size) * spacing, (rng.nextFloat() * canvas_size * 2 - canvas_size) * spacing ])); } const index = Math.floor(i / ring_count); const radius = (i % ring_count) * increment + 0.1; turtle.jump(centers[index][0], centers[index][1] - radius); turtle.circle(radius); return (i+1) < count * ring_count; } /////// //// Random with seed function RNG(_seed) { // LCG using GCC's constants this.m = 0x80000000; // 2**31; this.a = 1103515245; this.c = 12345; this.state = _seed ? _seed : Math.floor(Math.random() * (this.m - 1)); } RNG.prototype.nextFloat = function() { // returns in range [0,1] this.state = (this.a * this.state + this.c) % this.m; return this.state / (this.m - 1); } var rng = new RNG(seed);