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/_Pavages_et_transformations-jEyFTTB5.js.map
{"version":3,"file":"_Pavages_et_transformations-jEyFTTB5.js","sources":["../../src/exercices/6e/_Pavages_et_transformations.js"],"sourcesContent":["import { codageAngleDroit } from '../../lib/2d/angles.js'\nimport { arc } from '../../lib/2d/cercle.js'\nimport { codageSegments } from '../../lib/2d/codages.js'\nimport { droiteHorizontaleParPoint, droiteVerticaleParPoint, mediatrice } from '../../lib/2d/droites.js'\nimport { milieu, point, pointIntersectionDD, pointSurDroite, tracePoint } from '../../lib/2d/points.js'\nimport { barycentre, polygone } from '../../lib/2d/polygones.js'\nimport { segment, vecteur } from '../../lib/2d/segmentsVecteurs.js'\nimport { labelPoint, latexParCoordonnees, texteParPoint } from '../../lib/2d/textes.js'\nimport { rotation, similitude, translation } from '../../lib/2d/transformations.js'\nimport { choice } from '../../lib/outils/arrayOutils'\nimport { miseEnEvidence, texteEnCouleurEtGras } from '../../lib/outils/embellissements'\nimport { numAlpha } from '../../lib/outils/outilString.js'\nimport FractionEtendue from '../../modules/FractionEtendue.js'\nimport { imagePointParTransformation } from '../../modules/imagePointParTransformation.js'\nimport Exercice from '../Exercice.js'\nimport { assombrirOuEclaircir, colorToLatexOrHTML, fixeBordures, mathalea2d } from '../../modules/2dGeneralites.js'\nimport { context } from '../../modules/context.js'\nimport { egal, gestionnaireFormulaireTexte, listeQuestionsToContenuSansNumero, randint } from '../../modules/outils.js'\nimport { ajouteChampTexteMathLive } from '../../lib/interactif/questionMathLive.js'\nimport { rotationAnimee, symetrieAnimee, translationAnimee } from '../../modules/2dAnimation.js'\nimport { setReponse } from '../../lib/interactif/gestionInteractif.js'\n\nexport const interactifReady = true\nexport const interactifType = 'mathLive'\nexport const amcReady = true\nexport const amcType = 'AMCHybride'\n/**\n * Trouver l'image d'une figure par diverses transformations dans un pavage (7 motifs différents)\n * @author Jean-Claude Lhote\n * fonction servant à tous les niveaux\n * Références 5G12-1, 6G25-2, 4G11-1, 3G12-1\n * Relecture : Novembre 2021 par EE\n */\nexport default function PavagesEtTransformations () {\n  Exercice.call(this) // Héritage de la classe Exercice()\n\n  // this.title = \"Find the image of a figure by central symmetry\";\n  this.consigne = ''\n  this.nbQuestions = 1\n  this.nbQuestionsModifiable = false\n  this.nbCols = 1\n  this.nbColsCorr = 1\n  this.listeAvecNumerotation = false\n  this.besoinFormulaire2Texte = ['Choice of pavings', 'Numbers separated by hyphens\\nChoice between 1 and 7\\nChoice 8 for a mix of all tilings']\n  this.sup2 = 8\n  // this.sup = 1 // 1 for axial symmetry, 2 for central symmetry, 3 for translations, and 4 for rotations; parameter set by the respective variants.\n  // context.isHtml ? this.spacingCorr = 2.5: this.spacingCorr = 1.5\n  this.nouvelleVersion = function (numeroExercice) {\n    this.listeQuestions = []\n    this.listeCorrections = [] // Liste de questions corrigées\n    const typeDePavage = gestionnaireFormulaireTexte({\n      max: 7,\n      defaut: 8,\n      melange: 8,\n      nbQuestions: this.nbQuestions,\n      saisie: this.sup2\n    })\n    const objetsEnonce = []\n    const objetsCorrection = []\n    if (this.level === 3) {\n      this.sup = 4\n    } else if (this.level === 4) {\n      this.sup = 3\n    } else if (this.level === 5) {\n      this.sup = 2\n    } else this.sup = 1\n    // lists of tilings [nx,ny,xB,yB,xC,yC,xD,yD,zoom,angle]: 0=squares, 1=kite 2=quadri concave 3=quadri any 4=parallelograms 5=triangles isosceles rectangles 6=equilateral triangles 7=rhombuses\n    const paves = [[5, 5, 4, 0, 4, 4, 0, 4, 30, 0], [5, 5, 6, 0, 8, 8, 0, 6, 60, -9], [5, 5, 8, 0, 4, 4, 2, 8, 50, 0], [5, 5, 4, 0, 6, 4, 0, 6, 50, 5], [4, 6, 8, 0, 7, 4, -1, 4, 50, 10], [5, 5, 8, 0, 4, 4, 0, 8, 50, 0], [5, 5, 4, 0, 3, 2 * Math.sin(Math.PI / 3), 2, 4 * Math.sin(Math.PI / 3), 20, 0], [4, 4, 3, 1, 4, 4, 1, 3, 20, 0]]\n    const quad = []\n    const quadCorr = []\n    let labelCentre1, labelCentre2, labelCentre3\n    let quad1\n    let quad2\n    let quad3\n    let mediatrice1, mediatrice2, mediatrice3, centre1, centre2, centre3, arc1, arc2, arc3, rayon11, rayon12,\n      rayon21, rayon22, rayon31, rayon32\n    let vecteur1, vecteur2, vecteur3, vector1, vector2, vector3, origine1, origine2, origine3, indexsym2, indexsym1,\n      indexsym3\n    let segCorr11, segCorr12, segCorr21, segCorr22, segCorr31, segCorr32\n    let B, C, D\n    let iB1, iB2, iB3, iC1, iA1, iD1\n    let texte = ''\n    let texteCorr = ''\n    const tabfigA = []\n    const tabfigB = []\n    const tabfigC = []\n    const tabfigD = []\n    let pave = []\n    let choixPave\n    switch (this.sup) {\n      case 1:\n        choixPave = 0 // pavages adaptés à symétrie axiale (carrés)\n        break\n      case 2:\n        // choicePave = randint(0, 7)// tilings adapted to central symmetry (all)\n        choixPave = typeDePavage[0]// pavages adaptés à symétrie centrale (tous)\n        break\n      case 3:\n        choixPave = randint(0, 7) // pavages adaptés à translation (tous)\n        break\n      case 4:\n        choixPave = 0 // pavages adaptés à rotation (carrés)\n        break\n    }\n    pave = paves[choixPave]\n\n    const nx = pave[0]\n    const ny = pave[1]\n    let xB = pave[2]\n    let yB = pave[3]\n    let xC = pave[4]\n    let yC = pave[5]\n    let xD = pave[6]\n    let yD = pave[7]\n    const Zoom = pave[8]\n    const Angle = pave[9]\n    const A = point(0, 0)\n    if (choixPave !== 0 && choixPave !== 6 && choixPave !== 7) {\n      B = similitude(point(xB, yB), A, Angle, 22 / Zoom)\n      C = similitude(point(xC, yC), A, Angle, 22 / Zoom)\n      D = similitude(point(xD, yD), A, Angle, 22 / Zoom)\n      xB = B.x\n      yB = B.y\n      xC = C.x\n      yC = C.y\n      xD = D.x\n      yD = D.y\n    } else {\n      B = point(xB, yB)\n      C = point(xC, yC)\n      D = point(xD, yD)\n    }\n    const xAI = xB + xC - xD\n    const yAI = yB + yC - yD\n    const I = milieu(B, C)\n    const J = milieu(D, C)\n    const xAJ = xC + xD - xB\n    const yAJ = yC + yD - yB\n    let xAxy, yAxy, numAxy\n    let punto = [0, 0, 0]\n    let trouver = false\n    let indexA\n    let numA\n    let indexcentre1\n    let xmil1 = 0\n    let ymil1 = 0\n    let indexD\n    let numD\n    let indexcentre2\n    let xmil2 = 0\n    let ymil2 = 0\n    let indexC\n    let numC\n    let indexcentre3\n    let xmil3 = 0\n    let ymil3 = 0\n    let num1\n    let num2\n    let num3\n    let xc = 0\n    let yc = 0\n    let xb = 0\n    let yb = 0\n    let xa = 0\n    let ya = 0\n    let xV1 = 0\n    let yV1 = 0\n    let xV2 = 0\n    let yV2 = 0\n    let xV3 = 0\n    let yV3 = 0\n    const s0 = choice(['S', 'T', 'L', 'W', 'R', 'G', 'E', 'F', 'G', 'K'])\n    const s1 = choice(['S', 'T', 'L', 'W', 'R', 'G', 'E', 'F', 'G', 'K'], [s0])\n    const s2 = choice(['S', 'T', 'L', 'W', 'R', 'G', 'E', 'F', 'G', 'K'], [s0, s1])\n    const Xmin = Math.min(-1, ny * xAJ)\n    const Xmax = Math.max(nx * xAI + 1, nx * xAI + ny * xAJ + 1)\n    const Ymin = Math.min(-1, nx * yAI)\n    const Ymax = Math.max(nx * yAI + ny * yAJ + 1, ny * yAJ + 1)\n\n    for (let y = 0; y < ny; y++) { // On initialise les tableaux avec les coordonnées des puntos de référence (A,B,C et D) de chaque translaté et son numéro dans le pavage.\n      for (let x = 0; x < nx; x++) {\n        xAxy = new FractionEtendue(Math.round((x * xAI + y * xAJ) * 100), 100)\n        yAxy = new FractionEtendue(Math.round((x * yAI + y * yAJ) * 100), 100)\n        numAxy = 2 * x + 4 * y * nx\n        tabfigA.push([xAxy, yAxy, numAxy])\n        quad[numAxy] = translation(polygone(A, B, C, D), vecteur(xAxy, yAxy))\n        quadCorr[numAxy] = translation(polygone(A, B, C, D), vecteur(xAxy, yAxy))\n        tabfigB.push([xAxy.sommeFraction(new FractionEtendue(Math.round(xB * 100), 100)), yAxy.sommeFraction(new FractionEtendue(Math.round(yB * 100), 100)), numAxy + 1])\n        quad[numAxy + 1] = translation(rotation(polygone(A, B, C, D), I, 180), vecteur(xAxy, yAxy))\n        quadCorr[numAxy + 1] = translation(rotation(polygone(A, B, C, D), I, 180), vecteur(xAxy, yAxy))\n        tabfigD.push([xAxy.sommeFraction(new FractionEtendue(Math.round(xD * 100), 100)), yAxy.sommeFraction(new FractionEtendue(Math.round(yD * 100), 100)), numAxy + 2 * nx])\n        quad[numAxy + 2 * nx] = translation(rotation(polygone(A, B, C, D), J, 180), vecteur(xAxy, yAxy))\n        quadCorr[numAxy + 2 * nx] = translation(rotation(polygone(A, B, C, D), J, 180), vecteur(xAxy, yAxy))\n        tabfigC.push([xAxy.sommeFraction(new FractionEtendue(Math.round(xC * 100), 100)), yAxy.sommeFraction(new FractionEtendue(Math.round(yC * 100), 100)), numAxy + 2 * nx + 1])\n        quad[numAxy + 2 * nx + 1] = translation(translation(polygone(A, B, C, D), vecteur(A, C)), vecteur(xAxy, yAxy))\n        quadCorr[numAxy + 2 * nx + 1] = translation(translation(polygone(A, B, C, D), vecteur(A, C)), vecteur(xAxy, yAxy))\n      }\n    }\n    for (let i = 0; i < quad.length; i++) {\n      objetsEnonce.push(quad[i], texteParPoint(i, barycentre(quad[i], '', 'center'), 'medium', 'black', 1, 'middle', false))\n      quadCorr[i].color = colorToLatexOrHTML(assombrirOuEclaircir('gray', 50))\n      objetsCorrection.push(quadCorr[i], texteParPoint(i, barycentre(quad[i], '', 'center'), 'medium', assombrirOuEclaircir('gray', 50), 1, 'middle', false))\n    }\n\n    context.fenetreMathalea2d = [Xmin, Ymin, Xmax, Ymax]\n    let trace, label, pt1, pt2\n    let texteAMC1, texteAMC2, texteAMC3, consigneAMC\n    switch (parseInt(this.sup)) {\n      case 1: // symétrie axiale\n        // First question: a type A figure by axis symmetry // at [BD] is a type A figure. the symmetric of vertex A is vertex C\n        indexA = randint(0, nx * ny - 1)\n        numA = tabfigA[indexA][2]\n        indexsym1 = randint(0, nx * ny - 1, [indexA]) // sert à choisir un axe [BD].\n        xmil1 = tabfigD[indexsym1][0] // sert pour faire passer l'axe de symétrie.\n        ymil1 = tabfigD[indexsym1][1]\n        punto = imagePointParTransformation(2, [tabfigA[indexA][0], tabfigA[indexA][1]], [xmil1, ymil1])\n        trouver = false\n        while (trouver === false) {\n          for (let j = 0; j < nx * ny; j++) {\n            if (egal(punto[0], tabfigC[j][0], 0.001) && egal(punto[1], tabfigC[j][1], 0.001)) {\n              trouver = true\n              num1 = tabfigA[j][2]\n              xa = tabfigA[indexA][0]\n              ya = tabfigA[indexA][1]\n              mediatrice1 = mediatrice(point(xa, ya), point(punto[0], punto[1]))\n              mediatrice1.color = colorToLatexOrHTML(context.isAmc ? 'black' : 'green')\n              mediatrice1.epaisseur = 2\n              mediatrice1.isVisible = true\n              segCorr11 = segment(point(xa, ya), milieu(point(xa, ya), point(punto[0], punto[1])), context.isAmc ? 'black' : 'green')\n              segCorr12 = segment(point(punto[0], punto[1]), milieu(point(xa, ya), point(punto[0], punto[1])), context.isAmc ? 'black' : 'green')\n              segCorr11.epaisseur = 2\n              segCorr11.pointilles = 2\n              segCorr12.epaisseur = 2\n              segCorr12.pointilles = 2\n              objetsCorrection.push(codageAngleDroit(pointSurDroite(mediatrice1, 1), milieu(point(xa, ya), point(punto[0], punto[1])), point(xa, ya), context.isAmc ? 'black' : 'green', 0.8, 1))\n              quad[numA].couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'green')\n              quad[numA].opaciteDeRemplissage = 0.6\n              break\n            }\n          }\n          if (trouver === false) {\n            indexA = randint(0, nx * ny - 1)\n            numA = tabfigA[indexA][2]\n            indexsym1 = randint(0, nx * ny - 1, [indexA])\n            xmil1 = tabfigD[indexsym1][0]\n            ymil1 = tabfigD[indexsym1][1]\n            punto = imagePointParTransformation(2, [tabfigA[indexA][0], tabfigA[indexA][1]], [xmil1, ymil1])\n          }\n        }\n        texteAMC1 = numAlpha(0) + ' What is the number of the symmetrical figure of the figure ' + texteEnCouleurEtGras(`${numA}`, context.isAmc ? 'black' : 'green') + ` in $${miseEnEvidence('(d_1)', context.isAmc ? 'black' : 'green')}$ axis symmetry?` + ajouteChampTexteMathLive(this, 0, 'width25 inline') + '<br>'\n        texte += texteAMC1\n        texteCorr += numAlpha(0) + ' The symmetrical figure of the figure ' + texteEnCouleurEtGras(`${numA}`, context.isAmc ? 'black' : 'green') + ` in axis symmetry $${miseEnEvidence('(d_1)', context.isAmc ? 'black' : 'green')}$ has the number ${texteEnCouleurEtGras(num1)}.<br>`\n\n        // Second question: a type D figure by axis symmetry // at [AC] is a type B figure. the symmetric of vertex B is vertex D\n        indexD = randint(0, nx * ny - 1)\n        numD = tabfigD[indexD][2]\n        indexsym2 = randint(0, nx * ny - 1, [indexD]) // sert à choisir un axe [AC].\n        xmil2 = tabfigA[indexsym2][0] // sert pour faire passer l'axe de symétrie.\n        ymil2 = tabfigA[indexsym2][1]\n        punto = imagePointParTransformation(1, [tabfigD[indexD][0], tabfigD[indexD][1]], [xmil2, ymil2])\n        trouver = false\n        while (trouver === false) {\n          for (let j = 0; j < nx * ny; j++) {\n            if (egal(punto[0], tabfigB[j][0], 0.001) && egal(punto[1], tabfigB[j][1], 0.001)) {\n              trouver = true\n              num2 = tabfigB[j][2]\n              xb = tabfigD[indexD][0]\n              yb = tabfigD[indexD][1] - 4\n              mediatrice2 = mediatrice(point(xb, yb + 4), point(punto[0], punto[1]))\n              mediatrice2.color = colorToLatexOrHTML(context.isAmc ? 'black' : 'red')\n              mediatrice2.epaisseur = 2\n              mediatrice2.isVisible = true\n              segCorr21 = segment(point(xb, yb + 4), milieu(point(xb, yb + 4), point(punto[0], punto[1])), context.isAmc ? 'black' : 'red')\n              segCorr22 = segment(point(punto[0], punto[1]), milieu(point(xb, yb + 4), point(punto[0], punto[1])), context.isAmc ? 'black' : 'red')\n              segCorr21.epaisseur = 2\n              segCorr21.pointilles = 2\n              segCorr22.epaisseur = 2\n              segCorr22.pointilles = 2\n              objetsCorrection.push(codageAngleDroit(pointSurDroite(mediatrice2, 1), milieu(point(xb, yb + 4), point(punto[0], punto[1])), point(xb, yb + 4), context.isAmc ? 'black' : 'red', 0.8, 1))\n              quad[numD].couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'red')\n              quad[numD].opaciteDeRemplissage = 0.6\n\n              break\n            }\n          }\n          if (trouver === false) {\n            indexD = randint(0, nx * ny - 1)\n            numD = tabfigD[indexD][2]\n            indexsym2 = randint(0, nx * ny - 1, [indexD]) // sert à choisir un axe [AC].\n            xmil2 = tabfigA[indexsym2][0] // sert pour faire passer l'axe de symétrie.\n            ymil2 = tabfigA[indexsym2][1]\n            punto = imagePointParTransformation(1, [tabfigD[indexD][0], tabfigD[indexD][1]], [xmil2, ymil2])\n          }\n        }\n        texteAMC2 = numAlpha(1) + 'What is the number of the symmetrical figure of the figure ' + texteEnCouleurEtGras(`${numD}`, context.isAmc ? 'black' : 'red') + ` in $${miseEnEvidence('(d_2)', context.isAmc ? 'black' : 'red')}$ axis symmetry?` + ajouteChampTexteMathLive(this, 1, 'width25 inline') + '<br>'\n        texte += '<br>' + texteAMC2\n        texteCorr += '<br>' + numAlpha(1) + ' The symmetrical figure of the figure ' + texteEnCouleurEtGras(`${numD}`, context.isAmc ? 'black' : 'red') + ` in axis symmetry $${miseEnEvidence('(d_2)', context.isAmc ? 'black' : 'red')}$ has the number ${texteEnCouleurEtGras(num2)}.<br>`\n\n        // third question: a type D figure by axis symmetry // at [DC] is a type A figure. the symmetric of vertex D is vertex A'\n        indexC = randint(0, nx * ny - 1)\n        numC = tabfigC[indexC][2]\n        indexsym3 = randint(0, 4, Math.floor(indexC / 5)) * 5 // sert à choisir un axe [AC].\n        xmil3 = tabfigC[indexsym3][0] // sert pour faire passer l'axe de symétrie.\n        ymil3 = tabfigC[indexsym3][1]\n        punto = imagePointParTransformation(3, [tabfigC[indexC][0], tabfigC[indexC][1]], [xmil3, ymil3])\n        trouver = false\n        while (trouver === false) {\n          for (let j = 0; j < nx * ny; j++) {\n            if (egal(punto[0], tabfigC[j][0], 0.001) && egal(punto[1], tabfigC[j][1], 0.001)) {\n              trouver = true\n              num3 = tabfigB[j][2]\n              xc = tabfigC[indexC][0]\n              yc = tabfigC[indexC][1]\n              mediatrice3 = mediatrice(point(xc, yc), point(punto[0], punto[1]))\n              mediatrice3.color = colorToLatexOrHTML(context.isAmc ? 'black' : 'blue')\n              mediatrice3.epaisseur = 2\n              mediatrice3.isVisible = true\n              segCorr31 = segment(point(xc, yc), milieu(point(xc, yc), point(punto[0], punto[1])), context.isAmc ? 'black' : 'blue')\n              segCorr32 = segment(point(punto[0], punto[1]), milieu(point(xc, yc), point(punto[0], punto[1])), context.isAmc ? 'black' : 'blue')\n              segCorr31.epaisseur = 2\n              segCorr31.pointilles = 2\n              segCorr32.epaisseur = 2\n              segCorr32.pointilles = 2\n              objetsCorrection.push(codageAngleDroit(pointSurDroite(mediatrice3, 1), milieu(point(xc, yc), point(punto[0], punto[1])), point(xc, yc), context.isAmc ? 'black' : 'blue', 0.8, 1))\n              quad[numC].couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'blue')\n              quad[numC].opaciteDeRemplissage = 0.6\n              break\n            }\n          }\n          if (trouver === false) {\n            indexC = randint(0, nx * ny - 1)\n            numC = tabfigC[indexC][2]\n            const indexsym3 = randint(0, 4, Math.floor(indexC / 5)) * 5 // sert à choisir un axe [AC].\n            xmil3 = tabfigC[indexsym3][0] // sert pour faire passer l'axe de symétrie.\n            ymil3 = tabfigC[indexsym3][1]\n            punto = imagePointParTransformation(3, [tabfigC[indexC][0], tabfigC[indexC][1]], [xmil3, ymil3])\n          }\n        }\n        texteAMC3 = numAlpha(2) + ' What is the number of the symmetrical figure of the figure ' + texteEnCouleurEtGras(`${numC}`, context.isAmc ? 'black' : 'blue') + ` in $${miseEnEvidence('(d_3)', context.isAmc ? 'black' : 'blue')}$ axis symmetry?` + ajouteChampTexteMathLive(this, 2, 'width25 inline') + '<br>'\n        texte += '<br>' + texteAMC3\n        texteCorr += '<br>' + numAlpha(2) + ' The symmetrical figure of the figure ' + texteEnCouleurEtGras(`${numC}`, context.isAmc ? 'black' : 'blue') + ` in axis symmetry $${miseEnEvidence('(d_3)', context.isAmc ? 'black' : 'blue')}$ has the number ${texteEnCouleurEtGras(num3)}.<br>`\n\n        objetsEnonce.push(mediatrice1, mediatrice2, mediatrice3)\n        objetsCorrection.push(mediatrice1, mediatrice2, mediatrice3, symetrieAnimee(quad[numA], mediatrice1, `id=\"anim${numeroExercice}A\" hard=\"2s\" repeatcount=\"1\"`), symetrieAnimee(quad[numD], mediatrice2, `id=\"anim${numeroExercice}B\" dur=\"2s\" repeatcount=\"1\"`), symetrieAnimee(quad[numC], mediatrice3, `id=\"anim${numeroExercice}C\" dur=\"2s\" repeatcount=\"1\"`))\n\n        pt1 = pointIntersectionDD(mediatrice1, droiteHorizontaleParPoint(point(context.fenetreMathalea2d[2], context.fenetreMathalea2d[3])))\n        pt2 = pointIntersectionDD(mediatrice1, droiteVerticaleParPoint(point(context.fenetreMathalea2d[0], context.fenetreMathalea2d[1])))\n        if (pt1.x > pt2.x) {\n          objetsEnonce.push(latexParCoordonnees('(d_1)', pt1.x, pt1.y - 2.5, context.isAmc ? 'black' : 'green', 20, 10, '', 12))\n          objetsCorrection.push(latexParCoordonnees('(d_1)', pt1.x, pt1.y - 2.5, context.isAmc ? 'black' : 'green', 20, 10, '', 12))\n        } else {\n          objetsEnonce.push(latexParCoordonnees('(d_1)', pt2.x + 2.5, pt2.y, context.isAmc ? 'black' : 'green', 20, 10, '', 12))\n          objetsCorrection.push(latexParCoordonnees('(d_1)', pt2.x + 2.5, pt2.y, context.isAmc ? 'black' : 'green', 20, 10, '', 12))\n        }\n\n        pt1 = pointIntersectionDD(mediatrice2, droiteHorizontaleParPoint(point(context.fenetreMathalea2d[0], context.fenetreMathalea2d[1])))\n        pt2 = pointIntersectionDD(mediatrice2, droiteVerticaleParPoint(point(context.fenetreMathalea2d[0], context.fenetreMathalea2d[1])))\n        if (pt1.x > pt2.x) {\n          objetsEnonce.push(latexParCoordonnees('(d_2)', pt1.x, pt1.y + 2.5, context.isAmc ? 'black' : 'red', 20, 10, '', 12))\n          objetsCorrection.push(latexParCoordonnees('(d_2)', pt1.x, pt1.y + 2.5, context.isAmc ? 'black' : 'red', 20, 10, '', 12))\n        } else if (pt1.x < pt2.x) {\n          objetsEnonce.push(latexParCoordonnees('(d_2)', pt2.x + 2.5, pt2.y, context.isAmc ? 'black' : 'red', 20, 10, '', 12))\n          objetsCorrection.push(latexParCoordonnees('(d_2)', pt2.x + 2.5, pt2.y, context.isAmc ? 'black' : 'red', 20, 10, '', 12))\n        } else {\n          objetsEnonce.push(latexParCoordonnees('(d_2)', pt2.x + 3.5, pt2.y + 1, context.isAmc ? 'black' : 'red', 20, 10, '', 12))\n          objetsCorrection.push(latexParCoordonnees('(d_2)', pt2.x + 3.5, pt2.y + 1, context.isAmc ? 'black' : 'red', 20, 10, '', 12))\n        }\n\n        pt1 = pointIntersectionDD(mediatrice3, droiteVerticaleParPoint(point(context.fenetreMathalea2d[2], context.fenetreMathalea2d[3])))\n        objetsEnonce.push(latexParCoordonnees('(d_3)', pt1.x - 2, pt1.y + 1.5, context.isAmc ? 'black' : 'blue', 20, 10, '', 12))\n        objetsCorrection.push(latexParCoordonnees('(d_3)', pt1.x - 2, pt1.y + 1.5, context.isAmc ? 'black' : 'blue', 20, 10, '', 12))\n        objetsCorrection.push(segCorr11, segCorr12, segCorr21, segCorr22, segCorr31, segCorr32)\n        objetsCorrection.push(codageSegments('OO', context.isAmc ? 'black' : 'green', segCorr11, segCorr12))\n        objetsCorrection.push(codageSegments('XX', context.isAmc ? 'black' : 'red', segCorr21, segCorr22))\n        objetsCorrection.push(codageSegments('|||', context.isAmc ? 'black' : 'blue', segCorr31, segCorr32))\n        consigneAMC = mathalea2d({\n          xmin: Xmin,\n          xmax: Xmax,\n          ymin: Ymin,\n          ymax: Ymax,\n          pixelsParCm: 15,\n          scale: 0.3,\n          optionsTikz: ['every node/.style={scale=0.6}'],\n          mainlevee: false\n        }, objetsEnonce\n        )\n        texte += consigneAMC\n        quad1 = translation(quad[num1], vecteur(0, 0))\n        quad1.couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'green')\n        quad1.opaciteDeRemplissage = 0.3\n        quad2 = translation(quad[num2], vecteur(0, 0))\n        quad2.couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'red')\n        quad2.opaciteDeRemplissage = 0.3\n        quad3 = translation(quad[num3], vecteur(0, 0))\n        quad3.couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'blue')\n        quad3.opaciteDeRemplissage = 0.3\n        objetsCorrection.push(quad[numA], quad[numD], quad[numC], quad1, quad2, quad3)\n        texteCorr += mathalea2d({\n          xmin: Xmin,\n          xmax: Xmax,\n          ymin: Ymin,\n          ymax: Ymax,\n          pixelsParCm: 15,\n          scale: 0.3,\n          optionsTikz: ['every node/.style={scale=0.6}'],\n          mainlevee: false\n        }, objetsCorrection\n        )\n\n        break\n      case 2: // symétrie centrale\n        // First question: a figure in tabfigA, a symmetry with respect to the middle of a [B'C'], logically: the image is in tabfigB and B' is the image of C!\n        indexA = randint(0, nx * ny - 1)\n        numA = tabfigA[indexA][2]\n        indexcentre1 = randint(0, nx * ny - 1, indexA) // indexcentre1 est l'index du bloc de 4 figures A,B,C et D, il sert dans les 4 tableaux.\n\n        // we calculate the coordinates of the middle of [BC] we add to the coordinates of the middle of [BC] those of the vector BB'. (I could have reduced but that would have made the calculation more opaque)\n        xmil1 = (xB + xC) / 2 + tabfigB[indexcentre1][0] - xB\n        ymil1 = (yB + yC) / 2 + tabfigB[indexcentre1][1] - yB\n        punto = imagePointParTransformation(7, [tabfigC[indexA][0], tabfigC[indexA][1]], [xmil1, ymil1])\n        trouver = false\n        while (trouver === false) {\n          for (let j = 0; j < nx * ny; j++) {\n            if (egal(punto[0], tabfigB[j][0], 0.001) && egal(punto[1], tabfigB[j][1], 0.001)) {\n              trouver = true\n              num1 = tabfigB[j][2]\n              xa = tabfigA[indexA][0]\n              ya = tabfigA[indexA][1]\n              centre1 = point(xmil1, ymil1, s0, 'left')\n              quad[numA].couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'green')\n              quad[numA].opaciteDeRemplissage = 0.6\n              break\n            }\n          }\n          if (trouver === false) {\n            indexA = randint(0, nx * ny - 1)\n            numA = tabfigA[indexA][2]\n            indexcentre1 = randint(0, nx * ny - 1, indexA)\n            xmil1 = (xB + xC) / 2 + tabfigB[indexcentre1][0] - xB\n            ymil1 = (yB + yC) / 2 + tabfigB[indexcentre1][1] - yB\n            punto = imagePointParTransformation(7, [tabfigC[indexA][0], tabfigC[indexA][1]], [xmil1, ymil1])\n          }\n        }\n        texteAMC1 = numAlpha(0) + texteEnCouleurEtGras(`What is the number of the symmetrical figure of the ${numA} figure in the ${s0} center symmetry?`, context.isAmc ? 'black' : 'green') + ajouteChampTexteMathLive(this, 0, 'width25 inline') + '<br>'\n        texte += texteAMC1\n        texteCorr = numAlpha(0) + texteEnCouleurEtGras(` The symmetrical figure of the ${numA} figure in the ${s0} center symmetry has the number ${num1}.<br>`, context.isAmc ? 'black' : 'green')\n        // Second question: a figure in tabfigD, a symmetry with respect to the middle of a [C'D'], the result is a figure in tabfigA and C' is the image of D!\n        indexD = randint(0, nx * ny - 1)\n        numD = tabfigD[indexD][2]\n        indexcentre2 = randint(0, nx * ny - 1, [indexD]) // indexcentre2 est l'index du bloc de 4 figures A,B,C et D, il sert dans les 4 tableaux.\n\n        // we calculate the coordinates of the middle of [DC] we add to the coordinates of the middle of [DC] those of the vector DD'.\n        xmil2 = (xD + xC) / 2 + tabfigD[indexcentre2][0] - xD\n        ymil2 = (yD + yC) / 2 + tabfigD[indexcentre2][1] - yD\n        punto = imagePointParTransformation(7, [tabfigD[indexD][0], tabfigD[indexD][1]], [xmil2, ymil2])\n        trouver = false\n        while (trouver === false) {\n          for (let j = 0; j < nx * ny; j++) {\n            if (egal(punto[0], tabfigC[j][0], 0.001) && egal(punto[1], tabfigC[j][1], 0.001)) {\n              trouver = true\n              num2 = tabfigA[j][2]\n              xb = tabfigA[indexD][0]\n              yb = tabfigA[indexD][1]\n              centre2 = point(xmil2, ymil2, s1, 'left')\n              quad[numD].couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'red')\n              quad[numD].opaciteDeRemplissage = 0.6\n\n              break\n            }\n          }\n          if (trouver === false) {\n            indexD = randint(0, nx * ny - 1)\n            numD = tabfigD[indexD][2]\n            indexcentre2 = randint(0, nx * ny - 1, [indexD])\n            xmil2 = (xD + xC) / 2 + tabfigD[indexcentre2][0] - xD\n            ymil2 = (yD + yC) / 2 + tabfigD[indexcentre2][1] - yD\n            punto = imagePointParTransformation(7, [tabfigD[indexD][0], tabfigD[indexD][1]], [xmil2, ymil2])\n          }\n        }\n\n        texteAMC2 = numAlpha(1) + texteEnCouleurEtGras(` What is the number of the symmetrical figure of the ${numD} figure in the ${s1} center symmetry?`, context.isAmc ? 'black' : 'red') + ajouteChampTexteMathLive(this, 1, 'width25 inline') + '<br>'\n        texte += '<br>' + texteAMC2\n        texteCorr += numAlpha(1) + texteEnCouleurEtGras(` The symmetrical figure of the ${numD} figure in the ${s1} center symmetry has the number ${num2}.<br>`, context.isAmc ? 'black' : 'red')\n        // third question: a figure in tabfigC, a symmetry with respect to the symmetry of the middle of [A'D'] with respect to the middle of [C'D']... not very clear\n        // the result is a figure in tabfigD and the point (C'+ vector AC) has the image D'!\n        indexC = randint(0, nx * ny - 1)\n        numC = tabfigC[indexC][2]\n        indexcentre3 = randint(0, nx * ny - 1, [indexC]) // indexcentre2 est l'index du bloc de 4 figures A,B,C et D, il sert dans les 4 tableaux.\n\n        // we calculate the coordinates of the middle of the center of symmetry: (C' + D + AC)/2=AC+AD/2 which we translate from CC' so that makes AC' + AD/2\n        xmil3 = xD / 2 + tabfigC[indexcentre3][0]\n        ymil3 = yD / 2 + tabfigC[indexcentre3][1]\n        punto = imagePointParTransformation(7, [tabfigC[indexC][0] + xC, tabfigC[indexC][1] + yC], [xmil3, ymil3]) // c'est le sommet C + AC qui a pour image D.\n        trouver = false\n        while (trouver === false) {\n          for (let j = 0; j < nx * ny; j++) {\n            if (egal(punto[0], tabfigD[j][0], 0.001) && egal(punto[1], tabfigD[j][1], 0.001)) {\n              trouver = true\n              num3 = tabfigD[j][2]\n              xc = tabfigA[indexC][0]\n              yc = tabfigA[indexC][1]\n              centre3 = point(xmil3, ymil3, s2, 'left')\n              quad[numC].couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'blue')\n              quad[numC].opaciteDeRemplissage = 0.6\n              break\n            }\n          }\n          if (trouver === false) {\n            indexC = randint(0, nx * ny - 1)\n            numC = tabfigC[indexC][2]\n            indexcentre3 = randint(0, nx * ny - 1, [indexC])\n            xmil3 = xD / 2 + tabfigC[indexcentre3][0]\n            ymil3 = yD / 2 + tabfigC[indexcentre3][1]\n            punto = imagePointParTransformation(7, [tabfigC[indexC][0] + xC, tabfigC[indexC][1] + yC], [xmil3, ymil3])\n          }\n        }\n        texteAMC3 = numAlpha(2) + texteEnCouleurEtGras(` What is the number of the symmetrical figure of the ${numC} figure in the ${s2} center symmetry?`, context.isAmc ? 'black' : 'blue') + ajouteChampTexteMathLive(this, 2, 'width25 inline') + '<br>'\n        texte += '<br>' + texteAMC3\n        texteCorr += numAlpha(2) + texteEnCouleurEtGras(` The symmetrical figure of the ${numC} figure in the ${s2} center symmetry has the number ${num3}.<br>`, context.isAmc ? 'black' : 'blue')\n        labelCentre1 = tracePoint(centre1, 'red')\n        labelCentre1.epaisseur = 2\n        labelCentre1.taille = 2\n        labelCentre2 = tracePoint(centre2, 'red')\n        labelCentre2.epaisseur = 2\n        labelCentre2.taille = 2\n        labelCentre3 = tracePoint(centre3, 'red')\n        labelCentre3.epaisseur = 2\n        labelCentre3.taille = 2\n\n        objetsEnonce.push(labelCentre1, labelCentre2, labelCentre3, labelPoint(centre1, 'red'), labelPoint(centre2, 'red'), labelPoint(centre3, 'red'))\n        objetsCorrection.push(labelCentre1, labelCentre2, labelCentre3, labelPoint(centre1, 'red'), labelPoint(centre2, 'red'), labelPoint(centre3, 'red')\n          , rotationAnimee(quad[numA], centre1, 180, `id=\"anim${numeroExercice}A\" hard=\"2s\" repeatcount=\"1\"`), rotationAnimee(quad[numD], centre2, 180, `id=\"anim${numeroExercice}B\" dur=\"2s\" repeatcount=\"1\"`), rotationAnimee(quad[numC], centre3, 180, `id=\"anim${numeroExercice}C\" dur=\"2s\" repeatcount=\"1\"`))\n\n        consigneAMC = mathalea2d({\n          xmin: Xmin,\n          xmax: Xmax,\n          ymin: Ymin,\n          ymax: Ymax,\n          pixelsParCm: 15,\n          scale: 0.3,\n          optionsTikz: ['every node/.style={scale=0.6}'],\n          mainlevee: false\n        }, objetsEnonce\n        )\n        texte += consigneAMC\n        quad1 = translation(quad[num1], vecteur(0, 0))\n        quad1.couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'green')\n        quad1.opaciteDeRemplissage = 0.3\n        quad2 = translation(quad[num2], vecteur(0, 0))\n        quad2.couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'red')\n        quad2.opaciteDeRemplissage = 0.3\n        quad3 = translation(quad[num3], vecteur(0, 0))\n        quad3.couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'blue')\n        quad3.opaciteDeRemplissage = 0.3\n        arc1 = arc(point(tabfigA[indexA][0], tabfigA[indexA][1]), centre1, 180)\n        rayon11 = segment(point(tabfigA[indexA][0], tabfigA[indexA][1]), centre1)\n        rayon12 = rotation(rayon11, centre1, 180)\n        rayon11.pointilles = 2\n        rayon12.pointilles = 2\n        arc1.pointilles = 2\n        arc2 = arc(point(tabfigD[indexD][0], tabfigD[indexD][1]), centre2, 180)\n        rayon21 = segment(point(tabfigD[indexD][0], tabfigD[indexD][1]), centre2)\n        rayon22 = rotation(rayon21, centre2, 180)\n        rayon21.pointilles = 2\n        rayon22.pointilles = 2\n        arc2.pointilles = 2\n        arc3 = arc(point(tabfigC[indexC][0], tabfigC[indexC][1]), centre3, 180)\n        rayon31 = segment(point(tabfigC[indexC][0], tabfigC[indexC][1]), centre3)\n        rayon32 = rotation(rayon31, centre3, 180)\n        rayon31.pointilles = 2\n        rayon32.pointilles = 2\n        arc3.pointilles = 2\n        objetsCorrection.push(quad1, quad2, quad3, arc1, arc2, arc3, rayon11, rayon12, rayon21, rayon22, rayon31, rayon32)\n        texteCorr += mathalea2d({\n          xmin: Xmin,\n          xmax: Xmax,\n          ymin: Ymin,\n          ymax: Ymax,\n          pixelsParCm: 15,\n          scale: 0.3,\n          optionsTikz: ['every node/.style={scale=0.6}'],\n          mainlevee: false\n        }, objetsCorrection\n        )\n\n        break\n\n      case 3: // translations\n\n        // First question: a figure in tabfigA, the image in tabfigA...\n        // We choose two type B figures to define the translation vector.\n        indexA = randint(0, nx * ny - 1)\n        numA = tabfigA[indexA][2]\n        iB1 = randint(0, nx * ny - 1)\n        iB2 = randint(0, nx * ny - 1, [iB1])\n        xV1 = tabfigB[iB2][0].differenceFraction(tabfigB[iB1][0])\n        yV1 = tabfigB[iB2][1].differenceFraction(tabfigB[iB1][1])\n        punto = imagePointParTransformation(8, [tabfigA[indexA][0], tabfigA[indexA][1]], [0, 0], [xV1, yV1])\n        trouver = false\n        while (trouver === false) {\n          for (let j = 0; j < nx * ny; j++) {\n            if (egal(punto[0], tabfigA[j][0], 0.001) && egal(punto[1], tabfigA[j][1], 0.001)) {\n              trouver = true\n              num1 = tabfigA[j][2]\n              xa = tabfigA[indexA][0]\n              ya = tabfigA[indexA][1]\n              origine1 = point(tabfigB[iB1][0], tabfigB[iB1][1])\n              vector1 = vecteur(origine1, point(tabfigB[iB2][0], tabfigB[iB2][1]))\n              vecteur1 = vector1.representant(origine1)\n              vecteur1.color = colorToLatexOrHTML(context.isAmc ? 'black' : 'green')\n              vecteur1.epaisseur = 2\n              vecteur1.pointilles = 2\n              quad[numA].couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'green')\n              quad[numA].opaciteDeRemplissage = 0.6\n              break\n            }\n          }\n          if (trouver === false) {\n            indexA = randint(0, nx * ny - 1)\n            numA = tabfigA[indexA][2]\n            iB1 = randint(0, nx * ny - 1)\n            iB2 = randint(0, nx * ny - 1, [iB1])\n            xV1 = tabfigB[iB2][0] - tabfigB[iB1][0]\n            yV1 = tabfigB[iB2][1] - tabfigB[iB1][1]\n            punto = imagePointParTransformation(8, [tabfigA[indexA][0], tabfigA[indexA][1]], [0, 0], [xV1, yV1])\n          }\n        }\n        texteAMC1 = numAlpha(0) + texteEnCouleurEtGras(` In the translation that transforms the ${tabfigB[iB1][2]} figure into the ${tabfigB[iB2][2]} figure, what is the number of the image of the ${numA} figure?`, context.isAmc ? 'black' : 'green') + ajouteChampTexteMathLive(this, 0, 'width25 inline') + '<br>'\n        texte += texteAMC1\n        texteCorr = numAlpha(0) + texteEnCouleurEtGras(` The image figure of the ${numA} figure in the translation which transforms the ${tabfigB[iB1][2]} figure into the ${tabfigB[iB2][2]} figure bears the number ${num1}.<br>`, context.isAmc ? 'black' : 'green')\n        // Second question: a figure in tabfigD, the image in tabfigB...\n        // We choose a figure C and a figure A to define the translation vector.\n        indexD = randint(0, nx * ny - 1)\n        numD = tabfigD[indexD][2]\n        iC1 = randint(0, nx * ny - 1)\n        iA1 = randint(0, nx * ny - 1, [iC1])\n        xV2 = tabfigA[iA1][0] - tabfigC[iC1][0]\n        yV2 = tabfigA[iA1][1] - tabfigC[iC1][1]\n        punto = imagePointParTransformation(8, [tabfigD[indexD][0], tabfigD[indexD][1]], [0, 0], [xV2, yV2])\n        trouver = false\n        while (trouver === false) {\n          for (let j = 0; j < nx * ny; j++) {\n            if (egal(punto[0], tabfigB[j][0], 0.001) && egal(punto[1], tabfigB[j][1], 0.001)) {\n              trouver = true\n              num2 = tabfigB[j][2]\n              xb = tabfigD[indexD][0]\n              yb = tabfigD[indexD][1]\n              origine2 = point(tabfigC[iC1][0], tabfigC[iC1][1])\n              vector2 = vecteur(origine2, point(tabfigA[iA1][0], tabfigA[iA1][1]))\n              vecteur2 = vector2.representant(origine2)\n              vecteur2.color = colorToLatexOrHTML(context.isAmc ? 'black' : 'red')\n              vecteur2.epaisseur = 2\n              vecteur2.pointilles = 2\n              quad[numD].couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'red')\n              quad[numD].opaciteDeRemplissage = 0.6\n              break\n            }\n          }\n          if (trouver === false) {\n            indexD = randint(0, nx * ny - 1)\n            numD = tabfigD[indexD][2]\n            iC1 = randint(0, nx * ny - 1)\n            iA1 = randint(0, nx * ny - 1, [iC1])\n            xV2 = tabfigA[iA1][0] - tabfigC[iC1][0]\n            yV2 = tabfigA[iA1][1] - tabfigC[iC1][1]\n            punto = imagePointParTransformation(8, [tabfigD[indexD][0], tabfigD[indexD][1]], [0, 0], [xV2, yV2])\n          }\n        }\n        texteAMC2 = numAlpha(1) + texteEnCouleurEtGras(` In the translation that transforms the ${tabfigC[iC1][2]} figure into the ${tabfigA[iA1][2]} figure, what is the number of the image of the ${numD} figure?`, context.isAmc ? 'black' : 'red') + ajouteChampTexteMathLive(this, 1, 'width25 inline') + '<br>'\n        texte += '<br>' + texteAMC2\n        texteCorr += numAlpha(1) + texteEnCouleurEtGras(` The image figure of the ${numD} figure in the translation which transforms the ${tabfigC[iC1][2]} figure into the ${tabfigA[iA1][2]} figure bears the number ${num2}.<br>`, context.isAmc ? 'black' : 'red')\n\n        // third question: a figure in tabfigC, the image in tabfigA...\n        // We choose a figure D and a figure B to define the translation vector.\n        indexC = randint(0, nx * ny - 1)\n        numC = tabfigC[indexC][2]\n        iD1 = randint(0, nx * ny - 1)\n        iB3 = randint(0, nx * ny - 1, [iD1])\n        xV3 = tabfigA[iB3][0] - tabfigC[iD1][0]\n        yV3 = tabfigA[iB3][1] - tabfigC[iD1][1]\n        punto = imagePointParTransformation(8, [tabfigC[indexC][0], tabfigC[indexC][1]], [0, 0], [xV3, yV3])\n        trouver = false\n        while (trouver === false) {\n          for (let j = 0; j < nx * ny; j++) {\n            if (egal(punto[0], tabfigA[j][0], 0.001) && egal(punto[1], tabfigA[j][1], 0.001)) {\n              trouver = true\n              num3 = tabfigA[j][2]\n              xc = tabfigC[indexC][0]\n              yc = tabfigC[indexC][1]\n              origine3 = point(tabfigC[iD1][0], tabfigC[iD1][1])\n              vector3 = vecteur(origine3, point(tabfigA[iB3][0], tabfigA[iB3][1]))\n              vecteur3 = vector3.representant(origine3)\n              vecteur3.color = colorToLatexOrHTML(context.isAmc ? 'black' : 'blue')\n              vecteur3.epaisseur = 2\n              vecteur3.pointilles = 2\n              quad[numC].couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'blue')\n              quad[numC].opaciteDeRemplissage = 0.6\n              break\n            }\n          }\n          if (trouver === false) {\n            indexC = randint(0, nx * ny - 1)\n            numC = tabfigC[indexC][2]\n            iD1 = randint(0, nx * ny - 1)\n            iB3 = randint(0, nx * ny - 1, [iD1])\n            xV3 = tabfigA[iB3][0] - tabfigC[iD1][0]\n            yV3 = tabfigA[iB3][1] - tabfigC[iD1][1]\n            punto = imagePointParTransformation(8, [tabfigC[indexC][0], tabfigC[indexC][1]], [0, 0], [xV3, yV3])\n          }\n        }\n        texteAMC3 = numAlpha(2) + texteEnCouleurEtGras(` In the translation that transforms the ${tabfigC[iD1][2]} figure into the ${tabfigA[iB3][2]} figure, what is the number of the image of the ${numC} figure?`, context.isAmc ? 'black' : 'blue') + ajouteChampTexteMathLive(this, 2, 'width25 inline') + '<br>'\n        texte += '<br>' + texteAMC3\n        texteCorr += numAlpha(2) + texteEnCouleurEtGras(` The image figure of the ${numC} figure in the translation which transforms the ${tabfigC[iD1][2]} figure into the ${tabfigA[iB3][2]} figure bears the number ${num3}.<br>`, context.isAmc ? 'black' : 'blue')\n\n        objetsEnonce.push(vecteur1, vecteur2, vecteur3)\n        objetsCorrection.push(vecteur1, vecteur2, vecteur3\n          , translationAnimee(quad[numA], vector1, `id=\"anim${numeroExercice}A\" dur=\"2s\" repeatcount=\"1\"`), translationAnimee(quad[numD], vector2, `id=\"anim${numeroExercice}B\" dur=\"2s\" repeatcount=\"1\"`), translationAnimee(quad[numC], vector3, `id=\"anim${numeroExercice}C\" dur=\"2s\" repeatcount=\"1\"`))\n\n        consigneAMC = mathalea2d({\n          xmin: Xmin,\n          xmax: Xmax,\n          ymin: Ymin,\n          ymax: Ymax,\n          pixelsParCm: 15,\n          scale: 0.3,\n          optionsTikz: ['every node/.style={scale=0.6}'],\n          mainlevee: false\n        }, objetsEnonce\n        )\n        texte += consigneAMC\n        quad1 = translation(quad[num1], vecteur(0, 0))\n        quad1.couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'green')\n        quad1.opaciteDeRemplissage = 0.3\n        quad2 = translation(quad[num2], vecteur(0, 0))\n        quad2.couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'red')\n        quad2.opaciteDeRemplissage = 0.3\n        quad3 = translation(quad[num3], vecteur(0, 0))\n        quad3.couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'blue')\n        quad3.opaciteDeRemplissage = 0.3\n        rayon11 = vector1.representant(point(xa, ya))\n        rayon11.color = colorToLatexOrHTML(context.isAmc ? 'black' : 'green')\n        rayon11.epaisseur = 2\n        rayon21 = vector2.representant(point(xb, yb))\n        rayon21.color = colorToLatexOrHTML(context.isAmc ? 'black' : 'red')\n        rayon21.epaisseur = 2\n        rayon31 = vector3.representant(point(xc, yc))\n        rayon31.color = colorToLatexOrHTML(context.isAmc ? 'black' : 'blue')\n        rayon31.epaisseur = 2\n        objetsCorrection.push(quad1, quad2, quad3, rayon11, rayon21, rayon31)\n        texteCorr += mathalea2d({\n          xmin: Xmin,\n          xmax: Xmax,\n          ymin: Ymin,\n          ymax: Ymax,\n          pixelsParCm: 15,\n          scale: 0.3,\n          optionsTikz: ['every node/.style={scale=0.6}'],\n          mainlevee: false\n        }, objetsCorrection\n        )\n\n        break\n\n      case 4: // rotations\n\n        // first question: center A, rotation of 90° counterclockwise, a figure of tabfigA gives a figure of tabfigD, point B gives point D.\n        indexA = randint(0, nx * ny - 1)\n        numA = tabfigA[indexA][2]\n        indexcentre1 = randint(0, nx * ny - 1, [indexA])\n        xmil1 = tabfigA[indexcentre1][0]\n        ymil1 = tabfigA[indexcentre1][1]\n        punto = imagePointParTransformation(6, [tabfigB[indexA][0], tabfigB[indexA][1]], [xmil1, ymil1]) // le repère est direct, donc le sens de rotation est inversé...\n        trouver = false\n        while (trouver === false) {\n          for (let j = 0; j < nx * ny; j++) {\n            if (egal(punto[0], tabfigD[j][0], 0.001) && egal(punto[1], tabfigD[j][1], 0.001)) {\n              trouver = true\n              num1 = tabfigD[j][2]\n              xa = tabfigA[indexA][0]\n              ya = tabfigA[indexA][1]\n              centre1 = point(xmil1, ymil1, s0, 'above left')\n              quad[numA].couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'green')\n              quad[numA].opaciteDeRemplissage = 0.6\n              break\n            }\n          }\n          if (trouver === false) {\n            indexA = randint(0, nx * ny - 1)\n            numA = tabfigA[indexA][2]\n            indexcentre1 = randint(0, nx * ny - 1, [indexA])\n            xmil1 = tabfigA[indexcentre1][0]\n            ymil1 = tabfigA[indexcentre1][1]\n            punto = imagePointParTransformation(6, [tabfigB[indexA][0], tabfigB[indexA][1]], [xmil1, ymil1]) // le repère est direct, donc le sens de rotation est inversé...\n          }\n        }\n        texteAMC1 = numAlpha(0) + ' What is the number of the figure image of the figure ' + texteEnCouleurEtGras(`${numA}`, context.isAmc ? 'black' : 'green') + ' in center rotation ' + texteEnCouleurEtGras(`${s0}`, context.isAmc ? 'black' : 'green') + ' and angle 90° clockwise?' + ajouteChampTexteMathLive(this, 0, 'width25 inline') + '<br>'\n        texte += texteAMC1\n        texteCorr += numAlpha(0) + ' The figure image of the figure ' + texteEnCouleurEtGras(`${numA}`, context.isAmc ? 'black' : 'green') + ' in center rotation ' + texteEnCouleurEtGras(`${s0}`, context.isAmc ? 'black' : 'green') + ' and angle 90° clockwise bears the number ' + texteEnCouleurEtGras(`${num1}`, '#f15929') + '.<br>'\n\n        // second question: center B, rotation 90° clockwise, a figure of tabfigD gives a figure of tabfigC\n        indexD = randint(0, nx * ny - 1)\n        numD = tabfigD[indexD][2]\n        indexcentre2 = randint(0, nx * ny - 1, [indexD])\n        xmil2 = tabfigB[indexcentre2][0]\n        ymil2 = tabfigB[indexcentre2][1]\n        punto = imagePointParTransformation(5, [tabfigD[indexD][0], tabfigD[indexD][1]], [xmil2, ymil2]) // le repère est direct, donc le sens de rotation est inversé...\n        trouver = false\n        while (trouver === false) {\n          for (let j = 0; j < nx * ny; j++) {\n            if (egal(punto[0], 4 + tabfigC[j][0], 0.001) && egal(punto[1], tabfigC[j][1], 0.001)) {\n              trouver = true\n              num2 = tabfigC[j][2]\n              xb = tabfigA[indexD][0]\n              yb = tabfigA[indexD][1]\n              centre2 = point(xmil2, ymil2, s1, 'above left')\n              quad[numD].couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'red')\n              quad[numD].opaciteDeRemplissage = 0.6\n              break\n            }\n          }\n          if (trouver === false) {\n            indexD = randint(0, nx * ny - 1)\n            numD = tabfigD[indexD][2]\n            indexcentre2 = randint(0, nx * ny - 1, [indexD])\n            xmil2 = tabfigB[indexcentre2][0]\n            ymil2 = tabfigB[indexcentre2][1]\n            punto = imagePointParTransformation(5, [tabfigD[indexD][0], tabfigD[indexD][1]], [xmil2, ymil2]) // le repère est direct, donc le sens de rotation est inversé...\n          }\n        }\n        texteAMC2 = numAlpha(1) + ' What is the number of the figure image of the figure ' + texteEnCouleurEtGras(`${numD}`, context.isAmc ? 'black' : 'red') + ' in center rotation ' + texteEnCouleurEtGras(`${s1}`, context.isAmc ? 'black' : 'red') + ' and angle 90° counterclockwise?' + ajouteChampTexteMathLive(this, 1, 'width25 inline') + '<br>'\n        texte += '<br>' + texteAMC2\n        texteCorr += '<br>' + numAlpha(1) + ' The figure image of the figure ' + texteEnCouleurEtGras(`${numD}`, context.isAmc ? 'black' : 'red') + ' in center rotation ' + texteEnCouleurEtGras(`${s1}`, context.isAmc ? 'black' : 'red') + ' and angle 90° counterclockwise bears the number ' + texteEnCouleurEtGras(`${num2}`, '#f15929') + '.<br>'\n\n        // third question: center B, rotation 90° counterclockwise, a figure of tabfigC gives a figure of tabfigD\n        indexC = randint(0, nx * ny - 1)\n        numC = tabfigC[indexC][2]\n        indexcentre3 = randint(0, nx * ny - 1, [indexC])\n        xmil3 = tabfigB[indexcentre3][0]\n        ymil3 = tabfigB[indexcentre3][1]\n        punto = imagePointParTransformation(6, [tabfigC[indexC][0], tabfigC[indexC][1]], [xmil3, ymil3]) // le repère est direct, donc le sens de rotation est inversé...\n        trouver = false\n        while (trouver === false) {\n          for (let j = 0; j < nx * ny; j++) {\n            if (egal(punto[0], tabfigD[j][0], 0.001) && egal(punto[1], 4 + tabfigD[j][1], 0.001)) {\n              trouver = true\n              num3 = tabfigD[j][2]\n              xc = tabfigA[indexC][0]\n              yc = tabfigA[indexC][1]\n              centre3 = point(xmil3, ymil3, s2, 'above left')\n              quad[numC].couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'blue')\n              quad[numC].opaciteDeRemplissage = 0.6\n              break\n            }\n          }\n          if (trouver === false) {\n            indexC = randint(0, nx * ny - 1)\n            numC = tabfigC[indexC][2]\n            indexcentre3 = randint(0, nx * ny - 1, [indexC])\n            xmil3 = tabfigB[indexcentre3][0]\n            ymil3 = tabfigB[indexcentre3][1]\n            punto = imagePointParTransformation(6, [tabfigC[indexC][0], tabfigC[indexC][1]], [xmil3, ymil3]) // le repère est direct, donc le sens de rotation est inversé...\n          }\n        }\n        texteAMC3 = numAlpha(2) + ' What is the number of the figure image of the figure ' + texteEnCouleurEtGras(`${numC}`, context.isAmc ? 'black' : 'blue') + ' in center rotation ' + texteEnCouleurEtGras(`${s2}`, context.isAmc ? 'black' : 'blue') + ' and angle 90° clockwise?' + ajouteChampTexteMathLive(this, 2, 'width25 inline') + '<br>'\n        texte += '<br>' + texteAMC3\n        texteCorr += '<br>' + numAlpha(2) + ' The figure image of the figure ' + texteEnCouleurEtGras(`${numC}`, context.isAmc ? 'black' : 'blue') + ' in center rotation ' + texteEnCouleurEtGras(`${s2}`, context.isAmc ? 'black' : 'blue') + ' and angle 90° clockwise bears the number ' + texteEnCouleurEtGras(`${num3}`, '#f15929') + '.<br>'\n\n        trace = tracePoint(centre1, context.isAmc ? 'black' : 'green')\n        label = labelPoint(centre1, context.isAmc ? 'black' : 'green')\n        trace.epaisseur = 2\n        trace.taille = 4\n        objetsEnonce.push(trace, label)\n        objetsCorrection.push(trace, label)\n        trace = tracePoint(centre2, context.isAmc ? 'black' : 'red')\n        label = labelPoint(centre2, context.isAmc ? 'black' : 'red')\n        trace.epaisseur = 2\n        trace.taille = 4\n        objetsEnonce.push(trace, label)\n        objetsCorrection.push(trace, label)\n        trace = tracePoint(centre3, context.isAmc ? 'black' : 'blue')\n        label = labelPoint(centre3, context.isAmc ? 'black' : 'blue')\n        trace.epaisseur = 2\n        trace.taille = 4\n        objetsEnonce.push(trace, label)\n        objetsCorrection.push(trace, label)\n        objetsCorrection.push(rotationAnimee(quad[numA], centre1, -90, `id=\"anim${numeroExercice}A\" hard=\"2s\" repeatcount=\"1\"`), rotationAnimee(quad[numD], centre2, 90, `id=\"anim${numeroExercice}B\" dur=\"2s\" repeatcount=\"1\"`), rotationAnimee(quad[numC], centre3, -90, `id=\"anim${numeroExercice}C\" dur=\"2s\" repeatcount=\"1\"`))\n\n        consigneAMC = mathalea2d({\n          xmin: Xmin,\n          xmax: Xmax,\n          ymin: Ymin,\n          ymax: Ymax,\n          pixelsParCm: 15,\n          scale: 0.3,\n          optionsTikz: ['every node/.style={scale=0.6}'],\n          mainlevee: false\n        }, objetsEnonce\n        )\n        texte += consigneAMC\n        quad1 = translation(quad[num1], vecteur(0, 0))\n        quad1.couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'green')\n        quad1.opaciteDeRemplissage = 0.3\n        quad2 = translation(quad[num2], vecteur(0, 0))\n        quad2.couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'red')\n        quad2.opaciteDeRemplissage = 0.3\n        quad3 = translation(quad[num3], vecteur(0, 0))\n        quad3.couleurDeRemplissage = colorToLatexOrHTML(context.isAmc ? 'black' : 'blue')\n        quad3.opaciteDeRemplissage = 0.3\n        arc1 = arc(point(tabfigA[indexA][0], tabfigA[indexA][1]), centre1, -90)\n        rayon11 = segment(point(tabfigA[indexA][0], tabfigA[indexA][1]), centre1, context.isAmc ? 'black' : 'green')\n        rayon12 = rotation(rayon11, centre1, -90)\n        rayon11.pointilles = 2\n        rayon12.pointilles = 2\n        rayon12.color = colorToLatexOrHTML(context.isAmc ? 'black' : 'green')\n        arc1.pointilles = 2\n        arc1.epaisseur = 2\n        arc1.color = colorToLatexOrHTML(context.isAmc ? 'black' : 'green')\n        arc2 = arc(point(tabfigD[indexD][0], tabfigD[indexD][1]), centre2, 90)\n        rayon21 = segment(point(tabfigD[indexD][0], tabfigD[indexD][1]), centre2, context.isAmc ? 'black' : 'red')\n        rayon22 = rotation(rayon21, centre2, 90)\n        rayon21.pointilles = 2\n        rayon22.pointilles = 2\n        rayon22.color = colorToLatexOrHTML(context.isAmc ? 'black' : 'red')\n        arc2.pointilles = 2\n        arc2.epaisseur = 2\n        arc2.color = colorToLatexOrHTML(context.isAmc ? 'black' : 'red')\n        arc3 = arc(point(tabfigC[indexC][0], tabfigC[indexC][1]), centre3, -90)\n        rayon31 = segment(point(tabfigC[indexC][0], tabfigC[indexC][1]), centre3, context.isAmc ? 'black' : 'blue')\n        rayon32 = rotation(rayon31, centre3, -90)\n        rayon31.pointilles = 2\n        rayon32.pointilles = 2\n        rayon32.color = colorToLatexOrHTML(context.isAmc ? 'black' : 'blue')\n        arc3.pointilles = 2\n        arc3.epaisseur = 2\n        arc3.color = colorToLatexOrHTML(context.isAmc ? 'black' : 'blue')\n        objetsCorrection.push(quad1, quad2, quad3, arc1, arc2, arc3, rayon11, rayon12, rayon21, rayon22, rayon31, rayon32,\n          codageAngleDroit(point(tabfigA[indexA][0], tabfigA[indexA][1]), centre1, rotation(point(tabfigA[indexA][0], tabfigA[indexA][1]), centre1, -90), context.isAmc ? 'black' : 'green', 1, 1),\n          codageAngleDroit(point(tabfigD[indexD][0], tabfigD[indexD][1]), centre2, rotation(point(tabfigD[indexD][0], tabfigD[indexD][1]), centre2, 90), context.isAmc ? 'black' : 'red', 1, 1),\n          codageAngleDroit(point(tabfigC[indexC][0], tabfigC[indexC][1]), centre3, rotation(point(tabfigC[indexC][0], tabfigC[indexC][1]), centre3, -90), context.isAmc ? 'black' : 'blue', 1, 1),\n          codageSegments('|||', context.isAmc ? 'black' : 'green', rayon11, rayon12), codageSegments('OO', context.isAmc ? 'black' : 'red', rayon21, rayon22), codageSegments('XXX', context.isAmc ? 'black' : 'blue', rayon31, rayon32))\n        texteCorr += mathalea2d(\n          Object.assign({}, fixeBordures(objetsCorrection), {\n            pixelsParCm: 15,\n            scale: 0.3,\n            optionsTikz: ['every node/.style={scale=0.6}'],\n            mainlevee: false\n          })\n          , objetsCorrection\n        )\n\n        break\n    }\n    setReponse(this, 0, num1)\n    setReponse(this, 1, num2)\n    setReponse(this, 2, num3)\n    if (context.isHtml) {\n      texteCorr += '<br>'\n      texteCorr += `<button class=\"btn ui labeled icon button\" style=\"margin:10px\" onclick=\"document.getElementById('anim${numeroExercice}A').beginElement()\"><i class=\"redo circle icon\"></i>Relaunch green animation</button>`\n      texteCorr += `<button class=\"btn ui labeled icon button\" style=\"margin:10px\" onclick=\"document.getElementById('anim${numeroExercice}B').beginElement()\"><i class=\"redo circle icon\"></i>Relaunch red animation</button>`\n      texteCorr += `<button class=\"btn ui labeled icon button\" style=\"margin:10px\" onclick=\"document.getElementById('anim${numeroExercice}C').beginElement()\"><i class=\"redo circle icon\"></i>Relaunch blue animation</button>`\n    }\n    this.listeQuestions.push(texte)\n    this.listeCorrections.push(texteCorr)\n    listeQuestionsToContenuSansNumero(this)\n    if (context.isAmc) {\n      this.autoCorrection[0] = {\n        enonce: consigneAMC,\n        options: { multicols: true },\n        propositions: [\n          {\n            type: 'AMCNum',\n            propositions: [{\n              texte: texteCorr,\n              statut: '',\n              reponse: {\n                texte: texteAMC1,\n                valeur: num1,\n                param: {\n                  digits: 2,\n                  decimals: 0,\n                  signe: false,\n                  approx: 0\n                }\n              }\n            }]\n          },\n          {\n            type: 'AMCNum',\n            propositions: [{\n              texte: '',\n              statut: '',\n              reponse: {\n                texte: texteAMC2,\n                valeur: num2,\n                param: {\n                  digits: 2,\n                  decimals: 0,\n                  signe: false,\n                  approx: 0\n                }\n              }\n            }]\n          },\n          {\n            type: 'AMCNum',\n            propositions: [{\n              texte: '',\n              statut: '',\n              reponse: {\n                texte: texteAMC3,\n                valeur: num3,\n                param: {\n                  digits: 2,\n                  decimals: 0,\n                  signe: false,\n                  approx: 0\n                }\n              }\n            }]\n          }]\n      }\n    }\n  }\n  this.besoinFormulaireNumerique = ['Transformations', 4, ' 1: Axial symmetries\\n 2: Central symmetries\\n 3: Translations\\n 4: Rotations\\n 5: Homotheties\\n']\n}\n"],"names":["interactifReady","interactifType","amcReady","amcType","PavagesEtTransformations","Exercice","numeroExercice","typeDePavage","gestionnaireFormulaireTexte","objetsEnonce","objetsCorrection","paves","quad","quadCorr","labelCentre1","labelCentre2","labelCentre3","quad1","quad2","quad3","mediatrice1","mediatrice2","mediatrice3","centre1","centre2","centre3","arc1","arc2","arc3","rayon11","rayon12","rayon21","rayon22","rayon31","rayon32","vecteur1","vecteur2","vecteur3","vector1","vector2","vector3","origine1","origine2","origine3","indexsym2","indexsym1","indexsym3","segCorr11","segCorr12","segCorr21","segCorr22","segCorr31","segCorr32","B","C","D","iB1","iB2","iB3","iC1","iA1","iD1","texte","texteCorr","tabfigA","tabfigB","tabfigC","tabfigD","pave","choixPave","randint","nx","ny","xB","yB","xC","yC","xD","yD","Zoom","Angle","A","point","similitude","xAI","yAI","I","milieu","J","xAJ","yAJ","xAxy","yAxy","numAxy","punto","trouver","indexA","numA","indexcentre1","xmil1","ymil1","indexD","numD","indexcentre2","xmil2","ymil2","indexC","numC","indexcentre3","xmil3","ymil3","num1","num2","num3","xc","yc","xb","yb","xa","ya","xV1","yV1","xV2","yV2","xV3","yV3","s0","choice","s1","s2","Xmin","Xmax","Ymin","Ymax","y","x","FractionEtendue","translation","polygone","vecteur","rotation","texteParPoint","barycentre","colorToLatexOrHTML","assombrirOuEclaircir","context","trace","label","pt1","pt2","texteAMC1","texteAMC2","texteAMC3","consigneAMC","imagePointParTransformation","j","egal","mediatrice","segment","codageAngleDroit","pointSurDroite","numAlpha","texteEnCouleurEtGras","miseEnEvidence","ajouteChampTexteMathLive","symetrieAnimee","pointIntersectionDD","droiteHorizontaleParPoint","droiteVerticaleParPoint","latexParCoordonnees","codageSegments","mathalea2d","tracePoint","labelPoint","rotationAnimee","arc","translationAnimee","fixeBordures","setReponse","listeQuestionsToContenuSansNumero"],"mappings":"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"}