HEX
Server: Apache
System: Linux vps.mmtprep.com 4.18.0-477.21.1.el8_8.x86_64 #1 SMP Thu Aug 10 13:51:50 EDT 2023 x86_64
User: mmtprep (1001)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/Pavage-56LGp3ed.js.map
{"version":3,"file":"Pavage-56LGp3ed.js","sources":["../../src/modules/Pavage.js"],"sourcesContent":["import { point, tracePoint } from '../lib/2d/points.js'\nimport { barycentre, polygone, polygoneRegulier } from '../lib/2d/polygones.js'\nimport { vecteur } from '../lib/2d/segmentsVecteurs.js'\nimport { texteParPosition } from '../lib/2d/textes.js'\nimport { homothetie, rotation, similitude, translation } from '../lib/2d/transformations.js'\nimport { nombreAvecEspace } from '../lib/outils/texNombre'\nimport { egal } from './outils.js'\n\n/**\n * Classe Pavage : permet de créer des pavages de polygones en un tour de main et de manipuler les polygones qu'il contient\n * @author Jean-Claude Lhote\n * publié le 10/12/2020\n */\nexport function Pavage () {\n  this.type = 1\n  this.polygones = []\n  this.barycentres = []\n  this.tracesCentres = []\n  this.numeros = []\n  this.coordonnees = []\n  this.Nx = 1\n  this.Ny = 1\n  this.echelle = 20\n  this.fenetre = {}\n\n  this.construit = function (type = 1, Nx = 1, Ny = 1, taille = 3) {\n    const nettoieObjets = function (objets) {\n      let barywhite, baryblack // c'est drôle non ?\n      for (let i = 0; i < objets.length; i++) {\n        barywhite = barycentre(objets[i])\n        for (let j = i + 1; j < objets.length;) {\n          baryblack = barycentre(objets[j])\n          if (egal(barywhite.x, baryblack.x, 0.1) && egal(barywhite.y, baryblack.y, 0.1)) {\n            objets.splice(j, 1)\n          } else {\n            j++\n          }\n        }\n      }\n    }\n    let A\n    let B\n    let v\n    let w\n    let C\n    let D\n    let XMIN = 0\n    let YMIN = 0\n    let XMAX = 0\n    let YMAX = 0\n    let P1\n    let P2\n    let P3\n    let P4\n    let P5\n    let P6\n    let P7\n    let P8\n    let P9\n    let P10\n    let P11\n    let P12\n    A = point(0, 0)\n    B = point(taille, 0)\n    switch (type) {\n      case 1: // triangles équilatéraux\n        v = vecteur(A, B)\n        w = rotation(v, A, -90)\n        w = homothetie(w, A, 1.73205)\n        for (let k = 0; k < Ny; k++) {\n          for (let j = 0; j < Nx; j++) {\n            P1 = polygoneRegulier(A, B, 3)\n            P2 = rotation(P1, A, 60)\n            P3 = rotation(P1, A, -60)\n            P4 = rotation(P1, A, -120)\n            this.polygones.push(P1, P2, P3, P4)\n            for (const p of P1.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P2.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P3.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P4.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            A = translation(A, v)\n            B = translation(B, v)\n          }\n          A = translation(A, vecteur(-Nx * v.x, -2 * v.y))\n          B = translation(B, vecteur(-Nx * v.x, -2 * v.y))\n          A = translation(A, w)\n          B = translation(B, w)\n        }\n        break\n\n      case 2: // carrés\n        v = vecteur(A, B)\n        v = homothetie(v, A, 2)\n        w = rotation(v, A, -90)\n        for (let k = 0; k < Ny; k++) {\n          for (let j = 0; j < Nx; j++) {\n            P1 = polygoneRegulier(A, B, 4)\n            P2 = rotation(P1, A, 90)\n            P3 = rotation(P1, A, -90)\n            P4 = rotation(P1, A, -180)\n            this.polygones.push(P1, P2, P3, P4)\n\n            for (const p of P1.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P2.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P3.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P4.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            A = translation(A, v)\n            B = translation(B, v)\n          }\n          A = translation(A, vecteur(-Nx * v.x, -2 * v.y))\n          B = translation(B, vecteur(-Nx * v.x, -2 * v.y))\n          A = translation(A, w)\n          B = translation(B, w)\n        }\n        break\n\n      case 3: // hexagones\n        B = homothetie(B, A, 0.8)\n        v = vecteur(A, B)\n        v = homothetie(v, A, 2)\n        w = rotation(v, A, -90)\n        w = homothetie(w, A, 1.73205)\n        for (let k = 0; k < Ny; k++) {\n          for (let j = 0; j < Nx; j++) {\n            C = similitude(B, A, 30, 1.1547)\n            P1 = polygoneRegulier(A, C, 6)\n            P2 = rotation(P1, A, -120)\n            P3 = translation(P1, v)\n            P4 = translation(P2, v)\n            this.polygones.push(P1, P2, P3, P4)\n\n            for (const p of P1.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P2.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P3.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P4.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            A = translation(A, vecteur(2 * v.x, 0))\n            B = translation(B, vecteur(2 * v.x, 0))\n          }\n          A = translation(A, vecteur(-Nx * 2 * v.x, w.y))\n          B = translation(B, vecteur(-Nx * 2 * v.x, w.y))\n        }\n        break\n\n      case 4: // Pavage 3².4.3.4\n        v = vecteur(A, B)\n        v = homothetie(v, A, 2.73205)\n        w = rotation(v, A, -90)\n        for (let k = 0; k < Ny; k++) {\n          for (let j = 0; j < Nx; j++) {\n            C = rotation(B, A, 60)\n            P1 = polygoneRegulier(A, B, 3)\n            P2 = rotation(P1, A, 150)\n            P6 = rotation(P1, B, -150)\n            P7 = rotation(P1, B, 60)\n            P9 = rotation(P2, C, 150)\n            P10 = rotation(P9, A, -60)\n            P11 = rotation(P2, B, 60)\n            P12 = rotation(P6, A, -60)\n            P3 = polygoneRegulier(A, C, 4)\n            P4 = polygoneRegulier(C, B, 4)\n            P5 = rotation(P4, B, -150)\n            P8 = rotation(P3, A, 150)\n\n            this.polygones.push(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12)\n\n            for (const p of P1.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P2.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P11.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n\n            for (const p of P12.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P3.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P4.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P5.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P6.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P7.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P8.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P9.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P10.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            A = translation(A, vecteur(v.x, 0))\n            B = translation(B, vecteur(v.x, 0))\n          }\n          A = translation(A, vecteur(-Nx * v.x, w.y))\n          B = translation(B, vecteur(-Nx * v.x, w.y))\n        }\n        break\n      case 5: // 4.8²\n        v = vecteur(A, B)\n        v = homothetie(v, A, 2.4142)\n        w = rotation(v, A, -90)\n\n        for (let k = 0; k < Ny; k++) {\n          for (let j = 0; j < Nx; j++) {\n            C = rotation(A, B, -135)\n            P1 = polygoneRegulier(A, B, 8)\n            P2 = polygoneRegulier(B, A, 8)\n            P3 = translation(P1, v)\n            P4 = translation(P2, v)\n            P5 = polygoneRegulier(C, B, 4)\n            P6 = translation(P5, v)\n            P7 = translation(P5, w)\n            P8 = translation(P6, w)\n            this.polygones.push(P1, P2, P3, P4, P5, P6, P7, P8)\n\n            for (const p of P1.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P2.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P3.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P4.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P5.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P6.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P7.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P8.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n\n            A = translation(A, vecteur(2 * v.x, 0))\n            B = translation(B, vecteur(2 * v.x, 0))\n          }\n          A = translation(A, vecteur(-Nx * 2 * v.x, 2 * w.y))\n          B = translation(B, vecteur(-Nx * 2 * v.x, 2 * w.y))\n        }\n        break\n\n      case 6: // Pavage hexagonal d'écolier\n        v = vecteur(A, B)\n        w = rotation(v, A, 60)\n        v = vecteur(v.x + w.x, v.y + w.y) // v=AB+CB\n        w = rotation(v, A, -60)\n\n        for (let k = 0; k < Ny; k++) {\n          for (let j = 0; j < Nx; j++) {\n            C = rotation(A, B, 120)\n            D = rotation(B, C, 60)\n            P1 = polygone(A, B, C, D)\n            P2 = rotation(P1, C, -60)\n            P3 = rotation(P1, A, 60)\n            P4 = translation(P2, v)\n            P5 = translation(P1, v)\n            P6 = translation(P3, v)\n            P7 = translation(P1, w)\n            P8 = translation(P2, w)\n            P9 = translation(P3, w)\n            this.polygones.push(P1, P2, P3, P4, P5, P6, P7, P8, P9)\n\n            for (const p of P1.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P2.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P3.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P4.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P5.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P6.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P7.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P8.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P9.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            A = translation(A, vecteur(w.x + v.x, w.y + v.y))\n            B = translation(B, vecteur(w.x + v.x, w.y + v.y))\n          }\n          A = translation(A, vecteur(-Nx * (w.x + v.x) + 2 * w.x - v.x, 2 * w.y - v.y))\n          B = translation(B, vecteur(-Nx * (w.x + v.x) + 2 * w.x - v.x, 2 * w.y - v.y))\n        }\n        break\n      case 7:\n        v = vecteur(A, B)\n        v = homothetie(v, A, 2)\n        w = rotation(v, A, -60)\n\n        for (let k = 0; k < Ny; k++) {\n          for (let j = 0; j < Nx; j++) {\n            C = rotation(A, B, -120)\n            D = rotation(B, C, -120)\n            P1 = polygoneRegulier(A, B, 6)\n            P2 = polygoneRegulier(C, B, 3)\n            P3 = rotation(P2, C, 180)\n            P4 = translation(P3, w)\n            P5 = translation(P2, w)\n            P6 = rotation(P1, B, 180)\n            this.polygones.push(P1, P2, P3, P6, P5, P4)\n\n            for (const p of P1.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P2.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P3.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P4.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P5.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            for (const p of P6.listePoints) {\n              XMIN = Math.min(XMIN, p.x)\n              XMAX = Math.max(XMAX, p.x)\n              YMIN = Math.min(YMIN, p.y)\n              YMAX = Math.max(YMAX, p.y)\n            }\n            A = translation(A, v)\n            B = translation(B, v)\n          }\n          A = translation(A, vecteur(-Nx * v.x + 2 * w.x - v.x, 2 * w.y - v.y))\n          B = translation(B, vecteur(-Nx * v.x + 2 * w.x - v.x, 2 * w.y - v.y))\n        }\n        break\n    }\n    this.echelle = 80 / Math.sqrt(XMAX - XMIN)\n    this.fenetre = {\n      xmin: XMIN - 0.5,\n      ymin: YMIN - 0.5,\n      xmax: XMAX + 0.5,\n      ymax: YMAX + 0.5,\n      pixelsParCm: this.echelle,\n      scale: this.echelle / 30\n    }\n    nettoieObjets(this.polygones) // On supprime les doublons éventuels (grâce à leur barycentre)\n    // On ajoute les N°\n    this.nb_polygones = this.polygones.length // Le nombre de polygones du pavage qui sert dans les boucles\n\n    for (let i = 0; i < this.nb_polygones; i++) {\n      this.barycentres.push(barycentre(this.polygones[i]))\n      this.tracesCentres.push(tracePoint(this.barycentres[i], 'blue'))\n      this.tracesCentres[i].opacite = 0.5\n      this.tracesCentres[i].taille = 2\n      this.coordonnees.push([this.barycentres[i].x, this.barycentres[i].y])\n      this.numeros.push(texteParPosition(nombreAvecEspace(i + 1), this.barycentres[i].x + 0.5, this.barycentres[i].y, 'milieu', 'black', 50 / this.echelle, 0, true))\n    }\n  }\n}\n\nexport function pavage () {\n  return new Pavage()\n}\n"],"names":["Pavage","type","Nx","Ny","taille","nettoieObjets","objets","barywhite","baryblack","i","barycentre","j","egal","A","B","v","w","C","D","XMIN","YMIN","XMAX","YMAX","P1","P2","P3","P4","P5","P6","P7","P8","P9","P10","P11","P12","point","vecteur","rotation","homothetie","k","polygoneRegulier","p","translation","similitude","polygone","tracePoint","texteParPosition","nombreAvecEspace","pavage"],"mappings":"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"}