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/6G25-1-arMICpp2.js.map
{"version":3,"file":"6G25-1-arMICpp2.js","sources":["../../src/exercices/6e/6G25-1.js"],"sourcesContent":["import { droite, droiteAvecNomLatex } from '../../lib/2d/droites.js'\nimport { point } from '../../lib/2d/points.js'\nimport { polygone } from '../../lib/2d/polygones.js'\nimport { vecteur } from '../../lib/2d/segmentsVecteurs.js'\nimport { texteParPointEchelle } from '../../lib/2d/textes.js'\nimport { rotation, symetrieAxiale, translation } from '../../lib/2d/transformations.js'\nimport { centreGraviteTriangle } from '../../lib/2d/triangle.js'\nimport { choice, combinaisonListes } from '../../lib/outils/arrayOutils'\nimport { texteEnCouleur } from '../../lib/outils/embellissements'\nimport { numAlpha } from '../../lib/outils/outilString.js'\nimport { stringNombre } from '../../lib/outils/texNombre.js'\nimport Exercice from '../Exercice.js'\nimport { colorToLatexOrHTML, mathalea2d } from '../../modules/2dGeneralites.js'\nimport { context } from '../../modules/context.js'\nimport { listeQuestionsToContenu, randint } from '../../modules/outils.js'\nimport { propositionsQcm } from '../../lib/interactif/qcm.js'\nimport { symetrieAnimee } from '../../modules/2dAnimation.js'\nexport const titre = 'Use axial symmetries in triangular tiling'\nexport const interactifReady = true\nexport const interactifType = 'qcm'\nexport const amcReady = true\nexport const amcType = 'AMCHybride'\n\n/**\n* Référence 6G25-1\n* Relecture : Novembre 2021 par EE\n*/\n\nexport const uuid = '49cb2'\nexport const ref = '6G25-1'\nexport default function SymetrieAxialePavageTriangulaire () {\n  Exercice.call(this)\n  this.titre = 'Axial symmetry in a tiling of equilateral triangles'\n  this.nbQuestionsModifiable = false // désactive le formulaire nombre de questions\n  this.nbCols = 1 // Le nombre de colonnes dans l'énoncé LaTeX\n  this.nbColsCorr = 1// Le nombre de colonne pour la correction LaTeX\n  this.pasDeVersionLatex = false // mettre à true si on ne veut pas de l'exercice dans le générateur LaTeX\n  this.pas_de_version_HMTL = false // mettre à true si on ne veut pas de l'exercice en ligne\n  this.nbQuestions = 3\n  this.nbQuestionsModifiable = false\n  // See the Exercise Class for an exhaustive list of available properties.\n  context.fenetreMathalea2d = [0, -0.1, 15, 10]\n  this.sup = false\n  // we Choose three axes from the predefined possibilities... 6 types of axes leaving the paving invariant\n  // a horizontal axis passes through the vertices 0 of two triangles with indices 2n and 2n+2 (unless 2n%14=12)\n  // a vertical axis passes through the centers of gravity of two triangles of index i and i+13 (unless i%14=0)\n  // an axis parallel to [AC] passes through the vertices 0 of two triangles with indices 2n and 2n+14\n  // an axis parallel to [BC] passes through the vertices 0 of two triangles with indices 2n and 2n+12 (unless 2n%14=0)\n  // an axis perpendicular to [BC] passes through the centers of gravity of two triangles of index 2n and 2n+1\n  // an axis perpendicular to [AC] passes through the centers of gravity of two triangles of index 2n+1 and 2n+2 (unless (2n+1)%14=13)\n\n  const axes = [ // contient des couples de numéros dont seront tirés les deux points servant à définir l'axe\n    [[32, 34], [46, 48], [60, 62], [74, 76]], // axes horizontaux\n    [[46, 59], [47, 60], [48, 61], [49, 62], [50, 63], [51, 64]], // axes verticaux\n    [[32, 46], [34, 48], [36, 50], [38, 52]], // axes // à [AC]\n    [[44, 56], [46, 58], [48, 60], [50, 62], [52, 64], [54, 66]], // axes // à [BC]\n    [[4, 5], [2, 3], [0, 1], [14, 15], [28, 29]], // axes perpendiculaires à [BC]\n    [[42, 31], [43, 44], [56, 45], [57, 58], [70, 59], [71, 72]] // axes perpendiculaires à [AC]\n  ]\n  // function which chooses a triangle according to the type of axis and its position returns the chosen triangle, its image and distractors for a MCQ\n  const choisitTriangle = function (typeAxe, index) { // retourne {antecedent: number, image: number, distracteurs: [number]}\n    let figA\n    let antecedent\n    let rangM // rangée de l'antécédent\n    let rangN // rangée de l'image\n    let rangA // rangée de l'axe\n    let deltaRang\n    let image\n    const distracteurs = []\n    switch (typeAxe) {\n      case 0:\n        figA = axes[typeAxe][index][0] - axes[typeAxe][index][0] % 14 // figA est le triangle en tête de rangée dont le point A définit l'axe\n        rangA = Math.floor(figA / 14)\n        if (rangA < 4) { // On est avec un axe bas...\n          if (rangA < 3) {\n            antecedent = randint(0, rangA - 1) * 14 + randint(6, 13)\n          } else {\n            antecedent = randint(1, rangA - 1) * 14 + randint(8, 13)\n          }\n        } else { // on est avec un axe haut ...\n          if (rangA > 4) {\n            antecedent = randint(rangA, 6) * 14 + randint(0, 7)\n          } else {\n            antecedent = randint(rangA, 5) * 14 + randint(0, 7)\n          }\n        }\n        rangM = Math.floor(antecedent / 14)\n        deltaRang = rangA - rangM\n        if (deltaRang > 0) { // l'axis is above the'antécédent\n          image = antecedent + (deltaRang - 1) * 26 + 13\n          distracteurs.push(image - 13)\n          if (image + 13 < 98) distracteurs.push(image + 13)\n          distracteurs.push(image - deltaRang * 2 + 1, image + deltaRang * 2 - 1)\n        } else { // l'axis is below the'antécédent\n          image = antecedent + deltaRang * 26 - 13\n          distracteurs.push(image + 13)\n          if (image - 13 > 0) distracteurs.push(image - 13)\n          distracteurs.push(image + deltaRang * 2 - 1, image - deltaRang * 2 + 1)\n        }\n\n        break\n      case 1:\n        figA = axes[typeAxe][index][0] % 13 // figA est le triangle en pied de verticale dont le centre de gravité est sur l'axe\n        rangA = figA // le numéro c'est aussi le rang de gauche à droite\n        // on row rowM, rowA + rowM*13 is the number of the figure crossed by the axis\n        rangM = randint(2, 5) // on choisit la rangée de l'antécédent\n        if (rangA < 10) { // On est avec un axe à gauche\n        // the antecedent must be chosen between rankM*14 and rankA +rankM*13\n          antecedent = randint(rangM * 14 + 1, rangA + rangM * 13 - 1)\n        } else { // on est avec un axe à droite\n        // the antecedent must be chosen between rankA +rankM*13 and rankM*14-1\n          antecedent = randint(rangA + rangM * 13 + 1, rangA + rangM * 14)\n        }\n        deltaRang = rangA + rangM * 13 - antecedent\n        if (deltaRang > 0) { // l'axis is to the right of'antécédent\n          image = rangA + rangM * 13 + deltaRang\n          distracteurs.push(image - 1)\n          if (image + 13 < 98) distracteurs.push(image + 13)\n          if (image - 13 > 0) {\n            if (image % 14 === 13) {\n              distracteurs.push(image - 2)\n            } else {\n              if (choice([false, true])) {\n                distracteurs.push(image - 13)\n              } else {\n                distracteurs.push(image - 14)\n              }\n            }\n          }\n          if (image % 14 !== 13) distracteurs.push(image + 1)\n        } else { // l'axis is to the left of the'antécédent\n          image = rangA + rangM * 13 + deltaRang\n          distracteurs.push(image + 1)\n          if (image + 14 < 98) {\n            if (image % 14 === 0) {\n              distracteurs.push(image + 14)\n            } else {\n              distracteurs.push(image + 13)\n            }\n          }\n          if (image - 13 > 0) distracteurs.push(image - 13)\n          if (image % 14 !== 0) distracteurs.push(image - 1)\n        }\n\n        break\n      case 2: // axe parallèle à [AC]\n        figA = axes[typeAxe][index][0] % 14 // figA est le triangle de la première rangée dont le côté [AC] définit l'axe\n        rangA = figA >> 1 // le rang de gauche à droite est le numéro de la figure divisé par 2 car il n'y a que les figures paires qui comptent ici\n        // on row rowM, rowA + rowM*13 is the number of the figure crossed by the axis\n        rangM = randint(rangA, 6 - rangA) // on choisit la rangée verticale de l'antécédent\n        if (rangA < 4) { // On est avec un axe à gauche\n        // the antecedent must be chosen between rankM*14 and 2*(rankA-1) + rankM*14\n          antecedent = randint(rangM * 14, (rangA - 1) * 2 + rangM * 14)\n        } else { // on est avec un axe à droite\n        // the antecedent must be chosen between rankA*2 + 1 + rankM*14 and rankM*14+(rankA+1)*2\n          antecedent = randint(rangA * 2 + 1 + rangM * 14, rangM * 14 + (rangA + 1) * 2)\n        }\n        deltaRang = rangA - ((antecedent % 14 - antecedent % 2) >> 1)\n        // the axis is to the right of the antecedent\n        image = antecedent - 10 * deltaRang - 1 + 12 * (antecedent % 2) // ne me demandez pas d'où je sors ça !!!\n        distracteurs.push(image - 1)\n        if (deltaRang > 0) {\n          distracteurs.push(antecedent + 2 * (deltaRang + 1))\n        } else {\n          distracteurs.push(antecedent + 3 * (deltaRang - 1))\n        }\n        if (image - 13 > 0) {\n          if (image % 14 === 13) {\n            distracteurs.push(image - 2)\n          } else {\n            distracteurs.push(image - 13)\n          }\n        } else {\n          distracteurs.push(image + 13)\n        }\n\n        if (image % 14 !== 13) distracteurs.push(image + 1)\n\n        break\n      case 3:\n        figA = axes[typeAxe][index][0] // figA un nombre pair entre 44 et 54 inclus. l'axe passe par son sommet gauche\n        rangA = (figA - 42) >> 1 // le rang de gauche à droite. rangA va de 1 à 6 inclus\n        if (rangA < 4) { // l'antecedent will be to the left of the'axe\n          rangM = randint(0, Math.min(2 + rangA, 6)) // on choisit la rangée verticale de l'antécédent\n          // the antecedent must be chosen between 0 and ?\n          antecedent = rangM * 14 + 2 * randint(0, 2 + rangA - rangM)\n        } else { // l'antecedent will be to the right of'axe\n          rangM = randint(rangA - 2, 6) // on choisit la rangée verticale de l'antécédent\n          // the antecedent must be chosen between rankA*2 + 1 + rankM*14 and rankM*14+(rankA+1)*2\n          antecedent = rangM * 14 + randint(rangA * 2, 13)\n        }\n        rangN = antecedent % 14\n        rangN -= rangN % 2\n        rangN = rangN / 2\n        deltaRang = rangA - rangN + 3 - rangM\n        // the axis is to the right of the antecedent\n        image = antecedent + 16 * deltaRang - 15 - 2 * (antecedent % 2) // ne me demandez pas d'où je sors ça !!!\n        if (image > 0) {\n          distracteurs.push(image - 1)\n        }\n        if (image < 97) {\n          distracteurs.push(image + 1)\n        }\n        if (image - 13 > 0) {\n          if (image % 14 === 13) {\n            distracteurs.push(image - 2)\n          } else {\n            distracteurs.push(image - 13)\n          }\n        } else {\n          distracteurs.push(image + 14)\n        }\n        if (image + 13 < 97) {\n          if (image % 14 === 0) {\n            distracteurs.push(image + 2)\n          } else {\n            distracteurs.push(image + 13)\n          }\n        }\n        break\n      case 4:\n        figA = axes[typeAxe][index][0] // figA un nombre pair entre 44 et 54 inclus. l'axe passe par son sommet gauche\n        rangA = figA % 14 // le rang de gauche à droite. rangA va de 1 à 6 inclus\n        if (index < 2) { // l'antecedent will be under'axe qui est sous la diagonale\n          rangM = randint(0, 3 + index) // on choisit la rangée verticale de l'antécédent\n          antecedent = rangM * 14 + randint((3 + rangM - index) * 2, 13)\n        } else if (index > 2) { // l'antecedent will be above the'axe qui est au dessus\n          rangM = randint(index, 6) // on choisit la rangée verticale de l'antécédent\n          antecedent = rangM * 14 + randint(0, rangM + 2 * (4 - index))\n        } else { // l'antecedent is everywhere except on the diagonal because it is the axis\n          rangM = randint(0, 6)\n          antecedent = rangM * 14 + randint(0, 13, [rangM * 2, rangM * 2 + 1, rangM * 2 - 1])\n        }\n        deltaRang = 4 - index * 2 + 16 * rangM - (antecedent >> 1) * 2 // Vaudrait mieux que ça marche... je ne sais pas où je vais chercher tout ça !\n        if (deltaRang > 0) {\n          deltaRang >>= 1\n        } else {\n          deltaRang = -((-deltaRang) >> 1)\n        }\n        // the axis is to the right of the antecedent\n        image = antecedent - 12 * deltaRang\n        if (image > 0) {\n          distracteurs.push(image - 1)\n        }\n        if (image < 97) {\n          distracteurs.push(image + 1)\n        }\n        if (image - 13 > 0) {\n          if (image % 14 === 13) {\n            distracteurs.push(image - 2)\n          } else {\n            distracteurs.push(image - 13)\n          }\n        } else {\n          distracteurs.push(image + 14)\n        }\n        if (image + 13 < 97) {\n          if (image % 14 === 0) {\n            distracteurs.push(image + 2)\n          } else {\n            distracteurs.push(image + 13)\n          }\n        }\n        break\n      case 5:\n        figA = axes[typeAxe][index][0] // figA un nombre pair entre 44 et 54 inclus. l'axe passe par son sommet gauche\n        rangA = Math.floor(figA / 14) // le rang de gauche à droite. rangA va de 1 à 6 inclus\n        if (index < 4) { // l'antecedent will be under'axe\n          rangM = randint(1, rangA - 2) // on choisit la rangée verticale de l'antécédent\n          rangN = randint(rangA - rangM, 4 * (rangA - rangM) + 2 * (figA % 2) - 2)\n          antecedent = rangM * 14 + rangN\n        } else { // l'antecedent will be above the'axe\n          rangM = randint(rangA - 1, 5) // on choisit la rangée verticale de l'antécédent\n          rangN = randint(4 * (rangA - rangM) + 2 * (figA % 2) + 2, 12)\n          antecedent = rangM * 14 + rangN\n        }\n        deltaRang = 44 + 14 * (index >> 1) + 2 * (index % 2) + 10 * (rangM - rangA) - (antecedent >> 1) * 2 // Vaudrait mieux que ça marche... je ne sais pas où je vais chercher tout ça !\n        if (deltaRang > 0) {\n          deltaRang >>= 1\n        } else {\n          deltaRang = -((-deltaRang) >> 1)\n        }\n        // the axis is to the right of the antecedent\n        image = antecedent + 14 * deltaRang - 14 * (1 + antecedent % 2)\n        if (image > 0) {\n          distracteurs.push(image - 1)\n        }\n        if (image < 97) {\n          distracteurs.push(image + 1)\n        }\n        if (image - 13 > 0) {\n          if (image % 14 === 13) {\n            distracteurs.push(image - 2)\n          } else {\n            distracteurs.push(image - 13)\n          }\n        } else {\n          distracteurs.push(image + 14)\n        }\n        if (image + 13 < 97) {\n          if (image % 14 === 0) {\n            distracteurs.push(image + 2)\n          } else {\n            distracteurs.push(image + 13)\n          }\n        }\n        break\n    }\n    return { antecedent, image, distracteurs }\n  }\n\n  this.nouvelleVersion = function (numeroExercice) {\n    this.listeQuestions = [] // tableau contenant la liste des questions\n    this.listeCorrections = []\n    this.autocorrection = []\n    const objetsEnonce = []\n    let paramsEnonce = {}\n    let texte = ''\n    let texteCorr = ''\n    let typesDeQuestionsDisponibles\n    const scaleFigure = 1\n    // construction of the triangular paving\n    const triAngles = [{}] // tableau des triangles { tri: polygone (le triangle), gra: point(son centre de gravité), num: texteParPoint(son numéro)} l'indice du triangle est son numéro\n    const images = []\n    const A = point(0, 0, '')\n    const B = point(1.2, 0, '')\n    const C = rotation(B, A, 60, '')\n    const v = vecteur(1.2, 0)\n    const w = rotation(vecteur(1.2, 0), A, 60)\n    triAngles[0] = { tri: polygone(A, B, C), gra: centreGraviteTriangle(A, B, C) }\n    triAngles[1] = { tri: rotation(triAngles[0].tri, B, -60), gra: rotation(triAngles[0].gra, B, -60) }\n    for (let i = 0; i < 7; i++) {\n      if (i !== 0) {\n        triAngles[i * 2] = { tri: translation(triAngles[(i - 1) * 2].tri, v), gra: translation(triAngles[(i - 1) * 2].gra, v) }\n        triAngles[i * 2 + 1] = { tri: translation(triAngles[(i - 1) * 2 + 1].tri, v), gra: translation(triAngles[(i - 1) * 2 + 1].gra, v) }\n      }\n      for (let j = 1; j < 7; j++) {\n        triAngles[i * 2 + j * 14] = { tri: translation(triAngles[i * 2 + (j - 1) * 14].tri, w), gra: translation(triAngles[i * 2 + (j - 1) * 14].gra, w) }\n        triAngles[i * 2 + 1 + j * 14] = { tri: translation(triAngles[i * 2 + 1 + (j - 1) * 14].tri, w), gra: translation(triAngles[i * 2 + 1 + (j - 1) * 14].gra, w) }\n      }\n    }\n    for (let i = 0; i < triAngles.length; i++) {\n      triAngles[i].n = texteParPointEchelle(stringNombre(i), triAngles[i].gra, 'medium', 'black', 0.5)\n      objetsEnonce.push(triAngles[i].tri, triAngles[i].n)\n    }\n    paramsEnonce = { xmin: 0, ymin: -0.1, xmax: 15, ymax: 10, pixelsParCm: 30 * scaleFigure, zoom: 1.5, scale: scaleFigure * 0.7, mainlevee: false }\n    if (!this.sup) {\n      this.nbQuestions = 3\n      typesDeQuestionsDisponibles = [0, 1, 2]\n    } else {\n      this.nbQuestions = 6\n      typesDeQuestionsDisponibles = [0, 1, 2, 3, 4, 5]\n    }\n    const listeTypesDeQuestions = combinaisonListes(typesDeQuestionsDisponibles, 3)\n    const couleurs = ['blue', 'green', 'red', 'gray', 'magenta', 'purple']\n    let M\n    let N\n    const d = []\n    const dLatex = []\n    const question = []\n    let choix\n    for (let i = 0; i < this.nbQuestions; i++) {\n      choix = randint(0, axes[listeTypesDeQuestions[i]].length - 1)\n      switch (listeTypesDeQuestions[i]) { // ici on définit les 3 axes\n        case 0: // axe horizontal\n        case 2: // axe parallèle à [AC]\n        case 3: // axe parallèle à [BC]\n          M = triAngles[axes[listeTypesDeQuestions[i]][choix][0]].tri.listePoints[0]\n          N = triAngles[axes[listeTypesDeQuestions[i]][choix][1]].tri.listePoints[0]\n          break\n        case 1: // axe vertical\n        case 4: // axe perpendiculaire à [BC]\n        case 5: // axe perpendiculaire à [AC]\n          M = triAngles[axes[listeTypesDeQuestions[i]][choix][0]].gra\n          N = triAngles[axes[listeTypesDeQuestions[i]][choix][1]].gra\n          d[i] = droite(M, N, '', couleurs[i])\n          break\n      }\n      d[i] = droite(M, N, '', couleurs[i])\n      dLatex[i] = droiteAvecNomLatex(d[i], `(d_${i + 1})`)\n      dLatex[i].epaisseur = 3\n      dLatex[i].opacite = 0.6\n\n      objetsEnonce.push(dLatex[i])\n      // here we choose the figures and create the questions\n      question[i] = choisitTriangle(listeTypesDeQuestions[i], choix)\n      triAngles[question[i].antecedent].tri.couleurDeRemplissage = colorToLatexOrHTML(couleurs[i])\n      triAngles[question[i].antecedent].tri.opaciteDeRemplissage = 0.7\n    }\n    this.introduction = mathalea2d(paramsEnonce, objetsEnonce)\n    for (let i = 0; i < this.nbQuestions; i++) {\n      texte = `${texteEnCouleur('What is the image of the figure ' + question[i].antecedent + ' by axial axis symmetry ' + `$${dLatex[i][1].texte}$` + ' ?', couleurs[i])}`\n      texteCorr = `${texteEnCouleur('The image of the figure ' + question[i].antecedent + ' by axial axis symmetry ' + `$${dLatex[i][1].texte}$` + ' is the figure ' + question[i].image + '.', couleurs[i])}`\n      if (context.isAmc) {\n        if (i === 0) {\n          this.autoCorrection[0] = {\n            enonce: this.introduction + '\\\\\\\\\\not' + numAlpha(0) + texte + '\\\\\\\\\\not',\n            propositions: [\n              {\n                type: 'mthMono',\n                propositions: [\n                  {\n                    texte: question[i].image,\n                    statut: true,\n                    feedback: ''\n                  }\n                ]\n              }\n            ]\n          }\n        } else {\n          this.autoCorrection[0].enonce += `${numAlpha(i)} ${texte} \\\\\\\\\\n`\n          this.autoCorrection[0].propositions.push({\n            type: 'mthMono',\n            propositions: [\n              {\n                texte: question[i].image,\n                statut: true,\n                feedback: ''\n              }\n            ]\n          })\n        }\n\n        for (let j = 0; j < question[i].distracteurs.length; j++) {\n          this.autoCorrection[0].propositions[i].propositions.push({\n            texte: question[i].distracteurs[j],\n            statut: false,\n            feedback: ''\n          })\n        }\n      } else {\n        this.autoCorrection[i] = {\n          enonce: (context.isAmc ? this.introduction + '\\\\\\\\' + texte : texte),\n          propositions: [{\n            texte: question[i].image,\n            statut: true,\n            feedback: ''\n          }\n          ]\n        }\n        for (let j = 0; j < question[i].distracteurs.length; j++) {\n          this.autoCorrection[i].propositions.push({\n            texte: question[i].distracteurs[j],\n            statut: false,\n            feedback: ''\n          })\n        }\n      }\n      objetsEnonce.push(symetrieAnimee(triAngles[question[i].antecedent].tri, d[i], `id=\"anim${numeroExercice}-${i}\" dur=\"2s\" repeatCount=\"2\"`))\n      images[i] = symetrieAxiale(triAngles[question[i].antecedent].tri, d[i])\n      images[i].couleurDeRemplissage = colorToLatexOrHTML(couleurs[i])\n      images[i].opaciteDeRemplissage = 0.3\n      objetsEnonce.push(images[i])\n      // We add to the text of the correction, the figure of the correction\n      // textCorr += mathalea2d(paramsCorrection, objectsCorrection)\n      if (this.interactif && !context.isAmc) {\n        texte += '<br>' + propositionsQcm(this, i).texte\n      }\n      this.listeQuestions.push(texte)\n      this.listeCorrections.push(texteCorr)\n    }\n    listeQuestionsToContenu(this) // On envoie l'exercice à la fonction de mise en page\n    // this.contentCorrection += '<br>' + mathalea2d(paramsEnonce, objectsEnonce)\n    this.contenuCorrection += mathalea2d(paramsEnonce, objetsEnonce)\n    if (context.isHtml) {\n      for (let i = 0; i < this.nbQuestions; i++) {\n        this.contenuCorrection += `<br><button class=\"btn ui labeled icon button\" style=\"margin:10px\" onclick=\"document.getElementById('anim${numeroExercice}-${i}').beginElement()\"><i class=\"redo circle icon\"> </i>Restart symmetry animation relative to ${d[i].nom}</button>`\n      }\n    }\n  }\n  this.besoinFormulaireCaseACocher = ['Number of axes of symmetry = 6 if checked, 3 otherwise', false]\n}\n"],"names":["titre","interactifReady","interactifType","amcReady","amcType","uuid","ref","SymetrieAxialePavageTriangulaire","Exercice","context","axes","choisitTriangle","typeAxe","index","figA","antecedent","rangM","rangN","rangA","deltaRang","image","distracteurs","randint","choice","numeroExercice","objetsEnonce","paramsEnonce","texte","texteCorr","typesDeQuestionsDisponibles","scaleFigure","triAngles","images","A","point","B","C","rotation","v","vecteur","w","polygone","centreGraviteTriangle","i","translation","j","texteParPointEchelle","stringNombre","listeTypesDeQuestions","combinaisonListes","couleurs","M","N","d","dLatex","question","choix","droite","droiteAvecNomLatex","colorToLatexOrHTML","mathalea2d","texteEnCouleur","numAlpha","symetrieAnimee","symetrieAxiale","propositionsQcm","listeQuestionsToContenu"],"mappings":"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"}