File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/6G22-5aSJt6ac.js.map
{"version":3,"file":"6G22-5aSJt6ac.js","sources":["../../src/exercices/6e/6G22.js"],"sourcesContent":["import { angleOriente, codageAngle } from '../../lib/2d/angles.js'\nimport { droite } from '../../lib/2d/droites.js'\nimport { point, pointIntersectionDD, pointSurSegment } from '../../lib/2d/points.js'\nimport { polygoneAvecNom, polyline } from '../../lib/2d/polygones.js'\nimport { segment } from '../../lib/2d/segmentsVecteurs.js'\nimport { labelPoint } from '../../lib/2d/textes.js'\nimport { choice, combinaisonListes, enleveElement } from '../../lib/outils/arrayOutils'\nimport { miseEnEvidence } from '../../lib/outils/embellissements'\nimport { couleurTab } from '../../lib/format/style'\nimport { rangeMinMax } from '../../lib/outils/nombres.js'\nimport { lettreDepuisChiffre, numAlpha, sp } from '../../lib/outils/outilString.js'\nimport Exercice from '../Exercice.js'\nimport { mathalea2d } from '../../modules/2dGeneralites.js'\nimport { listeQuestionsToContenu, randint } from '../../modules/outils.js'\nimport { max, min } from 'mathjs'\nimport { ajouteChampTexteMathLive } from '../../lib/interactif/questionMathLive.js'\nimport { context } from '../../modules/context.js'\nimport { propositionsQcm } from '../../lib/interactif/qcm.js'\nimport { setReponse } from '../../lib/interactif/gestionInteractif.js'\n\nexport const titre = 'Name an angle'\nexport const interactifType = ['qcm', 'mathLive']\nexport const interactifReady = true\nexport const amcType = 'AMCHybride'\nexport const amcReady = true\n\nexport const dateDePublication = '13/04/2022'\n\n/**\n * Nommer un angle\n * Ref 6G22\n * @author Eric Elter\n * Publié le 13/04/2022\n */\nexport const uuid = 'e10d1'\nexport const ref = '6G22'\nexport default function NommerUnAngle () {\n Exercice.call(this) // Héritage de la classe Exercice()\n this.consigne = ''\n this.nbQuestions = 2\n this.sup = 2\n this.sup2 = 1\n this.sup3 = false\n this.nouvelleVersion = function () {\n this.listeQuestions = [] // Liste de questions\n this.listeCorrections = [] // Liste de questions corrigées\n this.autoCorrection = []\n this.interactifType = this.sup2 === 2 ? 'mathLive' : 'mth'\n let propositionsDuQcm = []\n for (let i = 0, texteAMC, troisBonnesReponses, listePt1, listePt3, resultatOK1, resultatOK2, resultat3, resultatPasOK1, resultatPasOK2, choixAngle, pt1, pt2, pt3, tailleAngle, aleaChoixCouleurRemplissage, couleurRemplissageAngle, couleurAngle, segmentsCorrection, resultat; i < this.nbQuestions; i++) {\n const propositionsAMC = []\n // let figureExo\n // We prepare the figure...\n const marquageAngle = this.sup3 ? combinaisonListes(['X', 'OO', '|||'], 3) : ['', '', '']\n\n const ChoixHorizontal = choice([-1, 1])\n\n const numB = randint(1, 26, [4, 5, 15, 23, 24, 25])\n const numA = randint(1, 26, [4, 5, 15, 23, 24, 25, numB])\n const numC = randint(1, 26, [4, 5, 15, 23, 24, 25, numB, numA])\n const numM = randint(1, 26, [4, 5, 15, 23, 24, 25, numB, numA, numC])\n const numN = randint(1, 26, [4, 5, 15, 23, 24, 25, numB, numA, numC, numM])\n const numI = randint(1, 26, [4, 5, 15, 23, 24, 25, numB, numA, numC, numM, numN])\n\n /* A décommenter pour débugguer (et commenter les 6 lignes du dessus)\n const numA = 1\n const numB = 2\n const numC = 3\n const numI = 9\n const numM = 13\n const numN = 14\n */\n\n const ordB = randint(0, 2)\n const B = point(0, ordB, lettreDepuisChiffre(numB))\n\n const absA = ChoixHorizontal * randint(7, 12)\n const ordA = randint(4, 8)\n const A = point(absA, ordA, lettreDepuisChiffre(numA))\n\n const absC = ChoixHorizontal * randint(7, 12, [absA])\n const ordC = -1 * randint(2, 5)\n const C = point(absC, ordC, lettreDepuisChiffre(numC))\n const fractionSegmentAB = this.sup === 1 ? randint(2, 8) : randint(4, 6)\n const fractionSegmentBC = this.sup === 1 ? randint(2, 8, [fractionSegmentAB]) : randint(4, 6, [fractionSegmentAB])\n const AB = segment(A, B).longueur\n const BC = segment(B, C).longueur\n const M = pointSurSegment(B, A, AB * fractionSegmentAB / 10, lettreDepuisChiffre(numM))\n const N = pointSurSegment(B, C, BC * fractionSegmentBC / 10, lettreDepuisChiffre(numN), 'below')\n const p1 = polygoneAvecNom(B, A, C)\n const I = pointIntersectionDD(droite(A, N), droite(C, M), lettreDepuisChiffre(numI), 'left')\n const listePoints = [numA, numB, numC, numM, numN, numI]\n const objetsEnonce = []\n const objetsCorrection = []\n const sommetsDejaTrouves = []\n const choixCouleurRemplissage = rangeMinMax(0, 7)\n // AngleFill color = ['none'] // J-C correction: we will define these colors by testing this.sup3\n // colorAngle = 'black'\n let texte = ''\n const O = point(0, 0) // Sert à construire les symboles pour les questions\n const M1 = point(4, 0) // Sert à construire les symboles pour les questions\n let texteCorr = ''\n let positionIbis = ChoixHorizontal === -1 ? 'right' : 'left'\n const Ibis = point(I.x, I.y, lettreDepuisChiffre(numI), positionIbis)\n\n for (let jj = 0, marquageAngleConsigne; jj < this.sup; jj++) {\n marquageAngleConsigne = []\n const choixSommet = choice(listePoints, sommetsDejaTrouves)\n if (!this.sup3) {\n aleaChoixCouleurRemplissage = choice(choixCouleurRemplissage)\n couleurRemplissageAngle = couleurTab(aleaChoixCouleurRemplissage)\n couleurAngle = couleurRemplissageAngle[0]\n enleveElement(choixCouleurRemplissage, aleaChoixCouleurRemplissage)\n } else {\n couleurRemplissageAngle = ['none']\n couleurAngle = 'black'\n }\n sommetsDejaTrouves[jj] = choixSommet\n switch (choixSommet) {\n case numA: // Si le sommet est A, alors il y a 3 choix possibles d'angles\n pt2 = A\n tailleAngle = min(segment(pt2, M).longueur, segment(pt2, N).longueur, segment(pt2, I).longueur, 4) / 2 * 0.9\n choixAngle = 1\n switch (choixAngle) {\n case 1 :\n listePt1 = [B, M]\n listePt3 = [N, I]\n break\n case 2 :\n listePt1 = [C]\n listePt3 = [N, I]\n break\n case 3 :\n listePt3 = [B, M]\n listePt1 = [C]\n break\n }\n break\n case numC : // Si le sommet est C, alors il y a 3 choix possibles d'angles\n pt2 = C\n choixAngle = randint(1, 3)\n tailleAngle = min(segment(pt2, M).longueur, segment(pt2, N).longueur, segment(pt2, I).longueur, 4) / 2 * 0.9\n switch (choixAngle) {\n case 1 :\n listePt1 = [B, N]\n listePt3 = [M, I]\n break\n case 2 :\n listePt3 = [M, I]\n listePt1 = [A]\n break\n case 3 :\n listePt3 = [B, N]\n listePt1 = [A]\n break\n }\n break\n case numB :\n pt2 = B\n tailleAngle = min(segment(pt2, M).longueur, segment(pt2, N).longueur, segment(pt2, I).longueur, 4) / 2 * 0.9\n listePt1 = [C, N]\n listePt3 = [A, M]\n break\n case numM : // Si le sommet est M, alors il y a 2 choix possibles d'angles\n pt2 = M\n tailleAngle = min(segment(pt2, A).longueur, segment(pt2, C).longueur, segment(pt2, I).longueur, 4) / 2 * 0.9\n listePt1 = [C, I]\n listePt3 = [randint(1, 2) === 1 ? A : B]\n positionIbis = ChoixHorizontal === -1 ? 'left' : 'right'\n break\n case numN : // Si le sommet est N, alors il y a 2 choix possibles d'angles\n pt2 = N\n tailleAngle = min(segment(pt2, A).longueur, segment(pt2, C).longueur, segment(pt2, I).longueur, 4) / 2 * 0.9\n listePt1 = [A, I]\n listePt3 = [randint(1, 2) === 1 ? C : B]\n break\n case numI:\n pt2 = I\n choixAngle = randint(1, 4)\n switch (choixAngle) {\n case 1:\n listePt1 = [M]\n listePt3 = [A]\n break\n case 2:\n listePt1 = [C]\n listePt3 = [A]\n positionIbis = ChoixHorizontal === -1 ? 'right' : 'left'\n break\n case 3:\n listePt1 = [N]\n listePt3 = [C]\n break\n case 4:\n listePt1 = [N]\n listePt3 = [M]\n positionIbis = ChoixHorizontal === -1 ? 'left' : 'right'\n break\n }\n tailleAngle = min(segment(pt2, listePt1[0]).longueur, segment(pt2, listePt3[0]).longueur, 4) / 2 * 0.9\n }\n\n pt1 = choice(listePt1) // Une fois la possibilité d'angle choisie, il y a deux points possibles.\n pt3 = choice(listePt3)\n segmentsCorrection = polyline([listePt1[0], pt2, listePt3[0]], this.sup3 ? 'black' : couleurRemplissageAngle[0])\n resultat = []\n for (const item1 in listePt1) {\n for (const item3 in listePt3) {\n resultat.push(`\\\\widehat{${listePt1[item1].nom}${pt2.nom}${listePt3[item3].nom}}`)\n resultat.push(`\\\\widehat{${listePt3[item3].nom}${pt2.nom}${listePt1[item1].nom}}`)\n }\n }\n // The following 5 results are for the MCQ\n // 2 correct results, 2 false results and a 5th false or true result, depending on the exercise.\n resultatOK1 = choice(resultat)\n resultatOK2 = choice(resultat, [resultatOK1])\n resultatPasOK1 = `\\\\widehat{${pt2.nom}${listePt1[randint(0, listePt1.length - 1)].nom}${listePt3[randint(0, listePt3.length - 1)].nom}}`\n resultatPasOK2 = `\\\\widehat{${listePt1[randint(0, listePt1.length - 1)].nom}${listePt3[randint(0, listePt3.length - 1)].nom}${pt2.nom}}`\n troisBonnesReponses = false\n if (choixSommet === numI) { // Si I est le sommet, que deux bonnes réponses.\n resultat3 = choice([`\\\\widehat{${listePt3[0].nom}${listePt1[0].nom}${pt2.nom}}`, `\\\\widehat{${pt2.nom}${listePt3[0].nom}${listePt1[0].nom}}`])\n } else {\n troisBonnesReponses = choice([true, false])\n if (troisBonnesReponses) { // Une 3e réponse vraie\n resultat3 = choice(resultat, [resultatOK1, resultatOK2])\n } else if (choice([true, false])) { // Une 3e réponse fausse\n resultat3 = `\\\\widehat{${pt2.nom}${listePt1[randint(0, listePt1.length - 1)].nom}${listePt3[randint(0, listePt3.length - 1)].nom}}`\n while (resultat3 === resultatPasOK1) resultat3 = `\\\\widehat{${pt2.nom}${listePt1[randint(0, listePt1.length - 1)].nom}${listePt3[randint(0, listePt3.length - 1)].nom}}`\n } else {\n resultat3 = `\\\\widehat{${listePt1[randint(0, listePt1.length - 1)].nom}${listePt3[randint(0, listePt3.length - 1)].nom}${pt2.nom}}`\n while (resultat3 === resultatPasOK2) resultat3 = `\\\\widehat{${listePt1[randint(0, listePt1.length - 1)].nom}${listePt3[randint(0, listePt3.length - 1)].nom}${pt2.nom}}`\n }\n }\n segmentsCorrection.epaisseur = 3\n const ang = angleOriente(pt1, pt2, pt3)\n\n objetsEnonce.push(codageAngle(pt1, pt2, ang, tailleAngle, marquageAngle[jj], couleurAngle, 2, 1, couleurRemplissageAngle[0], 1, false, true))\n if ((this.interactif || context.isAmc) && this.interactifType === 'mth') {\n texteAMC = 'Choose all angles that can name'\n } else {\n texteAMC = 'How can we name'\n }\n texteAMC += ' the angle'\n marquageAngleConsigne.push(codageAngle(M1, O, 79, 1, marquageAngle[jj]))\n texteAMC += this.sup3\n ? 'marked by the symbol' + mathalea2d({\n xmin: 0,\n ymin: 0,\n xmax: 1.2,\n ymax: 1.2,\n pixelsParCm: 20,\n scale: 0.5,\n style: 'display:inline'\n }, marquageAngleConsigne)\n : `${couleurRemplissageAngle[1]}`\n texteAMC += ((this.interactif || context.isAmc) && this.interactifType === 'mth') ? '.' : `${sp()}?`\n texte += this.sup > 1 ? `${jj === 0 ? '' : '<br>'}${numAlpha(jj)}` : ''\n texte += texteAMC\n if (this.interactif && this.interactifType === 'mathLive') {\n texte += ajouteChampTexteMathLive(this, i * this.sup + jj, 'inline width25')\n }\n setReponse(this, i * this.sup + jj, resultat, { formatInteractif: 'text' })\n objetsCorrection.push(codageAngle(pt1, pt2, ang, tailleAngle, marquageAngle[jj], couleurAngle, 2, 1, couleurRemplissageAngle[0], 1, false, true), segmentsCorrection)\n texteCorr += this.sup > 1 ? `${jj === 0 ? '' : '<br>'}${numAlpha(jj)}` : ''\n texteCorr += 'The angle'\n texteCorr += this.sup3\n ? 'marked by the symbol' + mathalea2d({\n xmin: 0,\n ymin: 0,\n xmax: 1.2,\n ymax: 1.2,\n pixelsParCm: 20,\n scale: 0.5,\n style: 'display:inline'\n }, marquageAngleConsigne)\n : `${couleurRemplissageAngle[1]}`\n texteCorr += ` is named, of your choice: $${this.sup3 ? miseEnEvidence(resultat[0], 'black') : miseEnEvidence(resultat[0], couleurRemplissageAngle[0])}$`\n for (let ee = 1; ee < resultat.length; ee++) {\n texteCorr += `, $${this.sup3 ? miseEnEvidence(resultat[ee], 'black') : miseEnEvidence(resultat[ee], couleurRemplissageAngle[0])}$`\n }\n texteCorr += '.'\n propositionsDuQcm = [{\n texte: `$${resultatOK1}$`,\n statut: true\n },\n {\n texte: `$${resultatOK2}$`,\n statut: true\n },\n {\n texte: `$${resultat3}$`,\n statut: troisBonnesReponses\n },\n {\n texte: `$${resultatPasOK1}$`,\n statut: false\n },\n {\n texte: `$${resultatPasOK2}$`,\n statut: false\n }]\n if (this.interactif && this.interactifType === 'mth') {\n this.autoCorrection[i * this.sup + jj].enonce = `${texte}\\n`\n this.autoCorrection[i * this.sup + jj].propositions = propositionsDuQcm\n this.autoCorrection[i * this.sup + jj].options = {}\n\n texte += propositionsQcm(this, i * this.sup + jj).texte\n }\n if (context.isAmc) {\n propositionsAMC[jj] = {\n type: 'mthMult', // on donne le type de la première question-réponse qcmMono, qcmMult, AMCNum, AMCOpen\n enonce: texteAMC,\n propositions: propositionsDuQcm\n }\n }\n }\n const params = {\n xmin: min(0, absA, absC) - 1,\n ymin: ordC - 1,\n xmax: max(0, absA, absC) + 1,\n ymax: ordA + 1,\n pixelsParCm: 20,\n scale: 0.5\n }\n objetsEnonce.push(p1[0], p1[1], segment(A, N), segment(C, M), labelPoint(M, N, Ibis))\n objetsCorrection.push(p1[0], p1[1], segment(A, N), segment(C, M), labelPoint(M, N, Ibis))\n const figureExo = mathalea2d(params, objetsEnonce)\n texte += '<br>' + figureExo\n texteCorr += '<br>' + mathalea2d(params, objetsCorrection)\n if (context.isAmc) {\n this.autoCorrection[i] = {\n enonce: figureExo,\n enonceAvant: true, // EE : ce champ est facultatif et permet (si false) de supprimer l'énoncé ci-dessus avant la numérotation de chaque question.\n enonceCentre: true, // EE : ce champ est facultatif et permet (si true) de centrer le champ 'States' ci-dessus.\n melange: true, // EE : ce champ est facultatif et permet (si false) de ne pas provoquer le mélange des questions.\n options: { avecSymboleMult: true }, // facultatif. Par défaut, multicols est à false. Ce paramètre provoque un multicolonnage (sur 2 colonnes par défaut) des propositions : pratique quand on met plusieurs AMCNum. !!! Attention, cela ne fonctionne pas, nativement, pour AMCOpen. !!!\n propositions: propositionsAMC\n }\n }\n this.listeQuestions.push(texte)\n this.listeCorrections.push(texteCorr)\n listeQuestionsToContenu(this)\n }\n }\n this.besoinFormulaireNumerique = ['Number of angles to find (between 1 and 3):', 3]\n if (context.isHtml) this.besoinFormulaire2Numerique = ['Interactive exercise', 2, '1: MCQ\\n2: Text']\n this.besoinFormulaire3CaseACocher = ['Black and white figure']\n}\n"],"names":["titre","interactifType","interactifReady","amcType","amcReady","dateDePublication","uuid","ref","NommerUnAngle","Exercice","propositionsDuQcm","i","texteAMC","troisBonnesReponses","listePt1","listePt3","resultatOK1","resultatOK2","resultat3","resultatPasOK1","resultatPasOK2","choixAngle","pt1","pt2","pt3","tailleAngle","aleaChoixCouleurRemplissage","couleurRemplissageAngle","couleurAngle","segmentsCorrection","resultat","propositionsAMC","marquageAngle","combinaisonListes","ChoixHorizontal","choice","numB","randint","numA","numC","numM","numN","numI","ordB","B","point","lettreDepuisChiffre","absA","ordA","A","absC","ordC","C","fractionSegmentAB","fractionSegmentBC","AB","segment","BC","M","pointSurSegment","N","p1","polygoneAvecNom","I","pointIntersectionDD","droite","listePoints","objetsEnonce","objetsCorrection","sommetsDejaTrouves","choixCouleurRemplissage","rangeMinMax","texte","O","M1","texteCorr","positionIbis","Ibis","jj","marquageAngleConsigne","choixSommet","couleurTab","enleveElement","min","polyline","item1","item3","ang","angleOriente","codageAngle","context","mathalea2d","sp","numAlpha","ajouteChampTexteMathLive","setReponse","miseEnEvidence","ee","propositionsQcm","params","max","labelPoint","figureExo","listeQuestionsToContenu"],"mappings":"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"}