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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"}