xxxxxxxxxx
97
let img;
let lines = [];
let points = [];
let t = [[{"x":104,"y":126},{"x":98,"y":125},{"x":93,"y":126},{"x":87,"y":131},{"x":81,"y":141},{"x":78,"y":152},{"x":79,"y":163},{"x":85,"y":171},{"x":95,"y":173},{"x":108,"y":169},{"x":117,"y":163}],[{"x":138,"y":107},{"x":137,"y":109},{"x":135,"y":118},{"x":134,"y":129},{"x":138,"y":141},{"x":145,"y":146},{"x":154,"y":147},{"x":163,"y":144},{"x":169,"y":139},{"x":172,"y":133},{"x":173,"y":127},{"x":171,"y":118},{"x":167,"y":108},{"x":155,"y":100},{"x":150,"y":101},{"x":142,"y":109}],[{"x":225,"y":107},{"x":224,"y":105},{"x":222,"y":104},{"x":221,"y":101},{"x":220,"y":98},{"x":218,"y":94},{"x":214,"y":92},{"x":210,"y":92},{"x":206,"y":92},{"x":200,"y":96},{"x":198,"y":98},{"x":195,"y":105},{"x":193,"y":115},{"x":192,"y":126},{"x":193,"y":135},{"x":197,"y":142},{"x":202,"y":145},{"x":207,"y":145},{"x":215,"y":139},{"x":219,"y":136},{"x":222,"y":130},{"x":223,"y":128},{"x":224,"y":118},{"x":224,"y":107},{"x":223,"y":101},{"x":221,"y":84},{"x":220,"y":77},{"x":219,"y":72},{"x":219,"y":69},{"x":219,"y":67},{"x":219,"y":67},{"x":219,"y":67},{"x":219,"y":68},{"x":217,"y":82},{"x":217,"y":95},{"x":220,"y":109},{"x":224,"y":121},{"x":226,"y":129},{"x":230,"y":135},{"x":233,"y":137},{"x":235,"y":137},{"x":240,"y":135},{"x":243,"y":133}],[{"x":255,"y":79},{"x":255,"y":80},{"x":256,"y":84},{"x":256,"y":86},{"x":257,"y":94},{"x":258,"y":106},{"x":260,"y":120},{"x":262,"y":127},{"x":264,"y":134},{"x":264,"y":137},{"x":264,"y":137},{"x":264,"y":137}],[{"x":281,"y":81},{"x":280,"y":82},{"x":280,"y":86},{"x":281,"y":93},{"x":282,"y":102},{"x":282,"y":112},{"x":283,"y":120},{"x":284,"y":126},{"x":284,"y":128},{"x":284,"y":133},{"x":284,"y":133},{"x":284,"y":133},{"x":284,"y":133},{"x":284,"y":132},{"x":285,"y":127},{"x":286,"y":121},{"x":289,"y":113},{"x":293,"y":104},{"x":296,"y":96},{"x":300,"y":89},{"x":306,"y":82},{"x":308,"y":80},{"x":311,"y":79},{"x":313,"y":80},{"x":315,"y":83},{"x":315,"y":89},{"x":316,"y":97},{"x":317,"y":103},{"x":318,"y":111},{"x":319,"y":120},{"x":320,"y":121},{"x":321,"y":124},{"x":322,"y":125},{"x":326,"y":126},{"x":328,"y":124}],[{"x":379,"y":79},{"x":378,"y":78},{"x":377,"y":77},{"x":376,"y":76},{"x":374,"y":75},{"x":373,"y":74},{"x":371,"y":72},{"x":367,"y":71},{"x":364,"y":71},{"x":359,"y":73},{"x":356,"y":74},{"x":353,"y":78},{"x":347,"y":85},{"x":345,"y":89},{"x":342,"y":99},{"x":342,"y":102},{"x":343,"y":108},{"x":346,"y":112},{"x":350,"y":114},{"x":356,"y":116},{"x":358,"y":116},{"x":362,"y":116},{"x":366,"y":115},{"x":369,"y":111},{"x":372,"y":107},{"x":376,"y":103},{"x":379,"y":98},{"x":384,"y":87},{"x":385,"y":83},{"x":387,"y":76},{"x":389,"y":71},{"x":389,"y":71},{"x":389,"y":67},{"x":389,"y":67},{"x":389,"y":67},{"x":388,"y":67},{"x":386,"y":72},{"x":385,"y":77},{"x":383,"y":85},{"x":382,"y":92},{"x":382,"y":100},{"x":383,"y":107},{"x":383,"y":113},{"x":384,"y":120},{"x":384,"y":125},{"x":385,"y":135},{"x":385,"y":137},{"x":385,"y":140},{"x":383,"y":142},{"x":381,"y":146},{"x":378,"y":148},{"x":371,"y":152},{"x":369,"y":152},{"x":364,"y":152},{"x":360,"y":151},{"x":358,"y":149},{"x":356,"y":148},{"x":353,"y":145},{"x":352,"y":143}],[{"x":462,"y":55},{"x":461,"y":55},{"x":461,"y":56},{"x":461,"y":58},{"x":460,"y":62},{"x":460,"y":69},{"x":459,"y":77},{"x":457,"y":87},{"x":456,"y":98},{"x":456,"y":108},{"x":456,"y":116},{"x":456,"y":123},{"x":456,"y":128},{"x":457,"y":131},{"x":459,"y":133},{"x":464,"y":132},{"x":468,"y":130},{"x":475,"y":128},{"x":478,"y":126},{"x":479,"y":126}],[{"x":437,"y":76},{"x":437,"y":76},{"x":438,"y":76},{"x":442,"y":76},{"x":445,"y":75},{"x":451,"y":75},{"x":458,"y":75},{"x":466,"y":75},{"x":471,"y":76},{"x":478,"y":77},{"x":482,"y":78},{"x":483,"y":78},{"x":485,"y":78}],[{"x":507,"y":83},{"x":507,"y":83},{"x":507,"y":83},{"x":507,"y":84},{"x":505,"y":91},{"x":504,"y":101},{"x":502,"y":110},{"x":501,"y":114},{"x":500,"y":120},{"x":498,"y":128},{"x":496,"y":133},{"x":496,"y":133},{"x":496,"y":138},{"x":496,"y":139},{"x":496,"y":138},{"x":497,"y":135},{"x":498,"y":132},{"x":502,"y":124},{"x":503,"y":120},{"x":507,"y":109},{"x":510,"y":104},{"x":510,"y":104},{"x":515,"y":98},{"x":519,"y":96},{"x":522,"y":95},{"x":524,"y":94},{"x":529,"y":92},{"x":530,"y":92},{"x":532,"y":92},{"x":534,"y":95},{"x":535,"y":102},{"x":536,"y":107},{"x":536,"y":110}],[{"x":556,"y":106},{"x":556,"y":106},{"x":555,"y":106},{"x":556,"y":106},{"x":559,"y":103},{"x":560,"y":103},{"x":563,"y":101},{"x":565,"y":100},{"x":567,"y":99},{"x":570,"y":98},{"x":572,"y":98},{"x":575,"y":98},{"x":576,"y":98},{"x":577,"y":100},{"x":578,"y":101},{"x":578,"y":104},{"x":579,"y":107},{"x":579,"y":111},{"x":579,"y":114},{"x":578,"y":117},{"x":577,"y":120},{"x":577,"y":123},{"x":577,"y":126},{"x":576,"y":131},{"x":576,"y":136},{"x":575,"y":140},{"x":575,"y":144},{"x":575,"y":147},{"x":575,"y":149},{"x":576,"y":151},{"x":578,"y":153},{"x":582,"y":154},{"x":585,"y":154}],[{"x":575,"y":130},{"x":574,"y":129},{"x":574,"y":129},{"x":573,"y":128},{"x":572,"y":127},{"x":571,"y":127},{"x":569,"y":126},{"x":566,"y":126},{"x":564,"y":126},{"x":561,"y":126},{"x":558,"y":127},{"x":555,"y":128},{"x":552,"y":129},{"x":549,"y":131},{"x":546,"y":133},{"x":543,"y":134},{"x":541,"y":137},{"x":540,"y":138},{"x":540,"y":140},{"x":541,"y":142},{"x":543,"y":144},{"x":546,"y":146},{"x":549,"y":147},{"x":554,"y":148},{"x":559,"y":148},{"x":564,"y":147},{"x":569,"y":146},{"x":573,"y":145}],[{"x":618,"y":107},{"x":617,"y":109},{"x":617,"y":112},{"x":616,"y":117},{"x":614,"y":123},{"x":612,"y":128},{"x":609,"y":135},{"x":606,"y":143},{"x":604,"y":147},{"x":602,"y":154},{"x":601,"y":158},{"x":601,"y":162},{"x":600,"y":164}],[{"x":643,"y":116},{"x":643,"y":118},{"x":641,"y":128},{"x":639,"y":131},{"x":636,"y":141},{"x":633,"y":148},{"x":629,"y":156},{"x":626,"y":162},{"x":625,"y":167},{"x":625,"y":167},{"x":625,"y":167},{"x":628,"y":165},{"x":629,"y":164},{"x":632,"y":158},{"x":635,"y":152},{"x":639,"y":146},{"x":643,"y":139},{"x":651,"y":130},{"x":654,"y":128},{"x":659,"y":125},{"x":665,"y":124},{"x":667,"y":124},{"x":670,"y":126},{"x":671,"y":132},{"x":671,"y":139},{"x":669,"y":148},{"x":668,"y":156},{"x":665,"y":167},{"x":664,"y":171},{"x":662,"y":178},{"x":661,"y":183},{"x":662,"y":186},{"x":668,"y":186}],[{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":55},{"x":251,"y":54},{"x":251,"y":54},{"x":251,"y":54},{"x":251,"y":54},{"x":250,"y":54},{"x":249,"y":54},{"x":249,"y":54},{"x":249,"y":54},{"x":249,"y":54},{"x":249,"y":54},{"x":249,"y":55},{"x":249,"y":56},{"x":249,"y":57},{"x":250,"y":57},{"x":250,"y":57},{"x":251,"y":57},{"x":251,"y":57},{"x":252,"y":57},{"x":252,"y":56},{"x":252,"y":56},{"x":252,"y":56},{"x":252,"y":56},{"x":252,"y":56},{"x":252,"y":56},{"x":251,"y":56},{"x":250,"y":56},{"x":250,"y":57},{"x":250,"y":57},{"x":250,"y":58},{"x":250,"y":58},{"x":250,"y":58},{"x":251,"y":58},{"x":251,"y":58},{"x":252,"y":57},{"x":252,"y":57},{"x":252,"y":56},{"x":252,"y":56},{"x":252,"y":56},{"x":252,"y":56},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":57},{"x":251,"y":57},{"x":251,"y":57},{"x":251,"y":57},{"x":251,"y":57},{"x":251,"y":57},{"x":251,"y":57},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":55},{"x":251,"y":55},{"x":251,"y":55},{"x":251,"y":55},{"x":251,"y":55},{"x":251,"y":55},{"x":250,"y":55},{"x":250,"y":55},{"x":250,"y":56},{"x":250,"y":57},{"x":250,"y":57},{"x":250,"y":57},{"x":251,"y":57},{"x":251,"y":57},{"x":251,"y":57},{"x":251,"y":57},{"x":252,"y":57},{"x":252,"y":57},{"x":252,"y":57},{"x":252,"y":57},{"x":252,"y":56},{"x":252,"y":56},{"x":252,"y":56},{"x":252,"y":55},{"x":252,"y":55},{"x":252,"y":55},{"x":251,"y":55},{"x":251,"y":55},{"x":251,"y":55},{"x":251,"y":55},{"x":251,"y":55},{"x":251,"y":56},{"x":251,"y":56},{"x":251,"y":56}],[{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":622,"y":86},{"x":622,"y":86},{"x":622,"y":86},{"x":622,"y":87},{"x":622,"y":87},{"x":622,"y":88},{"x":622,"y":88},{"x":622,"y":88},{"x":622,"y":88},{"x":622,"y":88},{"x":622,"y":88},{"x":623,"y":88},{"x":623,"y":88},{"x":623,"y":88},{"x":623,"y":88},{"x":623,"y":87},{"x":623,"y":87},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":622,"y":86},{"x":622,"y":86},{"x":622,"y":86},{"x":621,"y":86},{"x":621,"y":86},{"x":621,"y":86},{"x":621,"y":87},{"x":621,"y":87},{"x":621,"y":87},{"x":621,"y":88},{"x":621,"y":88},{"x":621,"y":88},{"x":622,"y":88},{"x":622,"y":88},{"x":622,"y":88},{"x":623,"y":88},{"x":623,"y":88},{"x":623,"y":88},{"x":623,"y":88},{"x":623,"y":88},{"x":623,"y":87},{"x":623,"y":87},{"x":623,"y":87},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":86},{"x":622,"y":86},{"x":622,"y":86},{"x":622,"y":86},{"x":622,"y":87},{"x":622,"y":87},{"x":622,"y":87},{"x":622,"y":87},{"x":622,"y":88},{"x":622,"y":88},{"x":622,"y":88},{"x":622,"y":88},{"x":622,"y":88},{"x":622,"y":88},{"x":622,"y":88},{"x":623,"y":88},{"x":623,"y":88},{"x":623,"y":88},{"x":623,"y":88},{"x":623,"y":87},{"x":623,"y":86},{"x":623,"y":86},{"x":623,"y":85},{"x":623,"y":85},{"x":623,"y":85},{"x":623,"y":85},{"x":623,"y":85},{"x":623,"y":85},{"x":623,"y":85},{"x":623,"y":85},{"x":623,"y":85},{"x":623,"y":85},{"x":623,"y":85}],[{"x":137,"y":108},{"x":137,"y":108},{"x":137,"y":108},{"x":137,"y":108},{"x":137,"y":108},{"x":137,"y":108},{"x":137,"y":108},{"x":137,"y":108},{"x":137,"y":108},{"x":137,"y":108},{"x":137,"y":108},{"x":137,"y":108},{"x":137,"y":108},{"x":138,"y":108},{"x":138,"y":108},{"x":139,"y":107},{"x":139,"y":107},{"x":140,"y":107},{"x":140,"y":107},{"x":140,"y":107},{"x":140,"y":107},{"x":140,"y":107},{"x":140,"y":107},{"x":141,"y":107},{"x":141,"y":107},{"x":142,"y":107},{"x":142,"y":107},{"x":142,"y":107},{"x":143,"y":107},{"x":143,"y":107},{"x":143,"y":107},{"x":143,"y":107},{"x":143,"y":107},{"x":143,"y":107}],[{"x":378,"y":78},{"x":378,"y":78},{"x":378,"y":78},{"x":378,"y":78},{"x":378,"y":78},{"x":378,"y":78},{"x":378,"y":78},{"x":378,"y":78},{"x":378,"y":78},{"x":379,"y":78},{"x":379,"y":78},{"x":379,"y":78},{"x":379,"y":78},{"x":379,"y":78},{"x":379,"y":78},{"x":379,"y":78},{"x":379,"y":78},{"x":379,"y":78},{"x":379,"y":79},{"x":379,"y":79},{"x":380,"y":79},{"x":380,"y":79},{"x":380,"y":80},{"x":380,"y":80},{"x":380,"y":80},{"x":380,"y":80},{"x":380,"y":80},{"x":380,"y":80},{"x":381,"y":80},{"x":381,"y":80},{"x":381,"y":81},{"x":381,"y":81},{"x":382,"y":81},{"x":382,"y":82},{"x":382,"y":82},{"x":382,"y":82},{"x":382,"y":82},{"x":383,"y":82},{"x":383,"y":82},{"x":383,"y":82},{"x":383,"y":82},{"x":383,"y":82},{"x":383,"y":82},{"x":383,"y":82},{"x":383,"y":82},{"x":383,"y":82},{"x":383,"y":82},{"x":383,"y":82},{"x":383,"y":82},{"x":383,"y":82},{"x":383,"y":83},{"x":383,"y":83},{"x":383,"y":83},{"x":383,"y":83},{"x":383,"y":83},{"x":383,"y":83},{"x":383,"y":83},{"x":383,"y":83}],[{"x":571,"y":145},{"x":571,"y":145},{"x":571,"y":145},{"x":571,"y":145},{"x":571,"y":145},{"x":571,"y":145},{"x":571,"y":145},{"x":571,"y":145},{"x":571,"y":145},{"x":571,"y":145},{"x":571,"y":145},{"x":571,"y":145},{"x":571,"y":145},{"x":572,"y":145},{"x":572,"y":145},{"x":572,"y":145},{"x":572,"y":145},{"x":572,"y":145},{"x":573,"y":145},{"x":573,"y":145},{"x":573,"y":145},{"x":573,"y":145},{"x":573,"y":145},{"x":573,"y":145},{"x":573,"y":145},{"x":573,"y":145},{"x":574,"y":145},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144},{"x":574,"y":144}],[{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":574,"y":130},{"x":575,"y":130},{"x":575,"y":130},{"x":575,"y":130},{"x":575,"y":130},{"x":575,"y":130},{"x":575,"y":131},{"x":575,"y":131},{"x":575,"y":131},{"x":575,"y":131},{"x":575,"y":131},{"x":575,"y":131},{"x":575,"y":131},{"x":575,"y":131},{"x":575,"y":131},{"x":575,"y":131},{"x":575,"y":131},{"x":575,"y":131},{"x":575,"y":131},{"x":575,"y":131},{"x":575,"y":131},{"x":575,"y":131},{"x":575,"y":131},{"x":575,"y":131}]]
function preload() {
img = loadImage('codingtrain.png');
}
function setup() {
createCanvas(1.5 * 500, 1.5 * 170);
// document.body.requestFullscreen();
lines = t;
}
function draw() {
background(255);
// image(img, 0, 0, width, height);
if (mouseIsPressed && winMouseX <= width && winMouseY <= height) {
points.push({
x: winMouseX,
y: winMouseY
});
} else if (points.length > 0) {
lines.push(points);
points = [];
}
stroke(255, 0, 0);
strokeWeight(5);
noFill();
beginShape();
for (let p of points) {
vertex(p.x, p.y);
}
endShape();
stroke(0);
strokeWeight(1);
noFill();
for (let l of lines) {
beginShape();
for (let p of l) {
vertex(p.x, p.y)
}
endShape();
}
}
function saveP() {
createP(JSON.stringify(lines));
}
function deleteLast(){
lines.pop()
}
function rgp(points = [], epsilon = 0.1) {
const p1 = points[0];
const p2 = points[points.length - 1];
const { index, dist } = furthestPoint(p1, p2, points);
if (dist > epsilon) {
return [rgp(points.slice(0, index + 1), epsilon), rgp(points.slice(index).slice(1), epsilon)];
} else {
return p1 == p2 ? [p1] : [p1, p2];
}
}
function furthestPoint(p1, p2, points) {
let dmax = 0;
let maxI = -1;
for (let i = 0; i < points.length; i++) {
const dtemp = perpendicularDist(points[i], p1, p2);
if (dtemp > dmax) {
dmax = dtemp;
maxI = i;
}
}
return { index: maxI, dist: dmax };
}
function perpendicularDist(p, p1, p2) {
if (p1 == p || p == p2) return 0;
const a = p.copy().sub(p1);
const b = p.copy().sub(p2);
const c = a.cross(b).mag();
const d = p2.copy().sub(p1).mag();
return c / d;
}