You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
363 lines
14 KiB
363 lines
14 KiB
var longueur = 28;
|
|
var largeur = 15;
|
|
var lterrain = lt*0.9;
|
|
var hterrain = ht*0.85;
|
|
var touchelong = lt*0.05;
|
|
var touchelarg = ht*0.075;
|
|
|
|
var TeX = '';
|
|
var nom = '';
|
|
|
|
|
|
function exporterTex(){
|
|
let nomFichier;
|
|
nom = prompt("Veuillez entrer le nom du schéma", "Schéma1");
|
|
if(nom == null) { return; }
|
|
|
|
let i;
|
|
|
|
TeX = TeX.concat('\\', 'begin{figure}\n');
|
|
TeX = TeX.concat('\\', 'begin{center}\n');
|
|
TeX = TeX.concat('\\', 'resizebox{.48\\linewidth}{!}{\n');
|
|
TeX = TeX.concat('\\', 'begin{tikzpicture}\n');
|
|
|
|
if(type_terrain == 0) {
|
|
fullTerrain();
|
|
}
|
|
else if(type_terrain == 1) {
|
|
demiTerrainBas();
|
|
}
|
|
else if(type_terrain == 2) {
|
|
demiTerrainHaut();
|
|
}
|
|
|
|
|
|
TeX = TeX.concat('','\n');
|
|
TeX = TeX.concat('\\', 'end{tikzpicture}\n}\n');
|
|
TeX = TeX.concat('\\', 'end{center}\n');
|
|
TeX = TeX.concat('\\', 'caption{');
|
|
TeX = TeX.concat(nom, '}\n');
|
|
TeX = TeX.concat('\\', 'end{figure}');
|
|
nomFichier = nom + ".tex";
|
|
download(nomFichier, TeX);
|
|
TeX = '';
|
|
}
|
|
|
|
//Permet de trouver la position en longueur du terrain (vertical) en LaTeX
|
|
function findX(dim) {
|
|
let ajust = dim - touchelong;
|
|
let long2 = lterrain;
|
|
if(type_terrain == 1){
|
|
console.log("test");
|
|
long2 = long;
|
|
longueur = 15;
|
|
ajust = dim - l;
|
|
}
|
|
return Math.round(ajust*longueur/long2*100)/100;
|
|
}
|
|
|
|
//Permet de trouver la position en largeur du terrain (vertical) en LaTeX
|
|
function findY(dim) {
|
|
let ajust = dim - touchelarg;
|
|
let haut2 = hterrain;
|
|
let neg = -1;
|
|
if(type_terrain == 1){
|
|
console.log("test");
|
|
haut2 = haut;
|
|
largeur = 14;
|
|
ajust = dim - haut;
|
|
ajust = ajust * neg + touchelarg;
|
|
}
|
|
return Math.round(ajust*largeur/haut2*100)/100;
|
|
}
|
|
|
|
/* FONCTIONS TYPE TERRAIN 2 */
|
|
// //Permet de trouver la position en longueur du terrain (vertical) en LaTeX
|
|
// function findX(dim) {
|
|
// let ajust = dim - touchelong;
|
|
// let long2 = lterrain;
|
|
// if(type_terrain == 2){
|
|
// long2 = long;
|
|
// longueur = 15;
|
|
// ajust = dim - l;
|
|
// }
|
|
// return Math.round(ajust*longueur/long2*100)/100;
|
|
// }
|
|
|
|
// //Permet de trouver la position en largeur du terrain (vertical) en LaTeX
|
|
// function findY(dim) {
|
|
// let ajust = dim - touchelarg;
|
|
// let haut2 = hterrain;
|
|
// if(type_terrain == 2){
|
|
// haut2 = haut;
|
|
// largeur = 14;
|
|
// ajust = dim + haut - touchelarg;
|
|
// }
|
|
// return Math.round(ajust*largeur/haut2*100)/100;
|
|
// }
|
|
|
|
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);
|
|
}
|
|
|
|
function fullTerrain(){
|
|
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', '%%%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', '%%%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('', '};\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/Écrans\n');
|
|
for (i = 0; i < deple.length/4; i++) {
|
|
let r = deple[3+i*4];
|
|
if (r.ec == true){
|
|
TeX = TeX.concat('\\', 'draw[thick] [-[] (' );
|
|
} else {
|
|
TeX = TeX.concat('\\', 'draw[thick] [-latex] (' );
|
|
}
|
|
TeX = TeX.concat(deple[0+i*4].jbase + 1, ') .. 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, ') .. 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');
|
|
}
|
|
}
|
|
}
|
|
|
|
function demiTerrainBas() {
|
|
TeX = TeX.concat('\n\n', '%%%Terrain');
|
|
TeX = TeX.concat('\n', '\\draw (0,0) -- (0,14);');
|
|
TeX = TeX.concat('\n', '\\draw (15,0) -- (15,14);');
|
|
TeX = TeX.concat('\n', '\\draw (0,14) -- (15,14);');
|
|
TeX = TeX.concat('\n', '\\draw (0,0) -- (15,0);');
|
|
TeX = TeX.concat('\n', '\\draw (15,14) -- (0,14);');
|
|
TeX = TeX.concat('\n', '\\draw (5,14) arc [radius=2.4, start angle=180, end angle= 360];');
|
|
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 (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 (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\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(findX(zone[i].x), ',');
|
|
TeX = TeX.concat(findY(zone[i].y), ') -- ');
|
|
}
|
|
TeX = TeX.concat('','cycle;');
|
|
}
|
|
|
|
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('(', findX(z.x));
|
|
TeX = TeX.concat(', ', findY(z.y));
|
|
TeX = TeX.concat(') {\\LARGE ', i+1);
|
|
TeX = TeX.concat('', '};\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(findX(ty), ',');
|
|
TeX = TeX.concat(findY(tx), ') -- (');
|
|
TeX = TeX.concat(findX(ry), ',');
|
|
TeX = TeX.concat(findY(rx), ');');
|
|
TeX = TeX.concat('\n', '\\draw (');
|
|
TeX = TeX.concat(findX(py), ',');
|
|
TeX = TeX.concat(findY(px), ') -- (');
|
|
TeX = TeX.concat(findX(oy), ',');
|
|
TeX = TeX.concat(findY(ox), ');');
|
|
TeX = TeX.concat('\n', '\\draw (');
|
|
TeX = TeX.concat(findX(ty), ',');
|
|
TeX = TeX.concat(findY(tx), ') -- (');
|
|
TeX = TeX.concat(findX(py), ',');
|
|
TeX = TeX.concat(findY(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/Écrans\n');
|
|
for (i = 0; i < deple.length/4; i++) {
|
|
let r = deple[3+i*4];
|
|
if (r.ec == true){
|
|
TeX = TeX.concat('\\', 'draw[thick] [-[] (' );
|
|
} else {
|
|
TeX = TeX.concat('\\', 'draw[thick] [-latex] (' );
|
|
}
|
|
TeX = TeX.concat(deple[0+i*4].jbase + 1, ') .. controls (');
|
|
TeX = TeX.concat(findX(deple[1+i*4].y),', ');
|
|
TeX = TeX.concat(findY(deple[1+i*4].x),') and ');
|
|
TeX = TeX.concat('(', '');
|
|
TeX = TeX.concat(findX(deple[2+i*4].y), ', ');
|
|
TeX = TeX.concat(findY(deple[2+i*4].x), ') .. (');
|
|
TeX = TeX.concat(findX(deple[3+i*4].y), ', ');
|
|
TeX = TeX.concat(findY(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, ') .. controls (');
|
|
TeX = TeX.concat(findX(dribblement[1+i*4].y),', ');
|
|
TeX = TeX.concat(findY(dribblement[1+i*4].x),') and ');
|
|
TeX = TeX.concat('(', '');
|
|
TeX = TeX.concat(findX(dribblement[2+i*4].y), ', ');
|
|
TeX = TeX.concat(findY(dribblement[2+i*4].x), ') .. (');
|
|
TeX = TeX.concat(findX(dribblement[3+i*4].y), ', ');
|
|
TeX = TeX.concat(findY(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(findX(t.y),',');
|
|
TeX = TeX.concat(findY(t.x),') -- (');
|
|
TeX = TeX.concat(findX((l+0.44*long)+(0.12*long/2)),',');
|
|
TeX = TeX.concat(findY(haut),');\n');
|
|
}
|
|
}
|
|
}
|
|
|
|
function demiTerrainHaut(){
|
|
|
|
|
|
}
|