Log in to post a comment.
// You can find the Turtle API reference here: https://turtletoy.net/syntax Canvas.setpenopacity(0.5); // Global code will be evaluated once. const turtle = new Turtle(); // The walk function will be called until it returns false. buffer_x = 14 buffer_y = -85 grid_size = 13 rose_size = 5 function walk(i) { const x = i % grid_size; const y = i / grid_size >> 0; center_x = buffer_y + x * buffer_x center_y = buffer_y + y * buffer_x k = (x+1)/(y+1) turtle.up(); turtle.goto(center_x+rose_size,center_y); turtle.down(); bound = 360//2*Math.pi /* Where k is even, the entire graph of the rose will be traced out exactly once when the value of theta, θ changes from 0 to 2π. When k is odd, this will happen on the interval between 0 and π. (More generally, this will happen on any interval of length 2π for k even, and π for k odd.) If k is a half-integer (e.g. 1/2, 3/2, 5/2), the curve will be rose-shaped with 4k petals. Example: n=7, d=2, k= n/d =3.5, as θ changes from 0 to 4π. If k can be expressed as n±1/6, where n is a nonzero integer, the curve will be rose-shaped with 12k petals. If k can be expressed as n/3, where n is an integer not divisible by 3, the curve will be rose-shaped with n petals if n is odd and 2n petals if n is even. */ if(k%2 == 0){ bound = 360 } else if(k%2 != 0 && Math.round(k) == k){ bound = 360/2 } for(theta=0;theta<=bound;theta+=0.1){ turtle.goto( center_x+rose_size*Math.cos(k*theta)*Math.cos(theta), center_y+rose_size*Math.cos(k*theta)*Math.sin(theta) ); } turtle.up() return i < grid_size*grid_size-1; }