File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/5G30-2-Q6BaDcRO.js.map
{"version":3,"file":"5G30-2-Q6BaDcRO.js","sources":["../../src/exercices/5e/5G30-2.js"],"sourcesContent":["import { arcPointPointAngle } from '../../lib/2d/cercle.js'\nimport { texteSurArc } from '../../lib/2d/codages.js'\nimport { droite } from '../../lib/2d/droites.js'\nimport { point } from '../../lib/2d/points.js'\nimport { vecteur } from '../../lib/2d/segmentsVecteurs.js'\nimport { labelPoint } from '../../lib/2d/textes.js'\nimport { homothetie, rotation, translation } from '../../lib/2d/transformations.js'\nimport { choice } from '../../lib/outils/arrayOutils'\nimport Exercice from '../Exercice.js'\nimport { mathalea2d, colorToLatexOrHTML, fixeBordures } from '../../modules/2dGeneralites.js'\nimport { context } from '../../modules/context.js'\nimport { gestionnaireFormulaireTexte, listeQuestionsToContenu, randint } from '../../modules/outils.js'\nimport { pickRandom } from 'mathjs'\nimport { aleaVariables } from '../../modules/outilsMathjs.js'\nimport { miseEnEvidence, texteEnCouleurEtGras, texteGras } from '../../lib/outils/embellissements'\nimport { propositionsQcm } from '../../lib/interactif/qcm.js'\nexport const titre = 'Make connections between angles and parallelism'\nexport const dateDeModifImportante = '21/01/2024'\nexport const amcReady = true\nexport const amcType = 'AMCHybride'\nexport const interactifReady = true\nexport const interactifType = 'qcm'\n\nfunction aleaName (names = [], n = names.length, result = []) {\n const r = Math.floor(Math.random() * names.length)\n result.push(names[r])\n names.splice(r, 1)\n if (result.length === n) {\n return result\n } else {\n return aleaName(names, n, result)\n }\n}\n\nexport const dateDePublication = '15/01/2022' // La date de publication initiale au format 'jj/mm/aaaa' pour affichage temporaire d'un tag\n\nfunction anglesSecantes (A, rot = { O: 60, A: 0 }) {\n const s = rotation(translation(A, vecteur(1, 0)), A, rot.A)\n const S = rotation(translation(A, vecteur(3, 0)), A, rot.A)\n const t = rotation(s, A, 180)\n const T = rotation(S, A, 180)\n const x = rotation(translation(A, vecteur(1, 0)), A, rot.O)\n const X = rotation(translation(A, vecteur(3, 0)), A, rot.O)\n const Ox = rotation(x, A, 180)\n const OX = rotation(X, A, 180)\n return {\n a: arcPointPointAngle(s, x, rot.O - rot.A, true, 'blue'),\n b: arcPointPointAngle(x, t, 180 - (rot.O - rot.A), true, 'green'),\n c: arcPointPointAngle(t, Ox, rot.O - rot.A, true, 'red'),\n d: arcPointPointAngle(Ox, s, 180 - (rot.O - rot.A), true, 'gray'),\n s,\n S,\n t,\n T,\n x,\n X,\n Ox,\n OX,\n As: droite(A, s),\n Ax: droite(A, x),\n A,\n labela: texteSurArc((rot.O - rot.A) % 180 + '°', s, x, rot.O - rot.A, 'black', 0.7, true),\n labelb: texteSurArc((180 - (rot.O - rot.A)) % 180 + '°', x, t, 180 - (rot.O - rot.A), 'black', 0.7, true),\n labelc: texteSurArc((rot.O - rot.A) % 180 + '°', t, Ox, rot.O - rot.A, 'black', 0.7, true),\n labeld: texteSurArc((180 - (rot.O - rot.A)) % 180 + '°', Ox, s, 180 - (rot.O - rot.A), 'black', 0.7, true)\n }\n}\n/**\n * Effectuer des liens entre angles et parallélisme\n * @author Frédéric PIOU\n * rendu interactif par Guillaume Valmont le 21/01/2024\n*/\nexport const uuid = '19812'\nexport const ref = '5G30-2'\nexport default function ExercicesAnglesAIC () {\n Exercice.call(this)\n const formulaire = [\n '1: Angles marked alternate-internal or corresponding?',\n '2: Determine if lines are parallel (marked angles).',\n '3: Determine if lines are parallel (named angles).',\n '4: Calculate the measure of an angle (marked angles).',\n '5: Calculate the measure of an angle (named angles).',\n '6: Mark an alternate-internal angle or corresponding to a marked angle.',\n '7: Name an alternate-internal angle or corresponding to a named angle.',\n '8: Mixture'\n ]\n\n this.nbQuestions = 1\n this.besoinFormulaireTexte = ['Type of questions', 'Numbers separated by hyphens\\n' + formulaire.join('\\n')]\n\n this.consigne = ''\n this.nbCols = 2\n this.nbColsCorr = 2\n this.tailleDiaporama = 1\n this.video = ''\n this.correctionDetailleeDisponible = false\n this.correctionDetaillee = true\n context.isHtml ? (this.spacing = 1.75) : (this.spacing = 0)\n context.isHtml ? (this.spacingCorr = 1.75) : (this.spacingCorr = 0)\n this.sup = 8 // Type d'exercice\n this.nbQuestions = 3\n\n this.nouvelleVersion = function () {\n this.listeQuestions = [] // Liste de questions\n this.listeCorrections = [] // Liste de questions corrigées\n this.autoCorrection = [] // À placer même si l'exercise n'a pas vocation à être corrigé\n const nquestion = gestionnaireFormulaireTexte({\n saisie: this.sup,\n max: 7,\n defaut: 8,\n melange: 8,\n nbQuestions: this.nbQuestions,\n shuffle: false\n })\n\n for (let i = 0, exercice, cpt = 0; i < this.nbQuestions && cpt < 100;) { // Boucle principale où i+1 correspond au numéro de la question\n const propositions = []\n let options = { ordered: true }\n switch (nquestion[i]) { // Chaque question peut être d'un type différent, ici 4 cas sont prévus...\n case 1: {\n const objetsEnonce = [] // on initialise le tableau des objets Mathalea2d de l'enoncé\n const objetsCorrection = [] // Idem pour la correction\n const param = aleaVariables(\n {\n O: 'randomInt(0.90)',\n A: 'randomInt(-90,90)',\n B: 'randomInt(-90,90)',\n r1: 'pickRandom([1.5,2])',\n r2: 'pickRandom([1.5,2])',\n test: 'O-A>30 and O-B>30'\n }\n )\n const O = point(0, 0)\n const anglesA = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O), O, param.r1), { O: param.O, A: param.A })\n const anglesB = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O + 180), O, param.r2), { O: param.O, A: param.B })\n for (const i of ['a', 'b', 'c', 'd']) {\n anglesA[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n anglesA[i].opaciteDeRemplissage = 0.7\n anglesB[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n anglesB[i].opaciteDeRemplissage = 0.7\n }\n const ab = choice([\n choice(['aa', 'bb', 'CC', 'dd']),\n choice(['That', 'db']),\n choice(['a', 'b', 'c', 'd']) + choice(['a', 'b', 'c', 'd'])\n ])\n const a = ab[0]\n const b = ab[1]\n objetsEnonce.push(\n anglesA[a],\n anglesA.As,\n anglesA.Ax,\n anglesB[b],\n anglesB.As,\n anglesB.Ax,\n anglesA['label' + a],\n anglesB['label' + b]\n )\n const paramsEnonce = fixeBordures([\n ...Object.keys(anglesA).map(key => { return anglesA[key] }),\n ...Object.keys(anglesB).map(key => { return anglesB[key] })\n ])\n // We copy all the contents of objectsEnonce into objectsCorrection\n objetsEnonce.forEach(objet => {\n objetsCorrection.push(objet)\n })\n // here the text, tex_corr, various mathalea2d objects entering into the content of the exercise are created\n let texte = 'Are the marked angles alternate-internal, corresponding, or neither?<br>'\n let reponse\n let reponseCorrecte\n if (a === b) {\n reponse = `are ${texteEnCouleurEtGras('correspondents')}`\n reponseCorrecte = 'correspondents'\n } else if (a + b === 'That' || a + b === 'db') {\n reponse = `are ${texteEnCouleurEtGras('alternate interior')}`\n reponseCorrecte = 'alternate interior'\n } else {\n reponse = `are not ${texteEnCouleurEtGras('nor alternate-internal')}, ${texteEnCouleurEtGras('nor correspondents')}`\n reponseCorrecte = 'Neither'\n }\n const texteCorr = `By definition, angles marked ${reponse}.`\n texte += mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsEnonce)\n exercice = { texte, texteCorr }\n console.log(i, reponseCorrecte, propositions)\n propositions.push({\n texte: 'alternate interior',\n statut: reponseCorrecte === 'alternate interior'\n })\n propositions.push({\n texte: 'correspondents',\n statut: reponseCorrecte === 'correspondents'\n })\n propositions.push({\n texte: 'Neither',\n statut: reponseCorrecte === 'Neither'\n })\n break\n }\n case 2: {\n const objetsEnonce = [] // on initialise le tableau des objets Mathalea2d de l'enoncé\n const objetsCorrection = [] // Idem pour la correction\n const param = aleaVariables(\n {\n O: 'randomInt(0.90)',\n A: 'randomInt(-90,90)',\n B: 'A',\n r1: 'pickRandom([1.5,2])',\n r2: 'pickRandom([1.5,2])',\n test: '70>O-A>30 and 70>O-B>30 and abs(A-B)<45'\n }\n )\n const ab = aleaVariables(\n {\n a: 'randomInt(0,3)',\n b: 'randomInt(0,3)',\n test: 'a!=b and (a!=2 or b!=0) and (a!=3 or b!=1)'\n }\n )\n\n const O = point(0, 0)\n const anglesA = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O), O, param.r1), { O: param.O, A: param.A })\n const anglesB = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O + 180), O, param.r2), { O: param.O, A: param.B })\n for (const i of ['a', 'b', 'c', 'd']) {\n anglesA[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n anglesA[i].opaciteDeRemplissage = 0.7\n anglesB[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n anglesB[i].opaciteDeRemplissage = 0.7\n }\n anglesA.As.color = colorToLatexOrHTML('red')\n anglesB.As.color = colorToLatexOrHTML('red')\n const a = ['a', 'b', 'c', 'd'][parseInt(ab.a)]\n const b = ['a', 'b', 'c', 'd'][parseInt(ab.b)]\n const epsilon = choice([pickRandom([-2, -1, 1, 2]), 0])\n anglesA.labela = texteSurArc(((param.O - param.A) % 180 + epsilon) + '°', anglesA.s, anglesA.x, param.O - param.A, 'black', 0.7, true)\n anglesA.labelb = texteSurArc((180 - (param.O - param.A) + epsilon) % 180 + '°', anglesA.x, anglesA.t, 180 - (param.O - param.A), 'black', 0.7, true)\n anglesA.labelc = texteSurArc((param.O - param.A + epsilon) % 180 + '°', anglesA.t, anglesA.Ox, param.O - param.A, 'black', 0.7, true)\n anglesA.labeld = texteSurArc((180 - (param.O - param.A) + epsilon) % 180 + '°', anglesA.Ox, anglesA.s, 180 - (param.O - param.A), 'black', 0.7, true)\n anglesB.labela = texteSurArc(((param.O - param.A) % 180) + '°', anglesB.s, anglesB.x, param.O - param.A, 'black', 0.7, true)\n anglesB.labelb = texteSurArc((180 - (param.O - param.A)) % 180 + '°', anglesB.x, anglesB.t, 180 - (param.O - param.A), 'black', 0.7, true)\n anglesB.labelc = texteSurArc((param.O - param.A) % 180 + '°', anglesB.t, anglesB.Ox, param.O - param.A, 'black', 0.7, true)\n anglesB.labeld = texteSurArc((180 - (param.O - param.A)) % 180 + '°', anglesB.Ox, anglesB.s, 180 - (param.O - param.A), 'black', 0.7, true)\n objetsEnonce.push(\n anglesA[a],\n anglesA.As,\n anglesA.Ax,\n anglesB[b],\n anglesB.As,\n anglesB.Ax,\n anglesA['label' + a],\n anglesB['label' + b]\n )\n objetsEnonce.forEach(objet => {\n objetsCorrection.push(objet)\n })\n let angles, calculs\n anglesA[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('red')\n anglesA.labela.color = 'red'\n anglesA.labelb.color = 'red'\n anglesA.labelc.color = 'red'\n anglesA.labeld.color = 'red'\n anglesB.labela.color = 'blue'\n anglesB.labelb.color = 'blue'\n anglesB.labelc.color = 'blue'\n anglesB.labeld.color = 'blue'\n\n switch (a + b) {\n case 'ab':\n case 'ad':\n anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'a'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n angles = 'correspondents'\n calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labela.texte, 'green')}$`\n break\n case 'ac':\n anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'a'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n angles = 'correspondents'\n break\n case 'ba':\n anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n angles = 'correspondents'\n calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n break\n case 'bc':\n anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n angles = 'correspondents'\n calculs = `$180°-${miseEnEvidence(anglesB.labelc.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n break\n case 'comic':\n anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n angles = 'correspondents'\n break\n case 'cb':\n case 'CD':\n anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'a'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n angles = 'alternate interior'\n calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labela.texte, 'green')}$`\n break\n case 'da':\n anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n angles = 'alternate interior'\n calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n break\n case 'DC':\n anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n calculs = `$180°-${miseEnEvidence(anglesB.labelc.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n angles = 'alternate interior'\n break\n }\n const paramsEnonce = fixeBordures([\n ...Object.keys(anglesA).map(key => { return anglesA[key] }),\n ...Object.keys(anglesB).map(key => { return anglesB[key] })\n ])\n let texte = 'Are the red lines parallel?<br>'\n let sont, coord\n if (epsilon !== 0) {\n coord = 'but not'\n sont = 'are not'\n } else {\n coord = 'And'\n sont = 'are'\n }\n const texteCorr = mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsCorrection) + String.raw`\n <br>\n ${calculs !== undefined ? calculs : 'The blue and green angles are opposite each other at the vertex. <br> So they are of the same measurement.'}\n <br>\n Les angles rouge et vert sont ${angles} ${texteGras(coord + ' of the same measure')}.\n <br>\n Donc les droites rouges ${texteEnCouleurEtGras(sont + ' parallel')}.\n `\n texte += mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsEnonce)\n exercice = { texte, texteCorr }\n propositions.push({\n texte: 'Yes',\n statut: epsilon === 0\n })\n propositions.push({\n texte: 'No',\n statut: epsilon !== 0\n })\n break\n }\n case 4: {\n const objetsEnonce = [] // on initialise le tableau des objets Mathalea2d de l'enoncé\n const objetsCorrection = [] // Idem pour la correction\n const param = aleaVariables(\n {\n O: 'randomInt(0.90)',\n A: 'randomInt(-90,90)',\n B: 'A',\n r1: 'pickRandom([1.5,2])',\n r2: 'pickRandom([1.5,2])',\n test: '70>O-A>30 and 70>O-B>30 and abs(A-B)<45'\n }\n )\n const ab = aleaVariables(\n {\n a: 'randomInt(0,3)',\n b: 'randomInt(0,3)',\n test: 'a!=b and (a!=2 or b!=0) and (a!=3 or b!=1)'\n }\n )\n const O = point(0, 0)\n const anglesA = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O), O, param.r1), { O: param.O, A: param.A })\n const anglesB = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O + 180), O, param.r2), { O: param.O, A: param.B })\n for (const i of ['a', 'b', 'c', 'd']) {\n anglesA[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n anglesB[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n anglesA[i].opaciteDeRemplissage = 0.7\n anglesB[i].opaciteDeRemplissage = 0.7\n }\n const a = ['a', 'b', 'c', 'd'][parseInt(ab.a)]\n const b = ['a', 'b', 'c', 'd'][parseInt(ab.b)]\n anglesA.As.color = colorToLatexOrHTML('red')\n anglesB.As.color = colorToLatexOrHTML('red')\n const epsilon = 0\n anglesA.labela = texteSurArc(((param.O - param.A) % 180 + epsilon) + '°', anglesA.s, anglesA.x, param.O - param.A, 'black', 0.7, true)\n anglesA.labelb = texteSurArc((180 - (param.O - param.A) + epsilon) % 180 + '°', anglesA.x, anglesA.t, 180 - (param.O - param.A), 'black', 0.7, true)\n anglesA.labelc = texteSurArc((param.O - param.A + epsilon) % 180 + '°', anglesA.t, anglesA.Ox, param.O - param.A, 'black', 0.7, true)\n anglesA.labeld = texteSurArc((180 - (param.O - param.A) + epsilon) % 180 + '°', anglesA.Ox, anglesA.s, 180 - (param.O - param.A), 'black', 0.7, true)\n anglesB.labela = texteSurArc(((param.O - param.A) % 180) + '°', anglesB.s, anglesB.x, param.O - param.A, 'black', 0.7, true)\n anglesB.labelb = texteSurArc((180 - (param.O - param.A)) % 180 + '°', anglesB.x, anglesB.t, 180 - (param.O - param.A), 'black', 0.7, true)\n anglesB.labelc = texteSurArc((param.O - param.A) % 180 + '°', anglesB.t, anglesB.Ox, param.O - param.A, 'black', 0.7, true)\n anglesB.labeld = texteSurArc((180 - (param.O - param.A)) % 180 + '°', anglesB.Ox, anglesB.s, 180 - (param.O - param.A), 'black', 0.7, true)\n objetsEnonce.push(\n anglesA[a],\n anglesA.As,\n anglesA.Ax,\n anglesB[b],\n anglesB.As,\n anglesB.Ax,\n anglesA['label' + a]\n )\n objetsEnonce.forEach(objet => {\n objetsCorrection.push(objet)\n })\n objetsCorrection.push(anglesB['label' + b])\n let angles, calculs, mesure\n anglesA[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('red')\n anglesA.labela.color = 'red'\n anglesA.labelb.color = 'red'\n anglesA.labelc.color = 'red'\n anglesA.labeld.color = 'red'\n anglesB.labela.color = 'blue'\n anglesB.labelb.color = 'blue'\n anglesB.labelc.color = 'blue'\n anglesB.labeld.color = 'blue'\n\n switch (a + b) {\n case 'ab':\n anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'a'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n angles = 'correspondents'\n calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n mesure = anglesB.labelb.texte\n break\n case 'ac':\n anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'a'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n angles = 'correspondents'\n mesure = anglesB.labela.texte\n break\n case 'ad':\n anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'a'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n angles = 'correspondents'\n calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n mesure = anglesB.labeld.texte\n break\n case 'ba':\n anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n angles = 'correspondents'\n calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labela.texte, 'green')}$`\n mesure = anglesB.labela.texte\n break\n case 'bc':\n anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n angles = 'correspondents'\n calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labelc.texte, 'green')}$`\n mesure = anglesB.labelc.texte\n break\n case 'comic':\n anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n angles = 'correspondents'\n mesure = anglesB.labelb.texte\n break\n case 'cb':\n anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'a'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n angles = 'alternate interior'\n calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n mesure = anglesB.labelb.texte\n break\n case 'CD':\n anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'a'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n angles = 'alternate interior'\n calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labeld.texte, 'green')}$`\n mesure = anglesB.labeld.texte\n break\n case 'da':\n anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n angles = 'alternate interior'\n calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labela.texte, 'green')}$`\n mesure = anglesB.labela.texte\n break\n case 'DC':\n anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labelc.texte, 'green')}$`\n angles = 'alternate interior'\n mesure = anglesB.labelc.texte\n break\n }\n const paramsEnonce = fixeBordures([\n ...Object.keys(anglesA).map(key => { return anglesA[key] }),\n ...Object.keys(anglesB).map(key => { return anglesB[key] })\n ])\n let texte = 'Knowing that the red lines are parallel, deduce the measure of the blue angle. Justify.<br>'\n const texteCorr = mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsCorrection) + String.raw`\n <br>\n Les angles rouge et vert sont ${texteGras(angles)} et formés par des droites ${texteGras('parallel')}.\n <br>\n Donc ils sont ${texteGras('of the same measure')}.\n <br>De plus,\n ${calculs !== undefined ? calculs : ' the blue and green angles are opposite at the vertex.<br> So they are of the same measure.'}\n <br>\n L'angle bleu mesure donc $${miseEnEvidence(mesure)}$.\n `\n texte += mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsEnonce)\n exercice = { texte, texteCorr }\n const valMesure = Number(mesure.slice(0, mesure.length - 1))\n const valSupplementaireMesure = 180 - valMesure\n const valMesureDizaines = Math.floor(valMesure / 10)\n const valMesuresUnites = (valMesure % 10)\n const valDistracteur = valMesure % 10 === 5 ? valMesure + choice([-1, 1]) * randint(1, 4) : (valMesureDizaines * 10) + (10 - valMesuresUnites)\n const supplementaireDistracteur = 180 - valDistracteur\n propositions.push({\n texte: mesure,\n statut: true\n })\n propositions.push({\n texte: valSupplementaireMesure.toString() + '°',\n statut: false\n })\n propositions.push({\n texte: valDistracteur.toString() + '°',\n statut: false\n })\n propositions.push({\n texte: supplementaireDistracteur.toString() + '°',\n statut: false\n })\n options = { ordered: false }\n break\n }\n case 6: {\n const objetsEnonce = [] // on initialise le tableau des objets Mathalea2d de l'enoncé\n const objetsCorrection = [] // Idem pour la correction\n const param = aleaVariables(\n {\n O: 'randomInt(0.90)',\n A: 'randomInt(-90,90)',\n B: 'randomInt(-90,90)',\n r1: 'pickRandom([1.5,2])',\n r2: 'pickRandom([1.5,2])',\n test: '40<O-A<140 and 40<O-B<140 and abs(B-A)<20'\n }\n )\n const O = point(0, 0)\n const anglesA = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O), O, param.r1), { O: param.O, A: param.A })\n const anglesB = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O + 180), O, param.r2), { O: param.O, A: param.B })\n const nomsPoints = aleaName(['A', 'B', 'C', 'D', 'E', 'F'], 2)\n anglesA.A.nom = nomsPoints[0]\n anglesB.A.nom = nomsPoints[1]\n const nomsDirections = aleaName(['s', 't', 'u', 'v', 'x', 'y'], 6)\n anglesA.S.nom = nomsDirections[0]\n anglesA.T.nom = nomsDirections[1]\n anglesA.X.nom = nomsDirections[2]\n anglesA.OX.nom = anglesB.A.nom\n anglesB.S.nom = nomsDirections[3]\n anglesB.T.nom = nomsDirections[4]\n anglesB.OX.nom = nomsDirections[5]\n anglesB.X.nom = anglesA.A.nom\n const nameAngles = ['S A'.split(' '), 'X A T'.split(' '), 'T A OX'.split(' '), 'OX A S'.split(' ')]\n nameAngles.forEach(function (n, i) {\n anglesA[['a', 'b', 'c', 'd'][i]].nom = ''\n anglesB[['a', 'b', 'c', 'd'][i]].nom = ''\n for (let j = 0; j < 3; j++) {\n anglesA[['a', 'b', 'c', 'd'][i]].nom += anglesA[n[j]].nom\n anglesB[['a', 'b', 'c', 'd'][i]].nom += anglesB[n[j]].nom\n }\n })\n if (Math.abs(param.A) > 70) {\n anglesA.S.positionLabel = 'left'\n anglesA.T.positionLabel = 'left'\n }\n if (Math.abs(param.B) > 70) {\n anglesB.S.positionLabel = 'left'\n anglesB.T.positionLabel = 'left'\n }\n if (Math.abs(param.O) > 70) {\n anglesA.X.positionLabel = 'left'\n anglesB.OX.positionLabel = 'left'\n }\n for (const i of ['a', 'b', 'c', 'd']) {\n anglesA[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n anglesA[i].opaciteDeRemplissage = 0.4\n anglesB[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB[i].opaciteDeRemplissage = 0.4\n }\n const ab = choice([\n choice(['aa', 'bb', 'CC', 'dd']),\n choice(['That', 'db'])\n ])\n const a = ab[0]\n const b = ab[1]\n objetsEnonce.push(\n anglesA[a],\n anglesA.As,\n anglesA.Ax,\n anglesB.As,\n anglesB.Ax,\n labelPoint('$' + anglesA.S + '$'),\n labelPoint('$' + anglesA.T + '$'),\n labelPoint('$' + anglesA.X + '$'),\n labelPoint('$' + anglesB.S + '$'),\n labelPoint('$' + anglesB.T + '$'),\n labelPoint('$' + anglesB.OX + '$'),\n labelPoint('$' + anglesA.A + '$'),\n labelPoint('$' + anglesB.A + '$')\n )\n const paramsEnonce = fixeBordures([\n ...Object.keys(anglesA).map(key => { return anglesA[key] }),\n ...Object.keys(anglesB).map(key => { return anglesB[key] })\n ], { rzoom: 1.5 })\n // We copy all the contents of objectsEnonce into objectsCorrection\n objetsEnonce.forEach(objet => {\n objetsCorrection.push(objet)\n })\n const angleCorrection = Object.assign({}, anglesB[b])\n angleCorrection.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('#f15929')\n objetsCorrection.push(angleCorrection)\n // here the text, tex_corr, various mathalea2d objects entering into the content of the exercise are created\n let reponse\n if (a === b) {\n reponse = 'corresponding'\n } else if (a + b === 'That' || a + b === 'db') {\n reponse = 'alternate-internal'\n }\n let texte\n if (this.interactif) {\n texte = `What is the angle ${reponse} at the angle marked in blue?<br>`\n for (const i of ['a', 'b', 'c', 'd']) {\n objetsEnonce.push(anglesB[i])\n }\n objetsEnonce.push(texteSurArc('1', anglesB.s, anglesB.x, param.O - param.A, 'black', 0.4, true))\n objetsEnonce.push(texteSurArc('2', anglesB.x, anglesB.t, 180 - (param.O - param.A), 'black', 0.4, true))\n objetsEnonce.push(texteSurArc('3', anglesB.t, anglesB.Ox, param.O - param.A, 'black', 0.4, true))\n objetsEnonce.push(texteSurArc('4', anglesB.Ox, anglesB.s, 180 - (param.O - param.A), 'black', 0.4, true))\n } else {\n texte = String.raw`Mark in red the angle ${reponse} at the angle marked in blue.<br>`\n }\n const texteCorr = mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsCorrection)\n texte += mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsEnonce)\n exercice = { texte, texteCorr }\n propositions.push({\n texte: 1,\n statut: b === 'a'\n })\n propositions.push({\n texte: 2,\n statut: b === 'b'\n })\n propositions.push({\n texte: 3,\n statut: b === 'c'\n })\n propositions.push({\n texte: 4,\n statut: b === 'd'\n })\n break\n }\n case 7: {\n const objetsEnonce = [] // on initialise le tableau des objets Mathalea2d de l'enoncé\n const objetsCorrection = [] // Idem pour la correction\n const param = aleaVariables(\n {\n O: 'randomInt(0.90)',\n A: 'randomInt(-90,90)',\n B: 'randomInt(-90,90)',\n r1: 'pickRandom([1.5,2])',\n r2: 'pickRandom([1.5,2])',\n test: '40<O-A<140 and 40<O-B<140 and abs(B-A)<20'\n }\n )\n const O = point(0, 0)\n const anglesA = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O), O, param.r1), { O: param.O, A: param.A })\n const anglesB = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O + 180), O, param.r2), { O: param.O, A: param.B })\n const nomsPoints = aleaName(['A', 'B', 'C', 'D', 'E', 'F'], 2)\n anglesA.A.nom = nomsPoints[0]\n anglesB.A.nom = nomsPoints[1]\n const nomsDirections = aleaName(['s', 't', 'u', 'v', 'x', 'y'], 6)\n anglesA.S.nom = nomsDirections[0]\n anglesA.T.nom = nomsDirections[1]\n anglesA.X.nom = nomsDirections[2]\n anglesA.OX.nom = anglesB.A.nom\n anglesB.S.nom = nomsDirections[3]\n anglesB.T.nom = nomsDirections[4]\n anglesB.OX.nom = nomsDirections[5]\n anglesB.X.nom = anglesA.A.nom\n const nameAngles = ['S A'.split(' '), 'X A T'.split(' '), 'T A OX'.split(' '), 'OX A S'.split(' ')]\n nameAngles.forEach(function (n, i) {\n anglesA[['a', 'b', 'c', 'd'][i]].nom = ''\n anglesB[['a', 'b', 'c', 'd'][i]].nom = ''\n for (let j = 0; j < 3; j++) {\n anglesA[['a', 'b', 'c', 'd'][i]].nom += anglesA[n[j]].nom\n anglesB[['a', 'b', 'c', 'd'][i]].nom += anglesB[n[j]].nom\n }\n })\n if (Math.abs(param.A) > 70) {\n anglesA.S.positionLabel = 'left'\n anglesA.T.positionLabel = 'left'\n }\n if (Math.abs(param.B) > 70) {\n anglesB.S.positionLabel = 'left'\n anglesB.T.positionLabel = 'left'\n }\n if (Math.abs(param.O) > 70) {\n anglesA.X.positionLabel = 'left'\n anglesB.OX.positionLabel = 'left'\n }\n for (const i of ['a', 'b', 'c', 'd']) {\n anglesA[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n anglesA[i].opaciteDeRemplissage = 0.7\n anglesB[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n anglesB[i].opaciteDeRemplissage = 0.7\n }\n const ab = choice([\n choice(['aa', 'bb', 'CC', 'dd']),\n choice(['That', 'db'])\n ])\n const a = ab[0]\n const b = ab[1]\n objetsEnonce.push(\n // anglesA[a],\n anglesA.As,\n anglesA.Ax,\n anglesB.As,\n anglesB.Ax,\n labelPoint(anglesA.S),\n labelPoint(anglesA.T),\n labelPoint(anglesA.X),\n labelPoint(anglesB.S),\n labelPoint(anglesB.T),\n labelPoint(anglesB.OX),\n labelPoint(anglesA.A),\n labelPoint(anglesB.A)\n )\n const paramsEnonce = fixeBordures([\n ...Object.keys(anglesA).map(key => { return anglesA[key] }),\n ...Object.keys(anglesB).map(key => { return anglesB[key] })\n ], { rzoom: 1.5 })\n // We copy all the contents of objectsEnonce into objectsCorrection\n objetsEnonce.forEach(objet => {\n objetsCorrection.push(objet)\n })\n\n anglesB[b].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('#f15929')\n objetsCorrection.push(anglesB[b])\n objetsCorrection.push(anglesA[a])\n\n // here the text, tex_corr, various mathalea2d objects entering into the content of the exercise are created\n let reponse\n if (a === b) {\n reponse = 'corresponding'\n } else if (a + b === 'That' || a + b === 'db') {\n reponse = 'alternate-internal'\n }\n let texte = String.raw`What is the angle ${reponse} to the angle $\\widehat{${anglesA[a].nom}}$?<br>`\n let texteCorr = mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsCorrection)\n texteCorr += String.raw`The angle ${reponse} to the angle $${miseEnEvidence('\\\\widehat{' + anglesA[a].nom + '}', 'blue')}$ is $${miseEnEvidence('\\\\widehat{' + anglesB[b].nom + '}')}$.`\n texte += mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsEnonce)\n exercice = { texte, texteCorr }\n propositions.push({\n texte: `$\\\\widehat{${anglesB.a.nom}}$`,\n statut: anglesB[b].nom === anglesB.a.nom\n })\n propositions.push({\n texte: `$\\\\widehat{${anglesB.b.nom}}$`,\n statut: anglesB[b].nom === anglesB.b.nom\n })\n propositions.push({\n texte: `$\\\\widehat{${anglesB.c.nom}}$`,\n statut: anglesB[b].nom === anglesB.c.nom\n })\n propositions.push({\n texte: `$\\\\widehat{${anglesB.d.nom}}$`,\n statut: anglesB[b].nom === anglesB.d.nom\n })\n break\n }\n case 3: {\n const objetsEnonce = [] // on initialise le tableau des objets Mathalea2d de l'enoncé\n const objetsCorrection = [] // Idem pour la correction\n const param = aleaVariables(\n {\n O: 'randomInt(0.90)',\n A: 'randomInt(-90,90)',\n B: 'A',\n r1: 'pickRandom([1.5,2])',\n r2: 'pickRandom([1.5,2])',\n test: '70>O-A>30 and 70>O-B>30 and abs(A-B)<45'\n }\n )\n const ab = aleaVariables(\n {\n a: 'randomInt(0,3)',\n b: 'randomInt(0,3)',\n test: 'a!=b and (a!=2 or b!=0) and (a!=3 or b!=1)'\n }\n )\n const O = point(0, 0)\n const anglesA = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O), O, param.r1), { O: param.O, A: param.A })\n const anglesB = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O + 180), O, param.r2), { O: param.O, A: param.B })\n const nomsPoints = aleaName(['A', 'B', 'C', 'D', 'E', 'F'], 2)\n anglesA.A.nom = nomsPoints[0]\n anglesB.A.nom = nomsPoints[1]\n const nomsDirections = aleaName(['s', 't', 'u', 'v', 'x', 'y'], 6)\n anglesA.S.nom = nomsDirections[0]\n anglesA.T.nom = nomsDirections[1]\n anglesA.X.nom = nomsDirections[2]\n anglesA.OX.nom = anglesB.A.nom\n anglesB.S.nom = nomsDirections[3]\n anglesB.T.nom = nomsDirections[4]\n anglesB.OX.nom = nomsDirections[5]\n anglesB.X.nom = anglesA.A.nom\n const nameAngles = ['S A'.split(' '), 'X A T'.split(' '), 'T A OX'.split(' '), 'OX A S'.split(' ')]\n nameAngles.forEach(function (n, i) {\n anglesA[['a', 'b', 'c', 'd'][i]].nom = ''\n anglesB[['a', 'b', 'c', 'd'][i]].nom = ''\n for (let j = 0; j < 3; j++) {\n anglesA[['a', 'b', 'c', 'd'][i]].nom += anglesA[n[j]].nom\n anglesB[['a', 'b', 'c', 'd'][i]].nom += anglesB[n[j]].nom\n }\n })\n if (Math.abs(param.A) > 70) {\n anglesA.S.positionLabel = 'left'\n anglesA.T.positionLabel = 'left'\n }\n if (Math.abs(param.B) > 70) {\n anglesB.S.positionLabel = 'left'\n anglesB.T.positionLabel = 'left'\n }\n if (Math.abs(param.O) > 70) {\n anglesA.X.positionLabel = 'left'\n anglesB.OX.positionLabel = 'left'\n }\n for (const i of ['a', 'b', 'c', 'd']) {\n anglesA[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n anglesA[i].opaciteDeRemplissage = 0.4\n anglesB[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n anglesB[i].opaciteDeRemplissage = 0.4\n }\n const a = ['a', 'b', 'c', 'd'][parseInt(ab.a)]\n const b = ['a', 'b', 'c', 'd'][parseInt(ab.b)]\n const epsilon = choice([pickRandom([-2, -1, 1, 2]), 0])\n anglesA.labela = texteSurArc(((param.O - param.A) % 180 + epsilon) + '°', anglesA.s, anglesA.x, param.O - param.A, 'black', 0.7, true)\n anglesA.labelb = texteSurArc((180 - (param.O - param.A) + epsilon) % 180 + '°', anglesA.x, anglesA.t, 180 - (param.O - param.A), 'black', 0.7, true)\n anglesA.labelc = texteSurArc((param.O - param.A + epsilon) % 180 + '°', anglesA.t, anglesA.Ox, param.O - param.A, 'black', 0.7, true)\n anglesA.labeld = texteSurArc((180 - (param.O - param.A) + epsilon) % 180 + '°', anglesA.Ox, anglesA.s, 180 - (param.O - param.A), 'black', 0.7, true)\n anglesB.labela = texteSurArc(((param.O - param.A) % 180) + '°', anglesB.s, anglesB.x, param.O - param.A, 'black', 0.7, true)\n anglesB.labelb = texteSurArc((180 - (param.O - param.A)) % 180 + '°', anglesB.x, anglesB.t, 180 - (param.O - param.A), 'black', 0.7, true)\n anglesB.labelc = texteSurArc((param.O - param.A) % 180 + '°', anglesB.t, anglesB.Ox, param.O - param.A, 'black', 0.7, true)\n anglesB.labeld = texteSurArc((180 - (param.O - param.A)) % 180 + '°', anglesB.Ox, anglesB.s, 180 - (param.O - param.A), 'black', 0.7, true)\n objetsEnonce.push(\n anglesA[a],\n anglesA.As,\n anglesA.Ax,\n anglesB[b],\n anglesB.As,\n anglesB.Ax,\n anglesA['label' + a],\n anglesB['label' + b],\n labelPoint(anglesA.S),\n labelPoint(anglesA.T),\n labelPoint(anglesA.X),\n labelPoint(anglesB.S),\n labelPoint(anglesB.T),\n labelPoint(anglesB.OX),\n labelPoint(anglesA.A),\n labelPoint(anglesB.A)\n )\n objetsEnonce.forEach(objet => {\n objetsCorrection.push(objet)\n })\n let angles, calculs\n anglesA[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('red')\n anglesA.labela.color = 'red'\n anglesA.labelb.color = 'red'\n anglesA.labelc.color = 'red'\n anglesA.labeld.color = 'red'\n anglesB.labela.color = 'blue'\n anglesB.labelb.color = 'blue'\n anglesB.labelc.color = 'blue'\n anglesB.labeld.color = 'blue'\n switch (a + b) {\n case 'ab':\n case 'ad':\n anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'a'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n angles = 'correspondents'\n calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labela.texte, 'green')}$`\n break\n case 'ac':\n anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'a'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n angles = 'correspondents'\n break\n case 'ba':\n anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n angles = 'correspondents'\n calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n break\n case 'bc':\n anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n angles = 'correspondents'\n calculs = `$180°-${miseEnEvidence(anglesB.labelc.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n break\n case 'comic':\n anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n angles = 'correspondents'\n break\n case 'cb':\n case 'CD':\n anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'a'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n angles = 'alternate interior'\n calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labela.texte, 'green')}$`\n break\n case 'da':\n anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n angles = 'alternate interior'\n calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n break\n case 'DC':\n anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n calculs = `$180°-${miseEnEvidence(anglesB.labelc.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n angles = 'alternate interior'\n break\n }\n\n const paramsEnonce = fixeBordures([\n ...Object.keys(anglesA).map(key => { return anglesA[key] }),\n ...Object.keys(anglesB).map(key => { return anglesB[key] })\n ])\n let texte = `Are the lines $(${anglesA.S.nom}${anglesA.T.nom})$ and $(${anglesB.S.nom}${anglesB.T.nom})$ parallel?<br>`\n let sont, coord\n if (epsilon !== 0) {\n coord = 'but not'\n sont = 'are not'\n } else {\n coord = 'And'\n sont = 'are'\n }\n const nomAngleSolution = angles !== 'alternate interior' ? anglesB[a].nom : a === 'c' ? anglesB.a.nom : anglesB.b.nom\n const texteCorr = mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsCorrection) + String.raw`\n <br>\n ${calculs !== undefined ? calculs : String.raw`The angles $\\widehat{${anglesB[a].nom}}$ and $\\widehat{${anglesB[b].nom}}$ are opposite each other at the vertex. <br> So they are of the same measurement.`}\n <br>\n Donc les angles $${miseEnEvidence('\\\\widehat{' + anglesA[a].nom + '}', 'red')}$ et $${miseEnEvidence('\\\\widehat{' + nomAngleSolution + '}', 'green')}$ sont ${angles} ${texteGras(coord + ' of the same measure')}.\n <br>\n Donc les droites $(${anglesA.S.nom}${anglesA.T.nom})$ et $(${anglesB.S.nom}${anglesB.T.nom})$ ${texteEnCouleurEtGras(sont + ' parallel')}.\n `\n texte += mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsEnonce)\n exercice = { texte, texteCorr }\n propositions.push({\n texte: 'Yes',\n statut: epsilon === 0\n })\n propositions.push({\n texte: 'No',\n statut: epsilon !== 0\n })\n break\n }\n case 5: {\n const objetsEnonce = [] // on initialise le tableau des objets Mathalea2d de l'enoncé\n const objetsCorrection = [] // Idem pour la correction\n const param = aleaVariables(\n {\n O: 'randomInt(0.90)',\n A: 'randomInt(-90,90)',\n B: 'A',\n r1: 'pickRandom([1.5,2])',\n r2: 'pickRandom([1.5,2])',\n test: '70>O-A>30 and 70>O-B>30 and abs(A-B)<45'\n }\n )\n const ab = aleaVariables(\n {\n a: 'randomInt(0,3)',\n b: 'randomInt(0,3)',\n test: 'a!=b and (a!=2 or b!=0) and (a!=3 or b!=1)'\n }\n )\n const O = point(0, 0)\n const anglesA = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O), O, param.r1), { O: param.O, A: param.A })\n const anglesB = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O + 180), O, param.r2), { O: param.O, A: param.B })\n const nomsPoints = aleaName(['A', 'B', 'C', 'D', 'E', 'F'], 2)\n anglesA.A.nom = nomsPoints[0]\n anglesB.A.nom = nomsPoints[1]\n const nomsDirections = aleaName(['s', 't', 'u', 'v', 'x', 'y'], 6)\n anglesA.S.nom = nomsDirections[0]\n anglesA.T.nom = nomsDirections[1]\n anglesA.X.nom = nomsDirections[2]\n anglesA.OX.nom = anglesB.A.nom\n anglesB.S.nom = nomsDirections[3]\n anglesB.T.nom = nomsDirections[4]\n anglesB.OX.nom = nomsDirections[5]\n anglesB.X.nom = anglesA.A.nom\n const nameAngles = ['S A'.split(' '), 'X A T'.split(' '), 'T A OX'.split(' '), 'OX A S'.split(' ')]\n nameAngles.forEach(function (n, i) {\n anglesA[['a', 'b', 'c', 'd'][i]].nom = ''\n anglesB[['a', 'b', 'c', 'd'][i]].nom = ''\n for (let j = 0; j < 3; j++) {\n anglesA[['a', 'b', 'c', 'd'][i]].nom += anglesA[n[j]].nom\n anglesB[['a', 'b', 'c', 'd'][i]].nom += anglesB[n[j]].nom\n }\n })\n if (Math.abs(param.A) > 70) {\n anglesA.S.positionLabel = 'left'\n anglesA.T.positionLabel = 'left'\n }\n if (Math.abs(param.B) > 70) {\n anglesB.S.positionLabel = 'left'\n anglesB.T.positionLabel = 'left'\n }\n if (Math.abs(param.O) > 70) {\n anglesA.X.positionLabel = 'left'\n anglesB.OX.positionLabel = 'left'\n }\n for (const i of ['a', 'b', 'c', 'd']) {\n anglesA[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n anglesA[i].opaciteDeRemplissage = 0.4\n anglesB[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n anglesB[i].opaciteDeRemplissage = 0.4\n }\n const a = ['a', 'b', 'c', 'd'][parseInt(ab.a)]\n const b = ['a', 'b', 'c', 'd'][parseInt(ab.b)]\n const epsilon = 0\n anglesA.labela = texteSurArc(((param.O - param.A) % 180 + epsilon) + '°', anglesA.s, anglesA.x, param.O - param.A, 'black', 0.7, true)\n anglesA.labelb = texteSurArc((180 - (param.O - param.A) + epsilon) % 180 + '°', anglesA.x, anglesA.t, 180 - (param.O - param.A), 'black', 0.7, true)\n anglesA.labelc = texteSurArc((param.O - param.A + epsilon) % 180 + '°', anglesA.t, anglesA.Ox, param.O - param.A, 'black', 0.7, true)\n anglesA.labeld = texteSurArc((180 - (param.O - param.A) + epsilon) % 180 + '°', anglesA.Ox, anglesA.s, 180 - (param.O - param.A), 'black', 0.7, true)\n anglesB.labela = texteSurArc(((param.O - param.A) % 180) + '°', anglesB.s, anglesB.x, param.O - param.A, 'black', 0.7, true)\n anglesB.labelb = texteSurArc((180 - (param.O - param.A)) % 180 + '°', anglesB.x, anglesB.t, 180 - (param.O - param.A), 'black', 0.7, true)\n anglesB.labelc = texteSurArc((param.O - param.A) % 180 + '°', anglesB.t, anglesB.Ox, param.O - param.A, 'black', 0.7, true)\n anglesB.labeld = texteSurArc((180 - (param.O - param.A)) % 180 + '°', anglesB.Ox, anglesB.s, 180 - (param.O - param.A), 'black', 0.7, true)\n objetsEnonce.push(\n anglesA[a],\n anglesA.As,\n anglesA.Ax,\n anglesB.As,\n anglesB.Ax,\n anglesA['label' + a],\n labelPoint(anglesA.S),\n labelPoint(anglesA.T),\n labelPoint(anglesA.X),\n labelPoint(anglesB.S),\n labelPoint(anglesB.T),\n labelPoint(anglesB.OX),\n labelPoint(anglesA.A),\n labelPoint(anglesB.A)\n // anglesB['label' + b]\n )\n objetsEnonce.forEach(objet => {\n objetsCorrection.push(objet)\n })\n objetsCorrection.push(anglesB['label' + b])\n objetsCorrection.push(anglesB[b])\n let angles, calculs, mesure\n anglesA[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('red')\n anglesA.labela.color = 'red'\n anglesA.labelb.color = 'red'\n anglesA.labelc.color = 'red'\n anglesA.labeld.color = 'red'\n anglesB.labela.color = 'blue'\n anglesB.labelb.color = 'blue'\n anglesB.labelc.color = 'blue'\n anglesB.labeld.color = 'blue'\n\n switch (a + b) {\n case 'ab':\n anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'a'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n angles = 'correspondents'\n calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n mesure = anglesB.labelb.texte\n break\n case 'ac':\n anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'a'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n angles = 'correspondents'\n mesure = anglesB.labela.texte\n break\n case 'ad':\n anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'a'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n angles = 'correspondents'\n calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n mesure = anglesB.labeld.texte\n break\n case 'ba':\n anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n angles = 'correspondents'\n calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labela.texte, 'green')}$`\n mesure = anglesB.labela.texte\n break\n case 'bc':\n anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n angles = 'correspondents'\n calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labelc.texte, 'green')}$`\n mesure = anglesB.labelc.texte\n break\n case 'comic':\n anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n angles = 'correspondents'\n mesure = anglesB.labelb.texte\n break\n case 'cb':\n anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'a'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n angles = 'alternate interior'\n calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n mesure = anglesB.labelb.texte\n break\n case 'CD':\n anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'a'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n angles = 'alternate interior'\n calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labeld.texte, 'green')}$`\n mesure = anglesB.labeld.texte\n break\n case 'da':\n anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n angles = 'alternate interior'\n calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labela.texte, 'green')}$`\n mesure = anglesB.labela.texte\n break\n case 'DC':\n anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n anglesB['label' + 'b'].color = 'green'\n objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labelc.texte, 'green')}$`\n angles = 'alternate interior'\n mesure = anglesB.labelc.texte\n break\n }\n const paramsEnonce = fixeBordures([\n ...Object.keys(anglesA).map(key => { return anglesA[key] }),\n ...Object.keys(anglesB).map(key => { return anglesB[key] })\n ])\n let texte = String.raw`\n Sachant que les droites $(${anglesA.S.nom}${anglesA.T.nom})$ et $(${anglesB.S.nom}${anglesB.T.nom})$ sont parallèles, en déduire la mesure de l'angle $\\widehat{${anglesB[b].nom}}$.<br>\n `\n const nomAngleSolution = angles !== 'alternate interior' ? anglesB[a].nom : a === 'c' ? anglesB.a.nom : anglesB.b.nom\n const texteCorr = mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsCorrection) + String.raw`\n <br>\n Les angles $${miseEnEvidence('\\\\widehat{' + anglesA[a].nom + '}', 'red')}$ et $${miseEnEvidence('\\\\widehat{' + nomAngleSolution + '}', 'green')}$ sont ${texteGras(angles)} et formés par des droites ${texteGras('parallel')}.\n <br>\n Donc ils sont ${texteGras('of the same measure')}.\n <br>De plus,\n ${calculs !== undefined ? calculs : String.raw` the angles $\\widehat{${anglesB[a].nom}}$ and $\\widehat{${anglesB[b].nom}}$ and vert are opposite at the vertex.<br> So they are of the same measure.`}\n <br>\n Donc l'angle $${miseEnEvidence('\\\\widehat{' + anglesB[b].nom + '}', 'blue')}$ mesure $${miseEnEvidence(mesure)}$.\n `\n texte += mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsEnonce)\n exercice = { texte, texteCorr }\n const valMesure = Number(mesure.slice(0, mesure.length - 1))\n const valSupplementaireMesure = 180 - valMesure\n const valMesureDizaines = Math.floor(valMesure / 10)\n const valMesuresUnites = (valMesure % 10)\n const valDistracteur = valMesure % 10 === 5 ? valMesure + choice([-1, 1]) * randint(1, 4) : (valMesureDizaines * 10) + (10 - valMesuresUnites)\n const supplementaireDistracteur = 180 - valDistracteur\n propositions.push({\n texte: mesure,\n statut: true\n })\n propositions.push({\n texte: valSupplementaireMesure.toString() + '°',\n statut: false\n })\n propositions.push({\n texte: valDistracteur.toString() + '°',\n statut: false\n })\n propositions.push({\n texte: supplementaireDistracteur.toString() + '°',\n statut: false\n })\n options = { ordered: false }\n break\n }\n }\n // The lines below allow you to have a display with optimized dimensions\n if (this.questionJamaisPosee(i, exercice.texte)) {\n if (context.isAmc) {\n this.autoCorrection[i] = {\n enonce: '',\n options: { barreseparation: true, numerotationEnonce: true }, // facultatif.\n propositions: [\n {\n type: 'AMCOpen',\n propositions: [\n {\n texte: '',\n numQuestionVisible: false,\n statut: (nquestion[i] < 6) && (nquestion[i] > 1) ? 3 : 1, // (ici c'is the number of lines of the frame for the answer of the'élève sur AMC)\n feedback: '',\n // states: figure[3][0] + mathalea2d(figure[1], figure[0]) + '<br>' + figure[3][1] + 'Justify the answer.' // EE: this field is optional and functional only in hybrid mode (in normal mode, there is no interest)\n enonce: exercice.texte // EE : ce champ est facultatif et fonctionnel qu'in hybrid mode (in normal mode, there is no point)\n }\n ]\n }\n ]\n }\n } else {\n this.autoCorrection[i] = {\n enonce: exercice.texte,\n propositions,\n options\n }\n }\n const monQcm = propositionsQcm(this, i)\n if (this.interactif) {\n exercice.texte = exercice.texte + monQcm.texte\n }\n this.listeQuestions.push(exercice.texte)\n this.listeCorrections.push(exercice.texteCorr)\n i++\n }\n cpt++\n }\n listeQuestionsToContenu(this) // On envoie l'exercice à la fonction de mise en page\n }\n}\n"],"names":["titre","dateDeModifImportante","amcReady","amcType","interactifReady","interactifType","aleaName","names","n","result","r","dateDePublication","anglesSecantes","A","rot","s","rotation","translation","vecteur","S","t","T","x","X","Ox","OX","arcPointPointAngle","droite","texteSurArc","uuid","ref","ExercicesAnglesAIC","Exercice","formulaire","context","nquestion","gestionnaireFormulaireTexte","i","exercice","cpt","propositions","options","objetsEnonce","param","aleaVariables","O","point","anglesA","homothetie","anglesB","colorToLatexOrHTML","ab","choice","a","b","paramsEnonce","fixeBordures","key","objet","texte","reponse","reponseCorrecte","texteEnCouleurEtGras","texteCorr","mathalea2d","objetsCorrection","epsilon","pickRandom","angles","calculs","miseEnEvidence","sont","coord","texteGras","mesure","valMesure","valSupplementaireMesure","valMesureDizaines","valMesuresUnites","valDistracteur","randint","supplementaireDistracteur","nomsPoints","nomsDirections","j","labelPoint","angleCorrection","nomAngleSolution","monQcm","propositionsQcm","listeQuestionsToContenu"],"mappings":"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"}