Doodle Gradient
Tool for generating and saving paths to use in other turtles. Here I have a list of 20 doodles arranged in a gradient pattern to be used in other pieces.
You can also draw your own doodles in "Draw" mode. Draw the paths in the window on the screen, go to your browser console using inspect element, and copy paste your paths into the table at the bottom of the code. Each path should be a string in a list of strings, and then output the list of paths by assigning them an ID in the lookup table. I think there is a lot of room for unique pieces using this technique.
Log in to post a comment.
const turtle = new Turtle();
let draw_mode = 1; // min = 0 max = 1 step = 1 (Draw, Gradient)
let shape_id = 0; // min = 0 max = 19 step = 1
let order = [0,1,2,15,16,5,3,4,18,14,19,10,12,13,7,11,6,17,8,9];
const path_input_1 = `M57,61C-72,51 -23,-84 36,-67`; // type=path
const path_input_2 = `M57,61C-72,51 -23,-84 36,-67`; // type=path
const path_input_3 = `M57,61C-72,51 -23,-84 36,-67`; // type=path
const path_input_4 = `M57,61C-72,51 -23,-84 36,-67`; // type=path
const path_input_5 = `M57,61C-72,51 -23,-84 36,-67`; // type=path
if(draw_mode == 1) {
let position = 0;
for(let i = -100; i < 100; i+=10) {
for(let j = -100; j < 0; j+=10) {
drawShape(order[position],i+5,j+5,0.1,0)
}
position++;
}
position = 0;
let repeat = true;
for(let i = -100; i < 100; i+=5) {
for(let j = 0; j < 50; j+=5) {
drawShape(order[position],i+2.5,j+2.5,0.05,0)
}
if(repeat) {repeat = false;}
else {position++; repeat = true;}
}
position = 0;
let shape_count = 0;
for(let i = -100; i < 100; i+=2.5) {
for(let j = 50; j < 100; j+=2.5) {
drawShape(order[position],i+1.25,j+1.25,0.025,0)
}
if(shape_count < 3) {shape_count++;}
else {shape_count=0; position++;}
}
}
function drawShape(shapeID, x_pos, y_pos, scale, rot) {
let shape_paths = getShape(shapeID);
for(let i = 0; i < shape_paths.length; i++) {
drawPathScaled(Path(shape_paths[i]), x_pos, y_pos, rot, scale, scale)
}
}
if(draw_mode == 0) {
let path_1 = new Path(path_input_1);
let path_2 = new Path(path_input_2);
let path_3 = new Path(path_input_3);
let path_4 = new Path(path_input_4);
let path_5 = new Path(path_input_5);
drawPathScaled(path_1, 0, 0, 0, 1, 1)
drawPathScaled(path_2, 0, 0, 0, 1, 1)
drawPathScaled(path_3, 0, 0, 0, 1, 1)
drawPathScaled(path_4, 0, 0, 0, 1, 1)
drawPathScaled(path_5, 0, 0, 0, 1, 1)
console.clear()
console.log(path_input_1);
console.log(path_input_2);
console.log(path_input_3);
console.log(path_input_4);
console.log(path_input_5);
//handwriting lines
line(-50,0,50,0);
line(-50,50,50,50);
line(-50,-50,50,-50);
line(0,-50,0,50);
line(50,-50,50,50);
line(-50,-50,-50,50);
drawShape(shape_id, 0, 0, 1, 0);
}
function drawPathScaled(path, xc, yc, rot, x_scale, y_scale) {
const steps = path.length();
for(let i = 0; i < steps; i++) {
let pos = path.p( i/steps );
let x1 = pos[0] * x_scale;
let y1 = pos[1] * y_scale;
let x2 = (x1*Math.cos(rot) - y1*Math.sin(rot)) + xc;
let y2 = (x1*Math.sin(rot) + y1*Math.cos(rot)) + yc;
pos = [x2,y2]
if(i == 0) {
turtle.jmp(pos);
}
else {
turtle.goto(pos);
}
}
}
function line(x1,y1,x2,y2) {
turtle.penup();
turtle.goto(x1, y1);
turtle.pendown();
turtle.goto(x2, y2);
}
////////////////////////////////////////////////////////////////
// Path utility code. Created by Reinder Nijhoff 2023
// Parses a single SVG path (only M, C and L statements are
// supported). The p-method will return
// [...position, ...derivative] for a normalized point t.
//
// https://turtletoy.net/turtle/46adb0ad70
////////////////////////////////////////////////////////////////
function Path(svg) {
class MoveTo {
constructor(p) { this.p0 = p; }
p(t, s) { return [...this.p0, 1, 0]; }
length() { return 0; }
}
class LineTo {
constructor(p0, p1) { this.p0 = p0, this.p1 = p1; }
p(t, s = 1) {
const nt = 1 - t, p0 = this.p0, p1 = this.p1;
return [
nt*p0[0] + t*p1[0],
nt*p0[1] + t*p1[1],
(p1[0] - p0[0]) * s,
(p1[1] - p0[1]) * s,
];
}
length() {
const p0 = this.p0, p1 = this.p1;
return Math.hypot(p0[0]-p1[0], p0[1]-p1[1]);
}
}
class BezierTo {
constructor(p0, c0, c1, p1) { this.p0 = p0, this.c0 = c0, this.c1 = c1, this.p1 = p1; }
p(t, s = 1) {
const nt = 1 - t, p0 = this.p0, c0 = this.c0, c1 = this.c1, p1 = this.p1;
return [
nt*nt*nt*p0[0] + 3*t*nt*nt*c0[0] + 3*t*t*nt*c1[0] + t*t*t*p1[0],
nt*nt*nt*p0[1] + 3*t*nt*nt*c0[1] + 3*t*t*nt*c1[1] + t*t*t*p1[1],
(3*nt*nt*(c0[0]-p0[0]) + 6*t*nt*(c1[0]-c0[0]) + 3*t*t*(p1[0]-c1[0])) * s,
(3*nt*nt*(c0[1]-p0[1]) + 6*t*nt*(c1[1]-c0[1]) + 3*t*t*(p1[1]-c1[1])) * s,
];
}
length() {
return this._length || (
this._length = Array.from({length:25}, (x, i) => this.p(i/25)).reduce(
(a,c,i,v) => i > 0 ? a + Math.hypot(c[0]-v[i-1][0], c[1]-v[i-1][1]) : a, 0));
}
}
class Path {
constructor(svg) {
this.segments = [];
this.parsePath(svg);
}
parsePath(svg) {
const t = svg.match(/([0-9.-]+|[MLC])/g);
for (let s, i=0; i<t.length;) {
switch (t[i++]) {
case 'M': this.add(new MoveTo(s=[t[i++],t[i++]]));
break;
case 'L': this.add(new LineTo(s, s=[t[i++],t[i++]]));
break;
case 'C': this.add(new BezierTo(s, [t[i++],t[i++]], [t[i++],t[i++]], s=[t[i++],t[i++]]));
break;
default: i++;
}
}
}
add(segment) {
this.segments.push(segment);
this._length = 0;
}
length() {
return this._length || (this._length = this.segments.reduce((a,c) => a + c.length(), 0));
}
p(t) {
t = Math.max(Math.min(t, 1), 0) * this.length();
for (let l=0, i=0, sl=0; i<this.segments.length; i++, l+=sl) {
sl = this.segments[i].length();
if (t > l && t <= l + sl) {
return this.segments[i].p((t-l)/sl, sl/this.length());
}
}
return this.segments[Math.min(1, this.segments.length-1)].p(0);
}
}
return new Path(svg);
}
function getShape(shapeID) {
let output_paths;
switch(shapeID) {
case 0:
output_paths = [];
break;
case 1:
output_paths = ["M0,-6C-3,-6 -5,-5 -7,-3C-9,-1 -7,3 -5,4C-3,5 0,9 2,7C3,6 4,4 5,3C7,1 8,-3 6,-5C5,-6 1,-8 0,-7C-1,-6 -1,-5 -2,-5"];
break;
case 2:
output_paths = ["M-1,-26C1,-24 -1,-20 0,-17C2,-13 1,-9 1,-5C1,1 0,6 0,12C0,15 0,18 0,21C0,25 0,29 0,33",
"M-24,-1C-9,-1 7,0 22,0"];
break;
case 3:
output_paths = ["M2,-33C2,-38 -9,-38 -13,-34C-16,-31 -20,-29 -24,-27C-26,-26 -29,-27 -31,-25C-33,-23 -32,-20 -34,-18C-38,-14 -30,-5 -34,-1C-36,1 -35,6 -35,9C-35,16 -34,24 -29,29C-24,34 -10,35 -7,38C-3,42 4,38 9,36C15,33 22,32 26,28C30,24 33,18 36,12C40,4 35,-6 31,-14C28,-20 25,-27 20,-32C19,-33 18,-31 17,-32C12,-37 3,-32 -4,-32"];
break;
case 4:
output_paths = ["M-50,-51C-47,-51 -48,-46 -46,-44C-40,-36 -34,-29 -27,-22C-22,-17 -16,-14 -10,-11C-7,-9 -7,-5 -4,-2C-0,2 5,3 9,7C13,11 17,14 19,19C20,21 24,21 26,23C32,29 39,33 45,39C47,41 47,48 50,48",
"M-49,48C-44,43 -39,40 -33,37C-31,36 -30,33 -28,32C-26,31 -24,31 -23,29C-19,22 -16,15 -10,9C-7,6 -3,6 0,3C1,2 -1,1 0,0C3,-3 5,-6 9,-10C12,-13 17,-14 20,-17C25,-22 31,-27 36,-32C39,-35 37,-39 40,-42C43,-45 46,-49 50,-49"];
break;
case 5:
output_paths = ["M48,0C48,17 36,35 21,42C17,44 12,43 7,43C-1,43 -10,42 -15,37C-19,33 -21,26 -26,23C-32,20 -32,11 -32,5C-32,1 -34,-3 -32,-6C-27,-16 -7,-26 1,-18C3,-16 4,-13 6,-11C9,-8 4,0 0,0"];
break;
case 6:
output_paths = ["M0,0C4,0 10,-21 1,-26C-6,-29 -15,-22 -20,-17C-22,-15 -21,-12 -21,-9C-21,-5 -22,-1 -21,2C-20,6 -16,11 -12,13C-10,14 -6,11 -4,13C-1,16 4,15 7,13C8,13 7,11 8,10C12,6 17,1 20,-4C21,-6 20,-9 20,-12C20,-15 21,-18 20,-20C18,-25 15,-29 11,-33C9,-35 6,-34 4,-36C3,-37 -0,-35 -2,-36C-8,-39 -17,-35 -22,-30C-35,-17 -32,15 -16,23C-11,25 -6,28 -1,28C4,28 10,30 15,28C21,25 26,22 30,17C42,1 45,-29 31,-43C29,-45 26,-47 23,-48C19,-50 13,-45 8,-48C1,-51 -8,-51 -15,-48C-21,-45 -25,-38 -30,-33C-38,-25 -45,-13 -45,-1C-45,6 -48,13 -45,19C-40,30 -29,37 -20,46C-18,48 -14,47 -12,48C-6,51 2,49 8,46C13,44 19,45 23,41C26,38 29,35 33,33C41,29 42,16 46,8C48,4 49,-1 49,-5C49,-7 50,-12 48,-12",
"M-50,-23C-50,-26 -47,-29 -45,-31C-40,-36 -39,-42 -34,-47C-32,-49 -28,-47 -26,-49C-25,-50 -24,-52 -22,-52C-21,-52 -22,-50 -23,-50",
"M34,-49C37,-49 38,-45 40,-43C43,-40 50,-40 50,-36",
"M29,49C30,49 31,47 32,46C33,44 36,44 38,42C40,40 41,38 43,37C45,36 47,34 49,32C50,31 50,29 50,30",
"M-50,32C-48,32 -48,36 -47,37C-45,39 -44,40 -43,42C-41,46 -33,46 -33,50"];
break;
case 7:
output_paths = ["M-7,-22C-18,-22 -22,-1 -17,8C-16,11 -12,11 -9,12C-7,13 -4,15 -2,13C1,10 5,11 8,8C11,5 12,2 14,-1C16,-6 14,-13 10,-17C7,-20 2,-19 -1,-21C-3,-22 -6,-23 -7,-22C-9,-20 -10,-19 -12,-17",
"M-38,-17C-41,-17 -44,-15 -45,-12C-46,-9 -45,-6 -46,-3C-48,0 -50,5 -47,8C-45,10 -45,11 -43,13C-41,15 -38,12 -35,13C-31,14 -25,13 -22,10C-18,6 -14,-3 -18,-7C-20,-9 -21,-13 -22,-16C-23,-18 -26,-18 -27,-19C-28,-20 -31,-19 -33,-19C-39,-19 -46,-18 -50,-14C-52,-12 -51,-9 -51,-6",
"M23,-14C17,-14 12,-3 15,2C17,7 21,11 26,13C30,14 36,15 40,14C47,12 47,-0 45,-7C44,-11 44,-18 40,-20C36,-22 31,-17 28,-14C25,-11 20,-10 20,-6",
"M-24,-46C-31,-46 -39,-34 -36,-27C-34,-24 -31,-21 -28,-20C-25,-19 -21,-21 -18,-20C-14,-18 -8,-19 -5,-22C-4,-23 -6,-26 -5,-28C-3,-32 -6,-39 -9,-42C-10,-43 -14,-42 -15,-43C-19,-47 -32,-47 -32,-41",
"M8,-47C6,-47 3,-48 2,-47C-1,-44 0,-40 0,-36C0,-32 -1,-27 1,-23C4,-17 13,-17 19,-17C24,-17 30,-18 34,-22C39,-27 31,-40 24,-43C20,-45 14,-43 11,-46C9,-48 4,-48 1,-47C-1,-46 -2,-43 -4,-43",
"M-25,9C-37,9 -39,37 -30,46C-25,51 -15,52 -8,49C-6,48 -2,49 0,47C7,40 3,25 -2,16C-3,13 -7,13 -10,12C-15,10 -22,8 -26,12C-27,13 -30,13 -30,14",
"M12,7C8,7 2,6 0,10C-2,14 -1,19 -1,23C-1,30 0,37 5,42C8,45 13,42 17,43C22,44 28,45 32,41C36,37 42,30 38,26C34,22 32,18 28,14C26,12 24,9 21,8C19,7 18,8 16,9C12,11 7,10 4,13"];
break;
case 8:
output_paths = ["M48,-33C39,-33 32,-40 23,-43C16,-45 6,-41 0,-47C-4,-51 -10,-47 -15,-47C-24,-47 -33,-41 -39,-35C-42,-32 -43,-27 -40,-24C-36,-20 -28,-21 -23,-24C-15,-28 -4,-23 4,-27C13,-31 26,-26 33,-33C37,-37 52,-29 49,-24C47,-20 41,-19 37,-17C27,-12 15,-7 4,-11C-6,-14 -17,-17 -28,-17C-32,-17 -36,-17 -40,-17C-42,-17 -44,-18 -45,-17C-47,-15 -47,-12 -49,-10C-52,-7 -46,-0 -42,2C-35,5 -27,2 -19,2C-14,2 -10,2 -5,2C-3,2 0,4 2,2C4,-0 8,-1 11,-2C14,-3 15,-6 18,-7C21,-8 24,-7 27,-7C31,-7 35,-5 38,-8C39,-9 43,-10 44,-9C46,-7 45,-3 46,0C48,4 50,9 48,13C45,18 37,17 31,17C24,17 17,18 11,15C9,14 5,16 3,15C-0,13 -4,12 -7,11C-16,8 -26,2 -34,6C-37,8 -41,8 -44,11C-46,13 -47,18 -49,20C-52,23 -42,24 -38,24C-31,24 -24,26 -17,26C-10,26 -2,28 5,25C17,19 35,14 44,23C47,26 41,31 37,33C28,37 18,41 8,41C2,41 -4,39 -10,36C-13,34 -17,35 -20,33C-21,32 -24,34 -25,33C-27,31 -31,32 -33,30C-35,28 -40,27 -42,29C-43,30 -42,32 -43,33C-45,35 -48,37 -50,39C-53,42 -44,46 -40,46C-32,46 -24,48 -16,48C-5,48 6,47 16,44C19,43 21,46 26,44C29,43 32,40 35,41C38,42 40,45 43,45",
"M42,49C42,39 44,29 48,20C49,17 48,13 48,10C48,2 48,-5 48,-13C48,-24 52,-40 42,-45C33,-49 34,-27 34,-17C34,-4 35,10 31,22C28,30 32,42 26,48C24,50 18,47 16,45C13,42 16,35 14,31C13,29 12,28 13,26C16,20 18,14 21,8C24,2 19,-6 21,-13C22,-17 22,-22 22,-27C22,-29 24,-32 22,-34C19,-37 17,-40 13,-42C11,-43 9,-41 8,-40C5,-37 -0,-36 -3,-32C-5,-28 -6,-23 -5,-19C-2,-9 0,2 0,13C0,19 -1,26 -1,32C-1,37 -2,42 -6,46C-8,48 -11,41 -12,38C-15,32 -16,25 -16,18C-16,12 -14,6 -14,0C-14,-6 -13,-13 -15,-19C-16,-22 -12,-27 -15,-30C-18,-33 -18,-38 -21,-41C-23,-43 -26,-38 -27,-36C-29,-32 -30,-27 -30,-22C-30,-7 -26,10 -33,23C-36,29 -33,36 -36,42C-37,44 -41,48 -43,46C-49,40 -46,30 -48,23C-51,15 -51,6 -48,-2C-47,-6 -50,-12 -48,-16C-45,-22 -45,-30 -43,-37C-42,-40 -40,-42 -40,-45"];
break;
case 9:
output_paths = ["M-48,-45C-46,-45 -45,-52 -43,-50C-41,-48 -45,-43 -48,-41C-49,-41 -50,-40 -49,-39C-48,-38 -47,-40 -46,-41C-42,-44 -40,-50 -35,-50C-33,-50 -37,-46 -38,-44C-41,-40 -45,-36 -47,-31C-48,-29 -52,-26 -50,-26C-47,-26 -46,-31 -43,-32C-38,-34 -35,-40 -30,-42C-28,-43 -27,-47 -24,-47C-23,-47 -22,-50 -22,-49C-22,-44 -28,-41 -30,-37C-33,-32 -36,-25 -40,-21C-42,-19 -45,-16 -47,-14C-48,-13 -51,-11 -50,-11C-42,-11 -36,-19 -29,-24C-22,-29 -15,-33 -9,-39C-6,-42 -5,-47 -1,-49C-0,-49 0,-51 0,-51C0,-51 -1,-48 -2,-47C-4,-43 -6,-39 -10,-36C-17,-31 -22,-25 -28,-19C-31,-16 -35,-15 -38,-12C-42,-8 -43,-4 -47,0C-48,1 -49,1 -49,1C-49,1 -38,-6 -33,-10C-23,-18 -11,-23 -2,-32C2,-36 6,-42 11,-45C13,-46 16,-52 16,-50C16,-48 13,-46 12,-44C7,-35 -1,-27 -9,-21C-18,-14 -28,-6 -36,2C-38,4 -41,6 -44,7C-46,8 -51,11 -49,11C-42,11 -36,4 -29,1C-26,-1 -22,-1 -19,-3C-16,-6 -14,-10 -11,-12C-9,-14 -5,-14 -3,-16C-0,-19 0,-22 3,-25C6,-28 11,-30 14,-33C18,-37 23,-42 27,-46C29,-48 30,-51 32,-51C33,-51 30,-49 30,-48C29,-46 28,-43 27,-41C23,-34 20,-27 13,-23C-2,-14 -16,-3 -29,10C-33,14 -40,17 -44,21C-44,21 -43,23 -44,23C-46,24 -51,26 -51,26C-51,26 -45,23 -42,21C-36,17 -30,13 -24,9C-8,-3 6,-17 23,-28C30,-33 35,-40 43,-44C45,-45 45,-51 47,-49C50,-46 45,-41 43,-38C40,-32 37,-25 32,-20C24,-11 13,-5 3,2C-3,7 -17,17 -21,19C-28,22 -34,29 -41,31C-44,32 -46,34 -49,35C-50,35 -51,37 -51,37C-51,37 -50,36 -49,36C-45,35 -41,33 -37,31C-28,27 -19,24 -12,17C-7,12 -3,7 3,5C8,3 22,0 27,-3C27,-3 28,-3 28,-3C33,-8 40,-11 43,-17C44,-20 46,-25 49,-25C50,-25 49,-24 49,-23C48,-21 47,-19 46,-17C44,-10 39,-2 32,2C23,8 14,12 5,17C4,18 2,19 1,20C-4,25 -12,28 -19,30C-27,33 -36,33 -42,39C-44,41 -48,46 -48,46C-48,46 -44,45 -42,44C-37,42 -32,41 -27,39C-12,33 2,27 17,21C22,19 26,16 30,12C32,10 37,9 39,7C41,5 44,4 46,2C47,1 47,-1 48,0C49,1 47,1 46,2C45,4 44,6 43,7C39,11 35,16 31,20C20,31 4,34 -9,41C-12,43 -16,41 -20,42C-22,42 -24,45 -26,46C-28,47 -29,48 -31,50C-32,51 -34,50 -33,51C-31,53 -28,50 -26,49C-21,47 -17,47 -12,46C3,42 18,36 33,32C37,31 41,27 45,25C47,24 50,19 50,21C50,26 44,30 40,32C29,37 17,40 8,49C6,51 13,48 15,47C19,45 24,44 29,44C35,44 40,41 45,39C47,38 47,35 49,35C51,35 47,38 46,39C43,42 39,46 34,46C32,46 37,46 39,46C41,46 44,42 46,44C47,45 43,49 43,49C43,49 46,47 48,47"];
break;
case 10:
output_paths = ["M-22,-51C-22,-47 -31,-49 -34,-46C-36,-44 -36,-42 -38,-41C-40,-40 -44,-39 -45,-37C-46,-35 -47,-32 -49,-30C-50,-29 -49,-26 -49,-24C-49,-22 -50,-18 -48,-17C-47,-16 -47,-14 -46,-13C-40,-10 -36,-2 -30,1C-25,4 -18,-0 -13,-3C-5,-7 0,-17 0,-26C0,-32 -3,-39 -8,-42C-10,-43 -11,-45 -13,-47C-15,-49 -18,-45 -20,-47C-22,-49 -26,-50 -28,-48",
"M24,-49C14,-49 6,-38 1,-29C-3,-22 5,-13 11,-7C15,-3 23,2 29,-1C34,-4 40,-6 44,-10C46,-12 45,-17 47,-19C51,-23 48,-30 46,-35C45,-37 46,-40 45,-41C41,-45 36,-48 30,-48C27,-48 21,-50 21,-47",
"M-25,0C-35,0 -43,10 -47,19C-48,21 -47,24 -47,26C-47,31 -46,36 -44,41C-43,42 -41,41 -40,42C-38,44 -36,46 -34,47C-32,48 -29,46 -28,47C-26,49 -21,50 -19,48C-16,45 -12,43 -9,40C-8,39 -5,41 -4,39C-3,37 -2,35 0,33C1,32 0,29 0,27C0,23 1,19 -2,16C-5,13 -5,6 -9,5C-15,3 -21,0 -28,0",
"M25,1C21,1 17,1 13,3C9,5 8,11 5,14C2,17 -3,23 0,26C3,29 3,33 5,36C7,40 9,45 12,48C15,51 19,49 23,49C26,49 30,51 32,49C35,46 42,47 45,44C50,39 53,29 50,22C47,17 43,12 39,8C37,6 36,2 33,1C30,-0 25,-2 23,0C22,1 21,3 19,3"];
break;
case 11:
output_paths = ["M1,-19C-6,-19 -14,-17 -17,-11C-20,-5 -19,3 -14,8C-12,10 -10,9 -8,11C-5,14 -1,13 3,13C5,13 8,14 9,13C12,10 15,7 18,4C21,1 18,-6 16,-10C14,-14 9,-16 6,-19C4,-21 -2,-22 -2,-19",
"M0,-49C-4,-49 -6,-45 -9,-43C-14,-41 -19,-35 -17,-30C-15,-26 -10,-23 -7,-20C-5,-18 -2,-22 0,-20C1,-19 3,-18 4,-19C9,-21 12,-25 16,-29C19,-32 13,-36 11,-40C10,-41 9,-42 8,-43C7,-44 9,-46 8,-47C6,-49 1,-48 -2,-48",
"M0,16C-4,16 -9,17 -12,20C-15,23 -12,30 -14,34C-16,39 -16,47 -11,49C-8,50 -5,49 -2,49C1,49 5,50 8,49C12,47 12,42 14,38C16,34 20,29 17,26C14,23 11,21 8,18C5,15 0,13 -3,15C-5,16 -8,17 -8,19",
"M22,-13C19,-13 19,-7 17,-5C16,-4 16,-1 17,1C18,4 17,7 18,10C19,12 22,11 24,12C28,14 32,13 36,11C40,9 45,8 48,5C53,0 46,-9 41,-14C39,-16 36,-14 33,-14C27,-14 18,-13 18,-7",
"M-48,-13C-48,-5 -51,5 -45,11C-44,12 -41,11 -39,12C-32,15 -22,11 -17,6C-13,2 -16,-6 -20,-10C-26,-16 -37,-17 -44,-13C-47,-11 -50,-7 -50,-3",
"M16,-34C11,-34 11,-23 15,-19C21,-13 33,-13 40,-17C44,-19 48,-22 50,-26C51,-28 50,-31 49,-32C48,-33 50,-36 49,-37C46,-40 46,-44 43,-47C41,-49 36,-48 33,-49C31,-50 28,-51 26,-50C19,-46 9,-34 15,-28",
"M33,12C27,12 23,19 18,24C14,28 13,35 17,39C19,41 19,44 21,46C22,47 25,46 26,47C29,50 34,51 38,49C43,47 45,42 49,38C51,36 47,31 49,29C50,28 48,25 47,23C46,21 45,17 43,16C40,14 36,13 34,11C32,9 26,12 26,15",
"M-29,12C-31,12 -34,10 -35,11C-43,19 -56,29 -51,39C-48,46 -37,46 -32,51C-29,54 -22,48 -20,44C-18,41 -16,39 -13,36C-9,32 -16,26 -18,22C-20,19 -21,15 -23,13C-24,12 -25,14 -26,13C-27,12 -30,11 -31,12",
"M-34,-50C-37,-50 -38,-47 -40,-45C-44,-41 -47,-39 -51,-35C-56,-30 -46,-22 -41,-17C-38,-14 -30,-17 -27,-20C-26,-21 -23,-20 -22,-21C-20,-23 -16,-27 -15,-28C-13,-30 -14,-36 -16,-38C-19,-41 -24,-44 -27,-47C-30,-50 -37,-48 -40,-45"];
break;
case 12:
output_paths = ["M-50,49C-47,46 -41,44 -38,41C-35,38 -35,34 -32,31C-27,26 -20,23 -15,18C-10,13 -9,7 -4,2C-1,-1 4,-1 7,-4C11,-8 13,-13 17,-17C19,-19 19,-22 21,-23C24,-24 26,-27 29,-29C32,-31 36,-31 38,-34C39,-37 42,-38 44,-40C46,-42 47,-48 50,-48",
"M-49,-50C-49,-47 -48,-44 -46,-43C-44,-42 -41,-42 -40,-41C-35,-36 -32,-29 -27,-24C-23,-20 -17,-19 -15,-15C-10,-5 1,1 9,9C14,14 15,24 20,29C22,31 25,32 28,33C32,34 35,39 39,41C43,43 49,46 49,50",
"M-50,-1C-47,-4 -46,-9 -42,-11C-37,-14 -29,-15 -25,-19C-20,-24 -17,-30 -12,-35C-10,-37 -7,-38 -5,-40C-2,-43 -1,-47 2,-50C3,-51 4,-49 4,-48C4,-44 8,-42 10,-39C13,-33 20,-31 25,-26C29,-22 33,-13 36,-10C39,-7 41,-5 44,-2C45,-1 50,-1 49,1C42,15 28,23 17,34C13,38 12,42 8,46C7,47 4,46 3,47C2,48 1,50 0,49C-9,45 -11,33 -18,26C-24,20 -31,17 -37,11C-41,7 -45,0 -51,0"];
break;
case 13:
output_paths = ["M-45,-48C-45,-34 -45,-20 -45,-6",
"M-28,-47C-28,-34 -28,-20 -28,-7",
"M-10,-45C-10,-31 -12,-18 -12,-4",
"M2,-44C11,-44 17,-43 28,-43C33,-43 39,-45 44,-45",
"M3,-27C11,-27 20,-29 28,-26C33,-24 39,-27 44,-27",
"M3,-10C8,-10 13,-11 18,-11C21,-11 24,-11 27,-11C32,-11 37,-9 42,-9",
"M6,5C6,14 6,22 6,31C6,35 9,44 5,44",
"M25,6C25,15 24,25 24,34C24,37 23,41 23,44",
"M38,6C38,13 38,19 38,26C38,29 39,33 38,36C36,39 36,43 36,46",
"M-43,8C-31,8 -20,8 -8,8",
"M-45,25C-33,25 -20,24 -8,24",
"M-46,42C-34,42 -21,42 -9,42"];
break;
case 14:
output_paths = ["M0,-22C-6,-22 -13,-21 -17,-17C-20,-14 -19,-10 -20,-6C-21,-2 -24,2 -22,6C-20,10 -16,13 -12,17C-9,20 -3,21 2,21C4,21 7,22 8,21C10,19 14,19 16,17C18,15 18,12 19,10C20,7 19,3 19,0C19,-4 20,-9 17,-12C12,-17 4,-22 -4,-22",
"M0,-38C-8,-38 -16,-34 -23,-30C-26,-28 -30,-28 -33,-25C-36,-22 -37,-17 -39,-13C-43,-5 -41,5 -38,13C-36,19 -36,26 -32,30C-27,35 -19,36 -12,39C-6,42 1,42 7,42C10,42 13,43 16,42C22,39 29,38 32,32C35,27 37,22 39,16C40,12 40,7 40,2C40,-0 42,-3 40,-5C38,-7 38,-10 37,-13C35,-16 33,-20 31,-23C26,-34 9,-37 -3,-37"];
break;
case 15:
output_paths = ["M-25,-28C-25,-25 -32,-20 -29,-20C-25,-20 -18,-20 -18,-20C-18,-20 -22,-22 -22,-24C-22,-26 -24,-30 -26,-30",
"M24,-30C22,-30 22,-26 21,-25C20,-24 18,-23 18,-21C18,-20 16,-20 17,-19C18,-18 20,-19 21,-19C24,-19 27,-20 30,-20C31,-20 32,-20 32,-20C32,-20 32,-24 31,-25C29,-27 24,-29 24,-32",
"M-25,23C-28,23 -28,28 -30,30C-31,31 -33,33 -32,34C-31,35 -28,34 -27,33C-25,31 -21,34 -19,32C-16,29 -24,26 -24,22",
"M24,19C22,19 23,23 21,25C20,26 17,28 18,29C20,31 23,29 25,29C27,29 30,31 32,29C32,29 31,28 31,28C28,25 25,22 25,18"];
break;
case 16:
output_paths = ["M-38,12C-38,20 -29,26 -23,32C-20,35 -14,34 -10,36C-6,38 -1,38 4,38C6,38 9,39 10,38C12,36 16,37 18,35C22,31 27,27 31,23C34,20 33,10 38,10",
"M-21,-34C-21,-26 -21,-18 -21,-10",
"M18,-33C18,-25 16,-16 16,-8"];
break;
case 17:
output_paths = ["M0,-50C0,-47 -3,-44 -4,-41C-6,-36 -8,-31 -12,-27C-15,-24 -13,-19 -15,-15C-18,-9 -22,-5 -27,0C-31,4 -28,12 -32,16C-38,22 -38,32 -42,40C-44,43 -48,46 -48,50",
"M0,-50C0,-38 13,-29 18,-18C25,-4 26,13 31,28C33,33 37,37 41,41C42,42 41,44 42,45C44,47 48,48 48,51",
"M-49,-50C-49,-40 -39,-34 -35,-25C-34,-23 -37,-19 -35,-17C-32,-14 -30,-10 -29,-6C-28,-4 -29,-1 -28,0C-25,3 -23,7 -22,11C-21,13 -20,14 -19,15C-18,16 -19,17 -19,18C-17,22 -16,26 -14,30C-10,37 0,41 0,49",
"M1,49C1,47 3,45 4,44C7,41 6,37 8,34C10,30 15,29 18,26C21,23 22,17 22,12C22,10 20,7 22,5C24,3 26,1 27,-1C33,-12 35,-25 41,-36C43,-39 43,-43 46,-46C47,-47 46,-49 47,-49",
"M-50,-50C-46,-50 -43,-47 -39,-45C-35,-43 -30,-45 -26,-43C-22,-41 -18,-38 -15,-35C-11,-31 -4,-34 0,-30C2,-28 3,-25 5,-23C9,-19 17,-19 21,-15C29,-7 39,0 50,0",
"M-50,-1C-42,-1 -36,-8 -29,-12C-25,-14 -19,-13 -15,-17C-12,-20 -7,-16 4,-27C7,-30 12,-28 16,-30C22,-33 29,-36 35,-39C39,-41 43,-44 46,-47C47,-48 50,-48 50,-49",
"M-49,0C-42,0 -38,8 -32,10C-23,13 -13,14 -5,18C-1,20 2,24 6,26C11,28 17,29 22,31C32,36 41,41 49,49",
"M-50,49C-50,44 -42,42 -37,40C-34,39 -32,35 -29,34C-24,31 -16,33 -12,29C-7,24 -0,22 6,19C10,17 17,18 20,15C22,13 26,10 29,10C30,10 32,9 33,8C34,7 38,7 39,6C42,3 45,0 49,0",
"M23,-50C23,-26 23,-1 23,23C23,29 24,36 24,42C24,45 24,48 24,51C24,51 24,52 24,52C25,52 25,50 25,49",
"M-27,-49C-27,-16 -25,18 -25,51",
"M-49,-25C-45,-29 -38,-26 -33,-25C-27,-24 -20,-27 -15,-24C-6,-20 5,-28 14,-24C25,-18 39,-22 51,-22",
"M-49,24C-16,24 17,27 50,27",
"M0,-13C-3,-10 -4,-7 -7,-4C-9,-2 -10,0 -12,2C-13,3 -11,5 -12,6C-13,7 -14,7 -13,8C-12,9 -9,7 -8,6C-5,3 3,6 6,3C7,2 11,4 11,4C11,4 10,4 9,3C7,1 2,0 0,-2C-0,-2 -1,-3 -1,-3C-4,-5 -6,-13 -9,-10C-12,-7 -8,-1 -5,2C-3,4 -4,9 -2,11C-2,11 -3,13 -2,13C0,13 -2,8 0,6C2,4 2,2 4,0C6,-2 7,-5 9,-7C9,-7 10,-8 10,-8C9,-9 8,-7 7,-7C5,-7 2,-7 1,-6C-0,-5 -2,-6 -4,-6C-7,-6 -10,-5 -12,-3C-13,-2 -15,-4 -16,-3C-19,0 -8,0 -4,2C0,4 6,12 6,12C6,12 7,7 5,5C2,2 2,-4 2,-9C2,-11 0,-14 0,-16"];
break;
case 18:
output_paths = ["M0,-50C0,-46 5,-45 8,-42C11,-39 15,-37 18,-34C21,-31 21,-28 24,-25C29,-20 35,-17 38,-11C40,-7 48,-6 48,-1C48,2 50,0 50,0C50,0 49,1 48,2C44,6 39,10 36,15C30,27 15,32 6,41C4,43 3,44 1,46C0,47 2,48 1,49C0,50 -1,50 -1,50C-1,50 -2,49 -2,48C-4,44 -8,39 -12,38C-19,36 -24,28 -29,23C-33,19 -39,17 -41,12C-43,8 -45,0 -50,0",
"M1,26C-3,26 -4,20 -8,18C-11,16 -15,16 -18,13C-21,10 -23,5 -26,2C-28,0 -24,-3 -22,-5C-18,-9 -14,-14 -9,-17C-7,-18 0,-27 0,-27C0,-27 1,-23 3,-21C5,-19 9,-19 11,-17C16,-12 19,-5 24,0"];
break;
case 19:
output_paths = ["M-49,0C-46,0 -43,-1 -41,-3C-39,-5 -35,-3 -32,-4C-29,-5 -27,-7 -25,-9C-23,-11 -18,-11 -16,-13C-13,-16 -7,-25 -5,-27C-4,-28 -5,-29 -4,-30C-3,-31 -5,-34 -4,-35C-2,-38 -3,-42 0,-45C1,-46 1,-50 1,-50C1,-50 2,-44 3,-42C5,-39 2,-34 5,-31C8,-28 7,-23 10,-20C14,-16 19,-11 23,-7C27,-3 35,-4 41,-2C44,-1 49,0 49,0C49,0 48,1 48,1C44,5 35,2 33,7C31,11 26,12 23,15C22,16 19,15 18,16C14,20 8,27 5,30C1,34 6,42 2,46C1,47 1,52 1,52C1,52 0,45 0,42C0,39 -2,35 -4,33C-6,31 -3,28 -5,26C-9,22 -11,14 -15,10C-18,7 -22,9 -25,6C-31,-0 -41,0 -50,0",
"M27,-35C21,-35 17,-23 21,-19C23,-17 27,-16 30,-17C36,-19 42,-29 38,-33C35,-36 31,-35 27,-35",
"M28,20C28,24 19,23 16,26C11,31 26,42 32,39C37,36 42,27 38,23C35,20 31,16 28,19C26,21 25,23 23,23",
"M-35,23C-38,23 -41,24 -43,26C-45,28 -44,32 -43,35C-41,40 -31,40 -27,36C-24,33 -25,22 -30,22C-33,22 -39,21 -39,24",
"M-31,-37C-36,-37 -40,-28 -38,-24C-36,-20 -28,-20 -25,-23C-24,-24 -26,-26 -25,-27C-23,-29 -23,-34 -25,-36C-27,-38 -31,-40 -33,-38C-35,-36 -36,-34 -38,-34"];
break;
default:
output_paths = [];
break;
}
return output_paths;
}