function exporterTex(){ let TeX = ''; let i; TeX = TeX.concat('\\', 'begin{tikzpicture}'); TeX = TeX.concat('\n\n', '%%%Zone d\'action'); if(zone.length != 0) { TeX = TeX.concat('\n','\\fill[color=gray!20] '); for (i = 0; i < zone.length; i++) { TeX = TeX.concat('', '('); TeX = TeX.concat(findY(zone[i].y), ','); TeX = TeX.concat(findX(zone[i].x), ') -- '); } TeX = TeX.concat('','cycle;'); } TeX = TeX.concat('\n\n', '%%%Terrain'); TeX = TeX.concat('\n', '\\draw (0,0) -- (0,28);'); TeX = TeX.concat('\n', '\\draw (15,0) -- (15,28);'); TeX = TeX.concat('\n', '\\draw (0,28) -- (15,28);'); TeX = TeX.concat('\n', '\\draw (0,0) -- (15,0);'); TeX = TeX.concat('\n', '\\draw (15,14) -- (0,14);'); TeX = TeX.concat('\n', '\\draw (7.5,14) circle [radius=2.4];;'); TeX = TeX.concat('\n', '\\draw (7.5,1.776) circle [radius=0.2];;'); TeX = TeX.concat('\n', '\\draw (6.5,1.575) -- (8.5,1.575);'); TeX = TeX.concat('\n', '\\draw (7.5,26.2) circle [radius=0.2];;'); TeX = TeX.concat('\n', '\\draw (6.5,26.425) -- (8.5,26.425);'); TeX = TeX.concat('\n', '\\draw (5,0) -- (5,5.8);'); TeX = TeX.concat('\n', '\\draw (10,0) -- (10,5.8);'); TeX = TeX.concat('\n', '\\draw (10,5.8) -- (5,5.8);;'); TeX = TeX.concat('\n', '\\draw (9.3,5.8) arc [radius=1.8, start angle=0, end angle= 180];'); TeX = TeX.concat('\n', '\\draw (10,28) -- (10,22.2);'); TeX = TeX.concat('\n', '\\draw (5,28) -- (5,22.2);'); TeX = TeX.concat('\n', '\\draw (5,22.2) -- (10,22.2);'); TeX = TeX.concat('\n', '\\draw (5.6,22.2) arc [radius=1.8, start angle=180, end angle= 360]; '); TeX = TeX.concat('\n', '\\draw (14.1,1.7) arc [radius=6.6, start angle=0, end angle= 180];'); TeX = TeX.concat('\n', '\\draw (.9,0) -- (.9,1.7);'); TeX = TeX.concat('\n', '\\draw (14.1,0) -- (14.1,1.7);'); TeX = TeX.concat('\n', '\\draw (0.9,26.3) arc [radius=6.6, start angle=180, end angle= 360];'); TeX = TeX.concat('\n', '\\draw (.9,28) -- (.9,26.2);'); TeX = TeX.concat('\n', '\\draw (14.1,28) -- (14.1,26.2);'); TeX = TeX.concat('\n\n', '%%%Joueurs\n'); for (i = 0; i < joueurs.length; i++) { let z = joueurs[i]; TeX = TeX.concat('\\','node[draw, circle] ('); TeX = TeX.concat('', z.nom); TeX = TeX.concat('', ') at '); TeX = TeX.concat('(', findY(z.y)); TeX = TeX.concat(', ', findX(z.x)); TeX = TeX.concat(') {\\LARGE ', i+1); TeX = TeX.concat('j', '};\n'); } TeX = TeX.concat('\n', '%%%Adversaires\n'); for (i = 0; i < adversaire.length; i++) { let r = adversaire[i]; let tx = r.a + r.rayon*Math.cos(r.angle); let ty = r.b+ r.rayon *Math.sin(r.angle); let px = r.a + r.rayon*Math.cos(r.inverse); let py = r.b+ r.rayon *Math.sin(r.inverse); let rx = tx + r.rretour *Math.cos(r.rangle); let ry = ty+ r.rretour *Math.sin(r.rangle); let ox = px + r.rretour*Math.cos(r.rangle); let oy = py + r.rretour *Math.sin(r.rangle); TeX = TeX.concat('\n', '\\draw ('); TeX = TeX.concat(findY(ty), ','); TeX = TeX.concat(findX(tx), ') -- ('); TeX = TeX.concat(findY(ry), ','); TeX = TeX.concat(findX(rx), ');'); TeX = TeX.concat('\n', '\\draw ('); TeX = TeX.concat(findY(py), ','); TeX = TeX.concat(findX(px), ') -- ('); TeX = TeX.concat(findY(oy), ','); TeX = TeX.concat(findX(ox), ');'); TeX = TeX.concat('\n', '\\draw ('); TeX = TeX.concat(findY(ty), ','); TeX = TeX.concat(findX(tx), ') -- ('); TeX = TeX.concat(findY(py), ','); TeX = TeX.concat(findX(px), ');\n'); } TeX = TeX.concat('\n', '%%%Passes\n'); for (i = 0; i < passes.length; i++) { TeX = TeX.concat('\\', 'draw[thick,dashed] [-latex] ('); TeX = TeX.concat(passes[i].x.nom, ') -- ('); TeX = TeX.concat(passes[i].x2.nom, ');'); TeX = TeX.concat('', '\n'); } TeX = TeX.concat('\n', '%%%Déplacements\n'); for (i = 0; i < deple.length/4; i++) { TeX = TeX.concat('\\', 'draw[thick] [-latex] (' ); TeX = TeX.concat(deple[0+i*4].jbase + 1, 'j) .. controls ('); TeX = TeX.concat(findY(deple[1+i*4].y),', '); TeX = TeX.concat(findX(deple[1+i*4].x),') and '); TeX = TeX.concat('(', ''); TeX = TeX.concat(findY(deple[2+i*4].y), ', '); TeX = TeX.concat(findX(deple[2+i*4].x), ') .. ('); TeX = TeX.concat(findY(deple[3+i*4].y), ', '); TeX = TeX.concat(findX(deple[3+i*4].x), ');\n'); } TeX = TeX.concat('\n', '%%%Dribbles\n'); for (i = 0; i < dribblement.length/4; i++) { TeX = TeX.concat('\\', '\draw[thick, decoration = {zigzag}, decorate] [-latex] (' ); TeX = TeX.concat(dribblement[0+i*4].dbase + 1, 'j) .. controls ('); TeX = TeX.concat(findY(dribblement[1+i*4].y),', '); TeX = TeX.concat(findX(dribblement[1+i*4].x),') and '); TeX = TeX.concat('(', ''); TeX = TeX.concat(findY(dribblement[2+i*4].y), ', '); TeX = TeX.concat(findX(dribblement[2+i*4].x), ') .. ('); TeX = TeX.concat(findY(dribblement[3+i*4].y), ', '); TeX = TeX.concat(findX(dribblement[3+i*4].x), ');\n'); } TeX = TeX.concat('\n', '%%%Tir\n'); let t; for (i = 0; i < joueurs.length; i++) { let r = joueurs[i]; if (r.tiring == true) { t = r; TeX = TeX.concat('\\', '\draw[thick, dashed] [-latex] (' ); TeX = TeX.concat(findY(t.y),','); TeX = TeX.concat(findX(t.x),') -- ('); TeX = TeX.concat(findY(ht/2),','); TeX = TeX.concat(findX(lt-lt*0.072),');\n'); } } TeX = TeX.concat('\n', '%%%Dribbles\n'); // A faire : tir LaTeX TeX = TeX.concat('','\n'); TeX = TeX.concat('\\', 'end{tikzpicture}'); download("schéma.tex", TeX); } //Permet de trouver la position en longueur du terrain (vertical) en LaTeX + questions décimales function findX(dim) { let longueur = 28; return Math.round((dim*longueur/lt)*10)/10; } //Permet de trouver la position en largeur du terrain (vertical) en LaTeX function findY(dim) { let largeur = 15; return Math.round((dim*largeur/ht)*10)/10; } // function roundHalf(num) { // return Math.round(num*2)/2; // } function download(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:application/x-tex;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); }