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/2G23-1-qaqk7FgP.js.map
{"version":3,"file":"2G23-1-qaqk7FgP.js","sources":["../../src/exercices/2e/2G23-1.js"],"sourcesContent":["import { point, tracePoint } from '../../lib/2d/points.js'\nimport { grille } from '../../lib/2d/reperes.js'\nimport { segment, vecteur } from '../../lib/2d/segmentsVecteurs.js'\nimport { labelPoint } from '../../lib/2d/textes.js'\nimport { choice } from '../../lib/outils/arrayOutils'\nimport { ajouteChampTexteMathLive } from '../../lib/interactif/questionMathLive.js'\nimport Exercice from '../deprecatedExercice.js'\nimport { gestionnaireFormulaireTexte, listeQuestionsToContenu } from '../../modules/outils.js'\nimport { mathalea2d } from '../../modules/2dGeneralites.js'\nimport { setReponse } from '../../lib/interactif/gestionInteractif.js'\nimport { translation } from '../../lib/2d/transformations.js'\nimport { miseEnEvidence } from '../../lib/outils/embellissements'\n\nexport const interactifReady = true\nexport const interactifType = 'mathLive'\nexport const titre = 'Déterminer graphiquement des images par des translations'\nexport const dateDePublication = '13/07/2023'\nexport const dateDeModifImportante = '15/10/2023'\n\n/**\n * Images de points par des translations\n * @author Stéphan Grignon (modifié par EE pour une meilleure visibilité de la correction)\n */\nexport const uuid = 'd2b57'\nexport const ref = '2G23-1'\n\n// Une fonction pour créer la liste des noms possibles pour un triangle\nfunction allTrianglesNames (nomA, nomB, nomC) {\n  const nomsSommets = [nomA, nomB, nomC]\n  const noms = []\n  do {\n    const premierSommet = nomsSommets[0]\n    const deuxiemmeSommet = nomsSommets[1]\n    const troisiemeSommet = nomsSommets[2]\n    noms.push(premierSommet + deuxiemmeSommet + troisiemeSommet, premierSommet + troisiemeSommet + deuxiemmeSommet)\n    nomsSommets.shift()\n    nomsSommets.push(premierSommet)\n  } while (noms.length < 6)\n  return noms\n}\n\nfunction coefDirVecteurEgaleA1 (seg1, seg2, seg3) { // recherche si un des segments a pour coef directeur 1 ou -1 et possède un point sur la ligne d'en bas\n  return ((seg1.extremite2.y - seg1.extremite1.y === seg1.extremite2.x - seg1.extremite1.x) ||\n  (seg2.extremite2.y - seg2.extremite1.y === seg2.extremite2.x - seg2.extremite1.x) ||\n  (seg3.extremite2.y - seg3.extremite1.y === seg3.extremite2.x - seg3.extremite1.x)) &&\n  ((seg1.extremite1.y === 0) || (seg2.extremite1.y === 0) || (seg3.extremite1.y === 0) ||\n  (seg1.extremite2.y === 0) || (seg2.extremite2.y === 0) || (seg3.extremite2.y === 0))\n}\n\nfunction coefDirVecteurSegEgaleA1 (seg1) { // recherche si un des segments a pour coef directeur 1 ou -1 et possède un point sur la ligne d'en bas\n  return (seg1.extremite2.y - seg1.extremite1.y === seg1.extremite2.x - seg1.extremite1.x)\n}\n\nfunction estEgalAUnAutreSegment (s, s1, s2, s3) { // recherche si le segment s est égal au segment s1, s2, ou s3\n  return ((((s.extremite1.x === s1.extremite1.x && s.extremite1.y === s1.extremite1.y) ||\n  (s.extremite1.x === s1.extremite2.x && s.extremite1.y === s1.extremite2.y)) &&\n  ((s.extremite2.x === s1.extremite1.x && s.extremite2.y === s1.extremite1.y) ||\n  (s.extremite2.x === s1.extremite2.x && s.extremite2.y === s1.extremite2.y))) ||\n  (((s.extremite1.x === s2.extremite1.x && s.extremite1.y === s2.extremite1.y) ||\n  (s.extremite1.x === s2.extremite2.x && s.extremite1.y === s2.extremite2.y)) &&\n  ((s.extremite2.x === s2.extremite1.x && s.extremite2.y === s2.extremite1.y) ||\n  (s.extremite2.x === s2.extremite2.x && s.extremite2.y === s2.extremite2.y))) ||\n  (((s.extremite1.x === s3.extremite1.x && s.extremite1.y === s3.extremite1.y) ||\n  (s.extremite1.x === s3.extremite2.x && s.extremite1.y === s3.extremite2.y)) &&\n  ((s.extremite2.x === s3.extremite1.x && s.extremite2.y === s3.extremite1.y) ||\n  (s.extremite2.x === s3.extremite2.x && s.extremite2.y === s3.extremite2.y))))\n}\n\nexport default function ImagePtParTranslation () {\n  Exercice.call(this) // Héritage de la classe Exercice()\n  this.nbQuestions = 2\n  this.nbCols = 1\n  this.nbColsCorr = 1\n  this.sup = '1'\n  this.classe = 2\n  this.nouvelleVersion = function () {\n    this.listeQuestions = [] // Liste de questions\n    this.listeCorrections = [] // Liste de questions corrigées\n    const listeTypeDeQuestions = gestionnaireFormulaireTexte({\n      saisie: this.sup,\n      min: 1,\n      max: 3,\n      defaut: 1,\n      melange: 4,\n      nbQuestions: this.nbQuestions,\n      listeOfCase: ['point', 'segment', 'triangle']\n    })\n    for (let i = 0, texte, texteCorr, cpt = 0; i < this.nbQuestions && cpt < 50;) {\n      const objets = []\n      const objetsCorr = []\n      const A = point(0, 4, 'A', 'above')\n      const B = point(2, 4, 'B', 'above')\n      const C = point(4, 4, 'C', 'above')\n      const D = point(6, 4, 'D', 'above')\n      const E = point(8, 4, 'E', 'above')\n      const F = point(10, 4, 'F', 'above')\n      const G = point(0, 2, 'G', 'left')\n      const H = point(2, 2, 'H', 'below left')\n      const I = point(4, 2, 'I', 'below left')\n      const J = point(6, 2, 'J', 'below left')\n      const K = point(8, 2, 'K', 'below left')\n      const L = point(10, 2, 'L', 'right')\n      const M = point(0, 0, 'M', 'below')\n      const N = point(2, 0, 'N', 'below')\n      const O = point(4, 0, 'O', 'below')\n      const P = point(6, 0, 'P', 'below')\n      const Q = point(8, 0, 'Q', 'below')\n      const R = point(10, 0, 'R', 'below')\n      const CoorPt = [[0, 4], [2, 4], [4, 4], [6, 4], [8, 4], [10, 4], [0, 2], [2, 2], [4, 2], [6, 2], [8, 2], [10, 2], [0, 0], [2, 0], [4, 0], [6, 0], [8, 0], [10, 0]]\n      const NomPt = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R']\n      const Pt = [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R]\n      const PositionPt = tracePoint(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)\n      let LabelsPt = labelPoint(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)\n      const Grille = grille(0, 0, 10, 4)\n      let xSOL = 100; let xPtArrivSeg = 100; let xPt2Triangle = 100\n      switch (listeTypeDeQuestions[i]) {\n        case 'point': { // À partir d'un point\n          const PtDepart = choice([A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R])\n          let OrigVec = choice([A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R], [PtDepart])\n          let ExtrVec = choice([A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R], [PtDepart, OrigVec])\n          xSOL = PtDepart.x + ExtrVec.x - OrigVec.x\n          let ySOL = PtDepart.y + ExtrVec.y - OrigVec.y\n          while (xSOL < 0 || xSOL > 10 || ySOL < 0 || ySOL > 4) {\n            OrigVec = choice([A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R], [PtDepart])\n            ExtrVec = choice([A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R], [PtDepart, OrigVec])\n            xSOL = PtDepart.x + ExtrVec.x - OrigVec.x\n            ySOL = PtDepart.y + ExtrVec.y - OrigVec.y\n          }\n          const nomPD = PtDepart.nom\n          const nomOR = OrigVec.nom\n          const nomEXT = ExtrVec.nom\n          const NomSOL = NomPt[CoorPt.findIndex(couple => couple[0] === xSOL && couple[1] === ySOL)]\n          const trPtDepart = tracePoint(PtDepart, 'blue')\n          trPtDepart.epaisseur = 2\n          objets.push(PositionPt, LabelsPt, Grille)\n          objets.push(trPtDepart)\n\n          texte = this.classe === 2\n            ? `Sans justifier, donner l'image du point $${nomPD}$ par la translation de vecteur $\\\\overrightarrow{${nomOR}${nomEXT}}$.`\n            : `Sans justifier, donner l'image du point $${nomPD}$ par la translation qui transforme $${nomOR}$ en $${nomEXT}$.`\n          texte += mathalea2d({ xmin: -1, ymin: -1, xmax: 12, ymax: 5, pixelsParCm: 20, scale: 0.5, zoom: 1.75 }, objets) // On trace le graphique de la solution\n\n          if (this.interactif) {\n            texte += ajouteChampTexteMathLive(this, i, 'largeur15 inline', { texteAvant: `<br><br>L'image du point $${nomPD}$ est :` })\n          }\n\n          const VecDepl = vecteur(ExtrVec.x - OrigVec.x, ExtrVec.y - OrigVec.y) // Crée le vecteur déplacement\n          const VecDeplRep = VecDepl.representant(PtDepart, 'green') // Trace le vecteur déplacement\n          VecDepl.epaisseur = 2 // Variable qui grossit le tracé du vecteur\n          VecDepl.styleExtremites = '->' // Donne l'extrémité du vecteur\n          const nomVecDepl = VecDepl.representantNomme(PtDepart, nomOR + nomEXT, 1, 'green') // Affiche le nom du vecteur déplacement\n          const PositionPtCorr = tracePoint(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, 'lightgray')\n          const LabelsPtCorr = labelPoint(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, 'lightgray')\n          objetsCorr.push(PositionPtCorr, LabelsPtCorr, Grille, VecDeplRep)\n          if (this.classe === 2) objetsCorr.push(nomVecDepl)\n          objetsCorr.push(labelPoint(OrigVec, ExtrVec, 'green'))\n          objetsCorr.push(VecDepl.representant(OrigVec, 'green'))\n          objetsCorr.push(labelPoint(PtDepart, 'blue'), trPtDepart)\n          const ptSol = translation(PtDepart, VecDepl, NomSOL)\n          ptSol.positionLabel = ptSol.y === 0 ? 'below' : ptSol.y === 4 ? 'above' : 'below left'\n          const trPtSol = tracePoint(ptSol, '#f15929')\n          trPtSol.epaisseur = 2\n          objetsCorr.push(labelPoint(ptSol, '#f15929'), trPtSol)\n          texteCorr = this.classe === 2\n            ? `Le point $${miseEnEvidence(NomSOL)}$ est l'image du point $${nomPD}$ par la translation de vecteur $\\\\overrightarrow{${nomOR}${nomEXT}}$.`\n            : `Le point $${miseEnEvidence(NomSOL)}$ est l'image du point $${nomPD}$ par la translation qui transforme $${nomOR}$ en $${nomEXT}$.`\n          texteCorr += mathalea2d({ xmin: -1, ymin: -1, xmax: 12, ymax: 5, pixelsParCm: 20, scale: 0.5, zoom: 1.75 }, objetsCorr) // On trace le graphique de la solution\n          setReponse(this, i, NomSOL, { formatInteractif: 'texte' })\n        }\n          break\n\n        case 'segment': { // À partir d'un segment\n          const PtDepartSeg = choice([A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R])\n          xPtArrivSeg = PtDepartSeg.x + choice([-2, 0, 2])\n          let yPtArrivSeg = PtDepartSeg.y + choice([-2, 0, 2])\n          while (xPtArrivSeg < 0 || xPtArrivSeg > 10 || yPtArrivSeg < 0 || yPtArrivSeg > 4 || (xPtArrivSeg === PtDepartSeg.x && yPtArrivSeg === PtDepartSeg.y)) {\n            xPtArrivSeg = PtDepartSeg.x + choice([-2, 0, 2])\n            yPtArrivSeg = PtDepartSeg.y + choice([-2, 0, 2])\n          }\n          const Seg = segment(PtDepartSeg.x, PtDepartSeg.y, xPtArrivSeg, yPtArrivSeg, 'blue')\n          Seg.epaisseur = 2 // Variable qui grossit le tracé du segment\n          const nomPDSeg = PtDepartSeg.nom\n          const nomPASeg = NomPt[CoorPt.findIndex(couple => couple[0] === xPtArrivSeg && couple[1] === yPtArrivSeg)]\n          const PtArrivSeg = Pt[CoorPt.findIndex(couple => couple[0] === xPtArrivSeg && couple[1] === yPtArrivSeg)]\n          let OrigVec = choice([A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R], [PtDepartSeg, PtArrivSeg])\n          let ExtrVec = choice([A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R], [PtDepartSeg, PtArrivSeg, OrigVec])\n          let xSOLPDSeg = PtDepartSeg.x + ExtrVec.x - OrigVec.x\n          let ySOLPDSeg = PtDepartSeg.y + ExtrVec.y - OrigVec.y\n          let xSOLPASeg = PtArrivSeg.x + ExtrVec.x - OrigVec.x\n          let ySOLPASeg = PtArrivSeg.y + ExtrVec.y - OrigVec.y\n          while (xSOLPDSeg < 0 || xSOLPASeg < 0 || ySOLPDSeg < 0 || ySOLPASeg < 0 || xSOLPDSeg > 10 || xSOLPASeg > 10 || ySOLPDSeg > 4 || ySOLPASeg > 4) {\n            OrigVec = choice([A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R], [PtDepartSeg, PtArrivSeg])\n            ExtrVec = choice([A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R], [PtDepartSeg, PtArrivSeg, OrigVec])\n            xSOLPDSeg = PtDepartSeg.x + ExtrVec.x - OrigVec.x\n            ySOLPDSeg = PtDepartSeg.y + ExtrVec.y - OrigVec.y\n            xSOLPASeg = PtArrivSeg.x + ExtrVec.x - OrigVec.x\n            ySOLPASeg = PtArrivSeg.y + ExtrVec.y - OrigVec.y\n          }\n          const nomOR = OrigVec.nom\n          const nomEXT = ExtrVec.nom\n          const nomSOLPDSeg = NomPt[CoorPt.findIndex(couple => couple[0] === xSOLPDSeg && couple[1] === ySOLPDSeg)]\n          const nomSOLPASeg = NomPt[CoorPt.findIndex(couple => couple[0] === xSOLPASeg && couple[1] === ySOLPASeg)]\n          const SegSOL = segment(xSOLPDSeg, ySOLPDSeg, xSOLPASeg, ySOLPASeg, '#f15929')\n          SegSOL.epaisseur = 2 // Variable qui grossit le tracé du vecteur\n\n          const VecDepl = vecteur(ExtrVec.x - OrigVec.x, ExtrVec.y - OrigVec.y) // Crée le vecteur déplacement\n          const VecDeplRep = VecDepl.representant(PtDepartSeg, 'green') // Trace le vecteur déplacement\n          VecDepl.epaisseur = 2 // Variable qui grossit le tracé du vecteur\n          VecDepl.styleExtremites = '->' // Donne l'extrémité du vecteur\n\n          // Recherche du meilleur placement des points H à K pour éviter chevauchement\n          let placementPoints\n          if (coefDirVecteurSegEgaleA1(VecDeplRep)) {\n            // placementPoints = VecDeplRep.extremite1.x - VecDeplRep.extremite2.x > 0 ? 'below right' : 'above left'\n            placementPoints = VecDeplRep.extremite1.x - VecDeplRep.extremite2.x > 0 ? 'below' : 'above'\n          } else {\n            // placementPoints = VecDeplRep.extremite1.x - VecDeplRep.extremite2.x > 0 ? 'above left' : 'below left'\n            placementPoints = VecDeplRep.extremite1.x - VecDeplRep.extremite2.x > 0 ? 'above' : 'below'\n          }\n          H.positionLabel = placementPoints\n          I.positionLabel = placementPoints\n          J.positionLabel = placementPoints\n          K.positionLabel = placementPoints\n          LabelsPt = labelPoint(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)\n\n          objets.push(PositionPt, LabelsPt, Grille, Seg)\n          texte = this.classe === 3\n            ? `Sans justifier, donner l'image du segment $[${nomPDSeg}${nomPASeg}]$ par la translation de vecteur $\\\\overrightarrow{${nomOR}${nomEXT}}$.`\n            : `Sans justifier, donner l'image du segment $[${nomPDSeg}${nomPASeg}]$ par la translation qui transforme $${nomOR}$ en $${nomEXT}$.`\n          texte += mathalea2d({ xmin: -1, ymin: -1, xmax: 12, ymax: 5, pixelsParCm: 20, scale: 0.5, zoom: 1.75 }, objets) // On trace le graphique de la solution\n\n          if (this.interactif) {\n            texte += ajouteChampTexteMathLive(this, i, 'largeur15 inline', { texteAvant: `<br><br>L'image du segment $[${nomPDSeg}${nomPASeg}]$ est :` })\n          }\n\n          const nomVecDepl = VecDepl.representantNomme(PtDepartSeg, nomOR + nomEXT, 1, 'green') // Affiche le nom du vecteur déplacement\n          const PositionPtCorr = tracePoint(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, 'lightgray')\n          const LabelsPtCorr = labelPoint(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, 'lightgray')\n          objetsCorr.push(PositionPtCorr, LabelsPtCorr, Grille, VecDeplRep, Seg, SegSOL)\n\n          // Affichage du vecteur natif\n          // Cas pour les 4èmes et cas pour les 2ndes, affichage du vecteur ou pas\n          if (this.classe === 2) objetsCorr.push(nomVecDepl)\n\n          // Cas où les vecteurs se confondent partiellement\n          if (!VecDeplRep.estSecant(VecDepl.representant(OrigVec))) {\n            // objetsCorr.push(VecDepl.representantNomme(OrigVec, nomOR + nomEXT, 1, 'green'))\n            objetsCorr.push(labelPoint(OrigVec, ExtrVec, 'green'))\n            objetsCorr.push(VecDepl.representant(OrigVec, 'green'))\n          }\n\n          objetsCorr.push(labelPoint(PtDepartSeg, PtArrivSeg, 'blue'), tracePoint(PtDepartSeg, PtArrivSeg, 'blue'))\n          const ptSOLPDSeg = translation(PtDepartSeg, VecDepl, nomSOLPDSeg)\n          ptSOLPDSeg.positionLabel = ptSOLPDSeg.y === 0 ? 'below' : ptSOLPDSeg.y === 4 ? 'above' : placementPoints\n          const ptSOLPASeg = translation(PtArrivSeg, VecDepl, nomSOLPASeg)\n          ptSOLPASeg.positionLabel = ptSOLPASeg.y === 0 ? 'below' : ptSOLPASeg.y === 4 ? 'above' : placementPoints\n\n          objetsCorr.push(tracePoint(ptSOLPDSeg, '#f15929'))\n          objetsCorr.push(tracePoint(ptSOLPASeg, '#f15929'))\n          objetsCorr.push(labelPoint(ptSOLPDSeg, '#f15929'))\n          objetsCorr.push(labelPoint(ptSOLPASeg, '#f15929'))\n\n          texteCorr = this.classe === 3\n            ? `Le segment $${miseEnEvidence(`[${nomSOLPDSeg}${nomSOLPASeg}]`)}$ est l'image du segment $[${nomPDSeg}${nomPASeg}]$ par la translation de vecteur $\\\\overrightarrow{${nomOR}${nomEXT}}$.`\n            : `Le segment $${miseEnEvidence(`[${nomSOLPDSeg}${nomSOLPASeg}]`)}$ est l'image du segment $[${nomPDSeg}${nomPASeg}]$ par la translation qui transforme $${nomOR}$ en $${nomEXT}$.`\n          texteCorr += mathalea2d({ xmin: -1, ymin: -1, xmax: 12, ymax: 5, pixelsParCm: 20, scale: 0.5, zoom: 1.75 }, objetsCorr) // On trace le graphique de la solution\n          const tousNomsSegments = [`\\\\left\\\\lbrack ${nomSOLPDSeg}${nomSOLPASeg}\\\\right\\\\rbrack`, `\\\\left\\\\lbrack ${nomSOLPASeg}${nomSOLPDSeg}\\\\right\\\\rbrack`]\n          setReponse(this, i, tousNomsSegments, { formatInteractif: 'texte' })\n        }\n          break\n\n        case 'triangle': { // À partir d'un triangle\n          const Pt1Triangle = choice([A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R])\n          xPt2Triangle = Pt1Triangle.x + choice([-2, 0, 2])\n          let yPt2Triangle = Pt1Triangle.y + choice([-2, 0, 2])\n          let xPt3Triangle, yPt3Triangle\n          while (xPt2Triangle < 0 || xPt2Triangle > 10 || yPt2Triangle < 0 || yPt2Triangle > 4 || (xPt2Triangle === Pt1Triangle.x && yPt2Triangle === Pt1Triangle.y)) {\n            xPt2Triangle = Pt1Triangle.x + choice([-2, 0, 2])\n            yPt2Triangle = Pt1Triangle.y + choice([-2, 0, 2])\n          }\n          if (xPt2Triangle === Pt1Triangle.x) {\n            xPt3Triangle = xPt2Triangle + choice([-2, 2])\n            yPt3Triangle = yPt2Triangle\n          }\n          if (yPt2Triangle === Pt1Triangle.y) {\n            yPt3Triangle = yPt2Triangle + choice([-2, 2])\n            xPt3Triangle = xPt2Triangle\n          }\n          if (xPt2Triangle !== Pt1Triangle.x && yPt2Triangle !== Pt1Triangle.y) {\n            xPt3Triangle = choice([Pt1Triangle.x, xPt2Triangle])\n            if (xPt3Triangle === Pt1Triangle.x) {\n              yPt3Triangle = yPt2Triangle\n            } else {\n              yPt3Triangle = Pt1Triangle.y\n            }\n          }\n          while (xPt3Triangle < 0 || xPt3Triangle > 10 || yPt3Triangle < 0 || yPt3Triangle > 4) {\n            if (xPt2Triangle === Pt1Triangle.x) {\n              xPt3Triangle = xPt2Triangle + choice([-2, 2])\n              yPt3Triangle = yPt2Triangle\n            }\n            if (yPt2Triangle === Pt1Triangle.y) {\n              yPt3Triangle = yPt2Triangle + choice([-2, 2])\n              xPt3Triangle = xPt2Triangle\n            }\n            if (xPt2Triangle !== Pt1Triangle.x && yPt2Triangle !== Pt1Triangle.y) {\n              xPt3Triangle = choice([Pt1Triangle.x, xPt2Triangle])\n              if (xPt3Triangle === Pt1Triangle.x) {\n                yPt3Triangle = yPt2Triangle\n              } else {\n                yPt3Triangle = Pt1Triangle.y\n              }\n            }\n          }\n          const nomPD1Tri = Pt1Triangle.nom\n          const nomPD2Tri = NomPt[CoorPt.findIndex(couple => couple[0] === xPt2Triangle && couple[1] === yPt2Triangle)]\n          const Pt2Triangle = Pt[CoorPt.findIndex(couple => couple[0] === xPt2Triangle && couple[1] === yPt2Triangle)]\n          const nomPD3Tri = NomPt[CoorPt.findIndex(couple => couple[0] === xPt3Triangle && couple[1] === yPt3Triangle)]\n          const Pt3Triangle = Pt[CoorPt.findIndex(couple => couple[0] === xPt3Triangle && couple[1] === yPt3Triangle)]\n          let OrigVec = choice([A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R], [Pt1Triangle, Pt2Triangle, Pt3Triangle])\n          let ExtrVec = choice([A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R], [Pt1Triangle, Pt2Triangle, Pt3Triangle, OrigVec])\n          let xSOLPA1Tri = Pt1Triangle.x + ExtrVec.x - OrigVec.x\n          let ySOLPA1Tri = Pt1Triangle.y + ExtrVec.y - OrigVec.y\n          let xSOLPA2Tri = xPt2Triangle + ExtrVec.x - OrigVec.x\n          let ySOLPA2Tri = yPt2Triangle + ExtrVec.y - OrigVec.y\n          let xSOLPA3Tri = xPt3Triangle + ExtrVec.x - OrigVec.x\n          let ySOLPA3Tri = yPt3Triangle + ExtrVec.y - OrigVec.y\n          while (xSOLPA1Tri < 0 || xSOLPA2Tri < 0 || xSOLPA3Tri < 0 || ySOLPA1Tri < 0 || ySOLPA2Tri < 0 || ySOLPA3Tri < 0 || xSOLPA1Tri > 10 || xSOLPA2Tri > 10 || xSOLPA3Tri > 10 || ySOLPA1Tri > 4 || ySOLPA2Tri > 4 || ySOLPA3Tri > 4) {\n            OrigVec = choice([A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R], [Pt1Triangle, Pt2Triangle, Pt3Triangle])\n            ExtrVec = choice([A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R], [Pt1Triangle, Pt2Triangle, Pt3Triangle, OrigVec])\n            xSOLPA1Tri = Pt1Triangle.x + ExtrVec.x - OrigVec.x\n            ySOLPA1Tri = Pt1Triangle.y + ExtrVec.y - OrigVec.y\n            xSOLPA2Tri = xPt2Triangle + ExtrVec.x - OrigVec.x\n            ySOLPA2Tri = yPt2Triangle + ExtrVec.y - OrigVec.y\n            xSOLPA3Tri = xPt3Triangle + ExtrVec.x - OrigVec.x\n            ySOLPA3Tri = yPt3Triangle + ExtrVec.y - OrigVec.y\n          }\n\n          // Nom des points pertinents\n          const nomOR = OrigVec.nom\n          const nomEXT = ExtrVec.nom\n          const nomSOLPA1Tri = NomPt[CoorPt.findIndex(couple => couple[0] === xSOLPA1Tri && couple[1] === ySOLPA1Tri)]\n          const nomSOLPA2Tri = NomPt[CoorPt.findIndex(couple => couple[0] === xSOLPA2Tri && couple[1] === ySOLPA2Tri)]\n          const nomSOLPA3Tri = NomPt[CoorPt.findIndex(couple => couple[0] === xSOLPA3Tri && couple[1] === ySOLPA3Tri)]\n\n          // Segments origines\n          const Seg1 = segment(Pt1Triangle.x, Pt1Triangle.y, xPt2Triangle, yPt2Triangle, 'blue')\n          Seg1.epaisseur = 2 // Variable qui grossit le tracé du segment\n          const Seg2 = segment(Pt1Triangle.x, Pt1Triangle.y, xPt3Triangle, yPt3Triangle, 'blue')\n          Seg2.epaisseur = 2 // Variable qui grossit le tracé du segment\n          const Seg3 = segment(xPt2Triangle, yPt2Triangle, xPt3Triangle, yPt3Triangle, 'blue')\n          Seg3.epaisseur = 2 // Variable qui grossit le tracé du segment\n\n          // Segment images\n          const SegSOL1 = segment(xSOLPA1Tri, ySOLPA1Tri, xSOLPA2Tri, ySOLPA2Tri, '#f15929')\n          SegSOL1.epaisseur = 2 // Variable qui grossit le tracé du segment\n          const SegSOL2 = segment(xSOLPA1Tri, ySOLPA1Tri, xSOLPA3Tri, ySOLPA3Tri, '#f15929')\n          SegSOL2.epaisseur = 2 // Variable qui grossit le tracé du segment\n          const SegSOL3 = segment(xSOLPA2Tri, ySOLPA2Tri, xSOLPA3Tri, ySOLPA3Tri, '#f15929')\n          SegSOL3.epaisseur = 2 // Variable qui grossit le tracé du segment\n\n          // Recherche du meilleur placement des points G à L pour éviter chevauchement\n          const placementPoints = coefDirVecteurEgaleA1(Seg1, Seg2, Seg3) || coefDirVecteurEgaleA1(SegSOL1, SegSOL2, SegSOL3) ? 'below right' : 'below left'\n          // G.positionLabel = placementPoints\n          H.positionLabel = placementPoints\n          I.positionLabel = placementPoints\n          J.positionLabel = placementPoints\n          K.positionLabel = placementPoints\n          // L.positionLabel = placementPoints\n          LabelsPt = labelPoint(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)\n\n          objets.push(PositionPt, LabelsPt, Grille, Seg1, Seg2, Seg3)\n\n          // Cas pour les 4èmes et cas pour les 2ndes, vecteur ou pas\n          texte = this.classe === 2\n            ? `Sans justifier, donner l'image du triangle $${nomPD1Tri}${nomPD2Tri}${nomPD3Tri}$ par la translation de vecteur $\\\\overrightarrow{${nomOR}${nomEXT}}$.`\n            : `Sans justifier, donner l'image du triangle $${nomPD1Tri}${nomPD2Tri}${nomPD3Tri}$ par la translation qui transforme $${nomOR}$ en $${nomEXT}$.`\n          texte += mathalea2d({ xmin: -1, ymin: -1, xmax: 12, ymax: 5, pixelsParCm: 20, scale: 0.5, zoom: 1.75 }, objets) // On trace le graphique de la solution\n\n          if (this.interactif) {\n            texte += ajouteChampTexteMathLive(this, i, 'largeur15 inline', { texteAvant: `<br><br>L'image du triangle $${nomPD1Tri}${nomPD2Tri}${nomPD3Tri}$ est :` })\n          }\n\n          // Vecteur natif\n          const VecDepl = vecteur(ExtrVec.x - OrigVec.x, ExtrVec.y - OrigVec.y) // Crée le vecteur déplacement\n\n          // Vecteur issu d'un sommet du triangle (qui ne soit pas confondu avec un côté des deux triangles)\n          const sommetsTriangle = [Pt1Triangle, Pt2Triangle, Pt3Triangle]\n          let VecDeplRep = VecDepl.representant(Pt1Triangle, 'green') // Trace le vecteur déplacement\n          let ee = 0\n          while (estEgalAUnAutreSegment(VecDeplRep, SegSOL1, SegSOL2, SegSOL3) || estEgalAUnAutreSegment(VecDeplRep, Seg1, Seg2, Seg3)) {\n            ee++\n            VecDeplRep = VecDepl.representant(sommetsTriangle[ee], 'green')\n          }\n          VecDepl.epaisseur = 2 // Variable qui grossit le tracé du vecteur\n          VecDepl.styleExtremites = '->' // Donne l'extrémité du vecteur\n          const nomVecDepl = VecDepl.representantNomme(sommetsTriangle[ee], nomOR + nomEXT, 1, 'green') // Affiche le nom du vecteur déplacement\n\n          // Les points de la grille correction\n          const PositionPtCorr = tracePoint(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, 'lightgray')\n          const LabelsPtCorr = labelPoint(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, 'lightgray')\n\n          // Creation du debut de l'objet Correction\n          objetsCorr.push(PositionPtCorr, LabelsPtCorr, Grille, VecDeplRep, SegSOL1, SegSOL2, SegSOL3, Seg1, Seg2, Seg3)\n\n          // Affichage du vecteur natif\n          // Cas pour les 4èmes et cas pour les 2ndes, affichage du vecteur ou pas\n          if (this.classe === 2) objetsCorr.push(nomVecDepl)\n\n          // Cas où les vecteurs se confondent partiellement\n          if (!VecDeplRep.estSecant(VecDepl.representant(OrigVec))) {\n            // objetsCorr.push(VecDepl.representantNomme(OrigVec, nomOR + nomEXT, 1, 'green'))\n            objetsCorr.push(labelPoint(OrigVec, ExtrVec, 'green'))\n            objetsCorr.push(VecDepl.representant(OrigVec, 'green'))\n          }\n\n          objetsCorr.push(labelPoint(Pt1Triangle, Pt2Triangle, Pt3Triangle, 'blue'), tracePoint(Pt1Triangle, Pt2Triangle, Pt3Triangle, 'blue'))\n\n          // Affichage des sommets du triangle image\n          const Pt1TriangleSOL = translation(Pt1Triangle, VecDepl, nomSOLPA1Tri)\n          Pt1TriangleSOL.positionLabel = Pt1TriangleSOL.y === 0 ? 'below' : Pt1TriangleSOL.y === 4 ? 'above' : placementPoints\n          objetsCorr.push(tracePoint(Pt1TriangleSOL, '#f15929'))\n          objetsCorr.push(labelPoint(Pt1TriangleSOL, '#f15929'))\n          const Pt2TriangleSOL = translation(Pt2Triangle, VecDepl, nomSOLPA2Tri)\n          Pt2TriangleSOL.positionLabel = Pt2TriangleSOL.y === 0 ? 'below' : Pt2TriangleSOL.y === 4 ? 'above' : placementPoints\n          objetsCorr.push(tracePoint(Pt2TriangleSOL, '#f15929'))\n          objetsCorr.push(labelPoint(Pt2TriangleSOL, '#f15929'))\n          const Pt3TriangleSOL = translation(Pt3Triangle, VecDepl, nomSOLPA3Tri)\n          Pt3TriangleSOL.positionLabel = Pt3TriangleSOL.y === 0 ? 'below' : Pt3TriangleSOL.y === 4 ? 'above' : placementPoints\n          objetsCorr.push(tracePoint(Pt3TriangleSOL, '#f15929'))\n          objetsCorr.push(labelPoint(Pt3TriangleSOL, '#f15929'))\n\n          texteCorr = this.classe === 2\n            ? `Le triangle $${miseEnEvidence(`${nomSOLPA1Tri}${nomSOLPA2Tri}${nomSOLPA3Tri}`)}$ est l'image du triangle $${nomPD1Tri}${nomPD2Tri}${nomPD3Tri}$ par la translation de vecteur $\\\\overrightarrow{${nomOR}${nomEXT}}$.`\n            : `Le triangle $${miseEnEvidence(`${nomSOLPA1Tri}${nomSOLPA2Tri}${nomSOLPA3Tri}`)}$ est l'image du triangle $${nomPD1Tri}${nomPD2Tri}${nomPD3Tri}$ par la translation qui transforme $${nomOR}$ en $${nomEXT}$.`\n          texteCorr += mathalea2d({ xmin: -1, ymin: -1, xmax: 12, ymax: 5, pixelsParCm: 20, scale: 0.5, zoom: 1.75 }, objetsCorr) // On trace le graphique de la solution\n\n          setReponse(this, i, allTrianglesNames(nomSOLPA1Tri, nomSOLPA2Tri, nomSOLPA3Tri), { formatInteractif: 'texte' })\n        }\n          break\n      }\n      if (this.questionJamaisPosee(i, xSOL, xPtArrivSeg, xPt2Triangle)) { // Si la question n'a jamais été posée, on en créé une autre\n        this.listeQuestions.push(texte)\n        this.listeCorrections.push(texteCorr)\n        i++\n      }\n      cpt++\n    }\n    listeQuestionsToContenu(this)\n  }\n  this.besoinFormulaireTexte = ['Situations différentes ', 'Nombres séparés par des tirets \\n1 : À partir d\\'une point\\n2 : À partir d\\'une segment\\n3 : À partir d\\'un triangle\\n4 : Mélange']\n}\n"],"names":["interactifReady","interactifType","titre","dateDePublication","dateDeModifImportante","uuid","ref","allTrianglesNames","nomA","nomB","nomC","nomsSommets","noms","premierSommet","deuxiemmeSommet","troisiemeSommet","coefDirVecteurEgaleA1","seg1","seg2","seg3","coefDirVecteurSegEgaleA1","estEgalAUnAutreSegment","s","s1","s2","s3","ImagePtParTranslation","Exercice","listeTypeDeQuestions","gestionnaireFormulaireTexte","i","texte","texteCorr","cpt","objets","objetsCorr","A","point","B","C","D","E","F","G","H","I","J","K","L","M","N","P","Q","R","CoorPt","NomPt","Pt","PositionPt","tracePoint","LabelsPt","labelPoint","Grille","grille","xSOL","xPtArrivSeg","xPt2Triangle","PtDepart","choice","OrigVec","ExtrVec","ySOL","nomPD","nomOR","nomEXT","NomSOL","couple","trPtDepart","mathalea2d","ajouteChampTexteMathLive","VecDepl","vecteur","VecDeplRep","nomVecDepl","PositionPtCorr","LabelsPtCorr","ptSol","translation","trPtSol","miseEnEvidence","setReponse","PtDepartSeg","yPtArrivSeg","Seg","segment","nomPDSeg","nomPASeg","PtArrivSeg","xSOLPDSeg","ySOLPDSeg","xSOLPASeg","ySOLPASeg","nomSOLPDSeg","nomSOLPASeg","SegSOL","placementPoints","ptSOLPDSeg","ptSOLPASeg","tousNomsSegments","Pt1Triangle","yPt2Triangle","xPt3Triangle","yPt3Triangle","nomPD1Tri","nomPD2Tri","Pt2Triangle","nomPD3Tri","Pt3Triangle","xSOLPA1Tri","ySOLPA1Tri","xSOLPA2Tri","ySOLPA2Tri","xSOLPA3Tri","ySOLPA3Tri","nomSOLPA1Tri","nomSOLPA2Tri","nomSOLPA3Tri","Seg1","Seg2","Seg3","SegSOL1","SegSOL2","SegSOL3","sommetsTriangle","ee","Pt1TriangleSOL","Pt2TriangleSOL","Pt3TriangleSOL","listeQuestionsToContenu"],"mappings":"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"}