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/3G23-p-PoUrY6.js.map
{"version":3,"file":"3G23-p-PoUrY6.js","sources":["../../src/exercices/3e/3G23.js"],"sourcesContent":["/* eslint-disable camelcase */\nimport { angleOriente } from '../../lib/2d/angles.js'\nimport { arc } from '../../lib/2d/cercle.js'\nimport { codageSegments } from '../../lib/2d/codages.js'\nimport { droite } from '../../lib/2d/droites.js'\nimport { milieu, point, pointIntersectionDD, pointSurSegment, tracePoint } from '../../lib/2d/points.js'\nimport { barycentre, nommePolygone, polygone } from '../../lib/2d/polygones.js'\nimport { grille } from '../../lib/2d/reperes.js'\nimport { segment, vecteur } from '../../lib/2d/segmentsVecteurs.js'\nimport { labelPoint } from '../../lib/2d/textes.js'\nimport { rotation } from '../../lib/2d/transformations.js'\nimport { aireTriangle } from '../../lib/2d/triangle.js'\nimport { choice, shuffle } from '../../lib/outils/arrayOutils'\nimport { texteEnCouleur } from '../../lib/outils/embellissements'\nimport { texteGras } from '../../lib/format/style'\n/* eslint-disable prefer-const */\n/* eslint-disable no-case-declarations */\nimport Exercice from '../Exercice.js'\nimport { mathalea2d, colorToLatexOrHTML } from '../../modules/2dGeneralites.js'\nimport { listeQuestionsToContenu, randint } from '../../modules/outils.js'\nimport { rotationAnimee, translationAnimee } from '../../modules/2dAnimation.js'\nimport { propositionsQcm } from '../../lib/interactif/qcm.js'\nexport const interactifReady = true\nexport const interactifType = 'qcm'\n\nexport const titre = 'Reconnaître des triangles égaux dans différentes configurations'\n\n/**\n * 3G23 reconnaître des triangles égaux\n * @author Jean-Claude Lhote et Sébastien Lozano (Rendu QCM et interactif par EE)\n */\nexport const uuid = '91513'\nexport const ref = '3G23'\nexport default function TrianglesEgaux () {\n  Exercice.call(this)\n  this.debug = false\n  this.titre = titre\n  this.nbQuestions = 1\n  this.nbQuestionsModifiable = false\n  this.nbCols = 1\n  this.nbColsCorr = 1\n  this.nouvelleVersion = function () {\n    this.listeQuestions = [] // Liste de questions\n    this.listeCorrections = [] // Liste de questions corrigées\n    this.autoCorrection = []\n    let texte = ''\n    let texteCorr = ''\n    const typesDeQuestions = randint(1, 1)\n    switch (typesDeQuestions) {\n      case 1:\n        let trouve = false; let aireABC; let A; let B; let C; let M; let p; let q; let r; let s; let X; let G; let Gq; let nom1; let grid\n        // on génère le triangle ABC avec une contrainte sur son aire\n        while (!trouve) {\n          A = point(choice([0, 3]), choice([0, 3]), 'A') // le point A !\n          B = point(choice([6, 9]), choice([6, 9]), 'B') // le point B !\n          C = rotation(B, A, 90, 'C') // le point C à partir de B par rotation autour de A!\n          C.x += choice([0, 3, 6]) // on décale l'abscise de C de 0, 3 ou 6 !\n          C.y += choice([-3, 0, 3]) // on décale l'abscise de C de -3, 0 ou 3 !\n          p = polygone(A, B, C) // on trace le polygone ABC\n          aireABC = aireTriangle(p) // Je savais bien que cette formule servirait un jour !\n          if (aireABC < 11 && aireABC > 5) { trouve = true }\n        }\n        G = barycentre(p) // le barycentre de ABC\n        const angleChoisi1 = choice([0, 90, 270])\n        p = rotation(p, G, angleChoisi1) // on tourne ABC de façon aléatoire autour de son barycentre\n        p.couleurDeRemplissage = colorToLatexOrHTML('gray') // remplissage de ABC\n        p.opaciteDeRemplissage = 0.2 // 0.5;//remplissage de ABC\n        nom1 = nommePolygone(p, 'ABC', 0.4) // on  nomme ABC en plaçant A,B et C à 0,4\n        grid = grille(-3, -3, 27, 18, 'gray', 0.4, 1) // on trace une grille\n        M = point(9, 12) // un point M fixe pour tourner autour\n        q = rotation(p, M, 90) // on fait tourner ABC autour de M de 90°\n\n        // on a besoin de récupérer le polygone non tracé\n        Gq = barycentre(q) // on construit son barycentre\n\n        // let angleChoisi2 = 270;\n        const angleChoisi2 = choice([0, 90, 180, 270])\n        r = rotation(q, Gq, angleChoisi2) // on fait tourner q encore autour de son barycentre\n        X = milieu(r.listePoints[0], r.listePoints[1]) // on place le milieu des deux premiers points de la figure obtenue qui sont les images des points A et B initiaux\n        s = rotation(r, X, 180) // on fait topurner r autour du milieu des deux extremites du plus grand côté\n        r.couleurDeRemplissage = colorToLatexOrHTML('red') // solution 1 en rouge\n        r.opaciteDeRemplissage = 0.2 // 0.5; //\n        s.couleurDeRemplissage = colorToLatexOrHTML('blue') // solution 2 en bleu\n        s.opaciteDeRemplissage = 0.2 // 0.5; //\n\n        // mes ajouts par rapport à la figure de JC\n        // on fixe une place pour D et E\n        const D = r.listePoints[0]\n        D.nom = 'D'\n        const E = r.listePoints[1]\n        E.nom = 'E'\n        // on crée un tableau avec les noms proposé pour les points\n        let tabPointsNames = ['F', 'G', 'H', 'I']\n        // on mélange le tableau\n        tabPointsNames = shuffle(tabPointsNames)\n        // on place les deux solutions\n        const I = r.listePoints[2]\n        // I.nom='I';\n        I.nom = tabPointsNames[0]\n        const I1 = rotation(I, X, 180)\n        // I1.nom='I1';\n        I1.nom = tabPointsNames[1]\n        // on place les mauvaises solutions\n        const F = point(I1.x + 1, I1.y + 1)\n        // F.nom='F';\n        F.nom = tabPointsNames[2]\n        const L = point(I.x - 1, I.y - 3)\n        // L.nom='L';\n        L.nom = tabPointsNames[3]\n        // on trace le segment [DE] en pointillés pour que la figure soit plus lisible\n        const sgmt_DE = segment(D, E, 'blue')\n        sgmt_DE.pointilles = 5\n        sgmt_DE.epaisseur = 1.5\n\n        // on prépare la fenetre mathalea2d\n        const fenetreMathalea2D = { xmin: -3, ymin: -3, xmax: 27, ymax: 18, pixelsParCm: 20, scale: 0.5 }\n\n        // on prépare les corrections\n        const centre_rot = {\n          sol1: pointIntersectionDD(droite(p.listePoints[1], E), droite(D, p.listePoints[0])),\n          sol2: pointIntersectionDD(droite(E, p.listePoints[0]), droite(p.listePoints[1], D))\n        }\n        const vect_trans = {\n          sol1: vecteur(p.listePoints[1], E),\n          sol2: vecteur(p.listePoints[1], D)\n        }\n        const transformationAnimee = {\n          sol1: '',\n          // nature_sol1:``,\n          sol2: ''\n        }\n        // pour construire les droites et les centres passant par les centres de rotations\n        let d, d1, d2, d3, d4, d5, J1, J2\n        switch (angleChoisi2) {\n          case 0:\n            transformationAnimee.sol1 = rotationAnimee(p, M, 90, 'begin=\"0s\" dur=\"4s\" repeatCount=\"indefinite\"')\n            // transformationAnimee.nature_sol1=`rotation`;\n            // la 1ere compo\n            d = droite(M, Gq)\n            d1 = rotation(d, M, -45)\n            d2 = rotation(d, Gq, 0)\n            J1 = pointIntersectionDD(d1, d2) // centre de la composée, ici l'angle vaut 90\n\n            // 2eme compo\n            d3 = droite(J1, X)\n            d4 = rotation(d3, J1, -45)\n            d5 = rotation(d3, X, 90)\n            J2 = pointIntersectionDD(d4, d5) // centre après la seconde composition angle 270 à 2pi près\n            transformationAnimee.sol2 = rotationAnimee(p, J2, -90, 'begin=\"0s\" dur=\"4s\" repeatCount=\"indefinite\"')\n            // transformationAnimee.nature_sol2=`rotation`;\n            break\n          case 90:\n            transformationAnimee.sol1 = rotationAnimee(p, centre_rot.sol1, 180, 'begin=\"0s\" dur=\"4s\" repeatCount=\"indefinite\"')\n            // transformationAnimee.nature_sol1=`rotation`;\n            transformationAnimee.sol2 = translationAnimee(p, vect_trans.sol2, 'begin=\"0s\" dur=\"4s\" repeatCount=\"indefinite\"')\n            // transformationAnimee.nature_sol2=`translation`;\n            break\n          case 180:\n            // la 1ere compo\n            d = droite(M, Gq)\n            d1 = rotation(d, M, -45)\n            d2 = rotation(d, Gq, 90)\n            J1 = pointIntersectionDD(d1, d2) // centre de la composée, ici l'angle vaut 270 à 2pi près\n\n            // 2eme compo\n            d3 = droite(J1, X)\n            d4 = rotation(d3, J1, -135)\n            d5 = rotation(d3, X, 90)\n            J2 = pointIntersectionDD(d4, d5) // centre après la seconde composition angle 450 à 2pi près\n            transformationAnimee.sol1 = rotationAnimee(p, J1, -90, 'begin=\"0s\" dur=\"4s\" repeatCount=\"indefinite\"')\n            // transformationAnimee.nature_sol1=`rotation`;\n            transformationAnimee.sol2 = rotationAnimee(p, J2, 90, 'begin=\"0s\" dur=\"4s\" repeatCount=\"indefinite\"')\n            // transformationAnimee.nature_sol2=`rotation`;\n            break\n          case 270:\n            transformationAnimee.sol1 = translationAnimee(p, vect_trans.sol1, 'begin=\"0s\" dur=\"4s\" repeatCount=\"indefinite\"')\n            // transformationAnimee.nature_sol1=`translation`;\n            transformationAnimee.sol2 = rotationAnimee(p, centre_rot.sol2, 180, 'begin=\"0s\" dur=\"4s\" repeatCount=\"indefinite\"')\n            // transformationAnimee.nature_sol2=`rotation`;\n            break\n        }\n        // DE = AB\n        const seg_DE_corr = segment(D, E, 'blue')\n        seg_DE_corr.epaisseur = 2\n        const seg_AB_corr = segment(p.listePoints[0], p.listePoints[1], 'blue')\n        seg_AB_corr.epaisseur = 2\n        // DI = AC ou EI1 = AC\n        const seg_DI_corr = segment(D, I, 'red')\n        const seg_EI1_corr = segment(E, I1, 'red')\n        seg_DI_corr.epaisseur = 2\n        seg_EI1_corr.epaisseur = 2\n        const seg_AC_corr = segment(p.listePoints[0], p.listePoints[2], 'red')\n        seg_AC_corr.epaisseur = 2\n        // EI = BC ou DI1 = BC\n        const seg_EI_corr = segment(E, I, 'green')\n        const seg_DI1_corr = segment(D, I1, 'green')\n        seg_EI_corr.epaisseur = 2\n        seg_DI1_corr.epaisseur = 2\n        const seg_BC_corr = segment(p.listePoints[1], p.listePoints[2], 'green')\n        seg_BC_corr.epaisseur = 2\n        // angle ABC = DEI ou ABC = EDI1\n        const ang_ABC = angleOriente(p.listePoints[0], p.listePoints[1], p.listePoints[2])\n        const ang_DEI = angleOriente(D, E, I)\n        const ang_EDI1 = angleOriente(E, D, I1)\n        // angle BCA = EID ou  BCA = DI1E\n        const ang_BCA = angleOriente(p.listePoints[1], p.listePoints[2], p.listePoints[0])\n        const ang_EID = angleOriente(E, I, D)\n        const ang_EI1D = angleOriente(E, I1, D)\n        // angle CAB = IDE ou CAB = I1ED\n        const ang_CAB = angleOriente(p.listePoints[2], p.listePoints[0], p.listePoints[1])\n        const ang_IDE = angleOriente(I, D, E)\n        const ang_I1ED = angleOriente(I1, E, D)\n\n        const codages_correction = {\n          sol1: [\n            // les segments\n            seg_AB_corr,\n            seg_DE_corr,\n            codageSegments('×', 'blue', p.listePoints[0], p.listePoints[1], D, E),\n            seg_AC_corr,\n            seg_DI_corr,\n            codageSegments('||', 'red', p.listePoints[0], p.listePoints[2], D, I),\n            seg_BC_corr,\n            seg_EI_corr,\n            codageSegments('O', 'green', p.listePoints[1], p.listePoints[2], I, E),\n            // les angles\n            arc(pointSurSegment(p.listePoints[1], p.listePoints[0], 0.8), p.listePoints[1], ang_ABC, true, 'red'),\n            arc(pointSurSegment(E, D, 0.8), E, ang_DEI, true, 'red'),\n            arc(pointSurSegment(p.listePoints[2], p.listePoints[1], 0.8), p.listePoints[2], ang_BCA, true, 'blue'),\n            arc(pointSurSegment(I, E, 0.8), I, ang_EID, true, 'blue'),\n            arc(pointSurSegment(p.listePoints[0], p.listePoints[2], 0.8), p.listePoints[0], ang_CAB, true, 'green'),\n            arc(pointSurSegment(D, I, 0.8), D, ang_IDE, true, 'green')\n          ],\n          sol2: [\n            // les segments\n            seg_AB_corr,\n            seg_DE_corr,\n            codageSegments('×', 'blue', p.listePoints[0], p.listePoints[1], D, E),\n            seg_BC_corr,\n            seg_DI1_corr,\n            codageSegments('O', 'green', p.listePoints[1], p.listePoints[2], D, I1),\n            seg_AC_corr,\n            seg_EI1_corr,\n            codageSegments('||', 'red', p.listePoints[0], p.listePoints[2], E, I1),\n            // les angles\n            arc(pointSurSegment(p.listePoints[1], p.listePoints[0], 0.8), p.listePoints[1], ang_ABC, true, 'red'),\n            arc(pointSurSegment(D, E, 0.8), D, ang_EDI1, true, 'red'),\n            arc(pointSurSegment(p.listePoints[2], p.listePoints[1], 0.8), p.listePoints[2], ang_BCA, true, 'blue'),\n            arc(pointSurSegment(I1, E, 0.8), I1, ang_EI1D, true, 'blue'),\n            arc(pointSurSegment(p.listePoints[0], p.listePoints[2], 0.8), p.listePoints[0], ang_CAB, true, 'green'),\n            arc(pointSurSegment(E, I1, 0.8), E, ang_I1ED, true, 'green')\n          ]\n        }\n\n        // on crée un objet pour stocker les figures et les corrections\n        const figures = {\n          enonce: `\n                        Où placer le point $M$ pour que les triangles $ABC$ et $DEM$ soient égaux ?\n                        <br>`,\n          fig: `\n                    <br>\n                    ${mathalea2d(\n                    fenetreMathalea2D,\n                    p,\n                    nom1,\n                    grid,\n                    tracePoint(D, E, I, I1, F, L),\n                    labelPoint(D, E, I, I1, F, L),\n                    sgmt_DE\n                )}`,\n          corr_animmee_sol1: `\n                        Les triangles $ABC$ et $DE${I.nom}$ ont les mêmes longueurs et les mêmes angles.\n                        <br> ${texteEnCouleur(`Donc le point ${I.nom} est un point qui convient.`)}\n                        <br>\n                        ${mathalea2d(\n                        fenetreMathalea2D,\n                        p,\n                        nom1,\n                        grid,\n                        // tracePoint(D,E,I,I1,F,L),\n                        tracePoint(I1, F, L),\n                        // labelPoint(D,E,I,I1,F,L),\n                        labelPoint(I1, F, L),\n                        nommePolygone(r, 'DE' + I.nom, 0.4),\n                        // sgmt_DE,\n                        r,\n                        transformationAnimee.sol1,\n                        codages_correction.sol1\n                    )}`,\n          corr_animmee_sol2: `\n                        Les triangles $ABC$ et $DE${I1.nom}$ ont les mêmes longueurs et les mêmes angles.\n                        <br> ${texteEnCouleur(`Donc le point ${I1.nom} est un point qui convient.`)}\n                        <br>\n                        ${mathalea2d(\n                        fenetreMathalea2D,\n                        p,\n                        nom1,\n                        grid,\n                        tracePoint(I, F, L),\n                        labelPoint(I, F, L),\n                        nommePolygone(s, 'DE' + I1.nom, 0.4),\n                        s,\n                        transformationAnimee.sol2,\n                        codages_correction.sol2\n                    )}`\n        }\n        texte = `${figures.enonce}`\n\n        this.autoCorrection[0] = {}\n        this.autoCorrection[0].options = { ordered: true }\n        this.autoCorrection[0].propositions = [\n          {\n            texte: 'en $F$',\n            statut: I.nom === 'F' || I1.nom === 'F'\n          },\n          {\n            texte: 'en $G$',\n            statut: I.nom === 'G' || I1.nom === 'G'\n          },\n          {\n            texte: 'en $H$',\n            statut: I.nom === 'H' || I1.nom === 'H'\n          },\n          {\n            texte: 'en $I$',\n            statut: I.nom === 'I' || I1.nom === 'I'\n          }\n        ]\n        texte += propositionsQcm(this, 0).texte\n        texte += `${figures.fig}`\n        texteCorr += `${texteGras('===== Première solution ======')}<br>${figures.corr_animmee_sol1}`\n        texteCorr += `<br><br>${texteGras('===== Seconde solution ======')}<br>${figures.corr_animmee_sol2}`\n\n        this.listeQuestions[0] = texte\n        this.listeCorrections[0] = texteCorr\n        listeQuestionsToContenu(this)\n        break\n    }\n  }\n}\n"],"names":["interactifReady","interactifType","titre","uuid","ref","TrianglesEgaux","Exercice","texte","texteCorr","randint","trouve","aireABC","A","B","C","M","p","q","r","s","X","G","Gq","nom1","grid","point","choice","rotation","polygone","aireTriangle","barycentre","angleChoisi1","colorToLatexOrHTML","nommePolygone","grille","angleChoisi2","milieu","D","E","tabPointsNames","shuffle","I","I1","F","L","sgmt_DE","segment","fenetreMathalea2D","centre_rot","pointIntersectionDD","droite","vect_trans","vecteur","transformationAnimee","d","d1","d2","d3","d4","d5","J1","J2","rotationAnimee","translationAnimee","seg_DE_corr","seg_AB_corr","seg_DI_corr","seg_EI1_corr","seg_AC_corr","seg_EI_corr","seg_DI1_corr","seg_BC_corr","ang_ABC","angleOriente","ang_DEI","ang_EDI1","ang_BCA","ang_EID","ang_EI1D","ang_CAB","ang_IDE","ang_I1ED","codages_correction","codageSegments","arc","pointSurSegment","figures","mathalea2d","tracePoint","labelPoint","texteEnCouleur","propositionsQcm","texteGras","listeQuestionsToContenu"],"mappings":"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"}