File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/6G11-1-eXiwfnOA.js.map
{"version":3,"file":"6G11-1-eXiwfnOA.js","sources":["../../src/exercices/6e/6G11-1.js"],"sourcesContent":["import { angle, codageAngleDroit } from '../../lib/2d/angles.js'\nimport { codageSegment } from '../../lib/2d/codages.js'\nimport { droite, droiteParPointEtPerpendiculaire } from '../../lib/2d/droites.js'\nimport { milieu, point, pointIntersectionDD, pointSurDroite, tracePoint } from '../../lib/2d/points.js'\nimport { grille, seyes } from '../../lib/2d/reperes.js'\nimport { labelPoint, latexParPoint } from '../../lib/2d/textes.js'\nimport { homothetie, rotation } from '../../lib/2d/transformations.js'\nimport { shuffle } from '../../lib/outils/arrayOutils'\nimport { lettreDepuisChiffre, numAlpha } from '../../lib/outils/outilString.js'\nimport { mathalea2d, vide2d } from '../../modules/2dGeneralites.js'\nimport Alea2iep from '../../modules/Alea2iep.js'\nimport { context } from '../../modules/context.js'\nimport {\n gestionnaireFormulaireTexte,\n listeQuestionsToContenu,\n randint\n} from '../../modules/outils.js'\nimport Exercice from '../Exercice.js'\n\nexport const titre = 'Drawing perpendiculars'\nexport const dateDePublication = '09/10/2022'\n/**\n * Fonction générale pour construire des perpendiculairs\n * @author Mickael Guironnet\n */\n\nexport const uuid = 'df825'\nexport const ref = '6G11-1'\nexport default class constructionPerpendiculaires extends Exercice {\n//\n constructor () {\n super()\n this.titre = titre\n this.nbQuestions = 1\n this.nbCols = 1\n this.nbColsCorr = 1\n this.sup = 1\n this.sup2 = '1'\n this.typeExercice = 'IEP'\n this.spacing = (context.isHtml) ? 2 : 1\n this.besoinFormulaireNumerique = [\n 'Notebook type',\n 3,\n ' 1: Notebook with small squares\\n 2: Notebook with large squares (Seyes)\\n 3: Blank sheet'\n ]\n this.besoinFormulaire2Texte = [\n 'Type of questions', [\n 'Numbers separated by hyphens',\n '1: Orthocenter (interior of the triangle)',\n '2: Orthocenter (exterior of the triangle)',\n '3: Center of the circumscribed circle (interior of the triangle)',\n '4: Center of the circumscribed circle (exterior of the triangle)',\n '5: Mixture'\n ].join('\\not')\n ]\n }\n\n nouvelleVersion () {\n this.listeQuestions = [] // Liste de questions\n this.listeCorrections = [] // Liste de questions corrigées\n this.autoCorrection = []\n\n let listeTypeDeQuestions = []\n listeTypeDeQuestions = gestionnaireFormulaireTexte({\n max: 4,\n defaut: 1,\n melange: 5,\n listeOfCase: ['OrthoInterior', 'OrthoExterior', 'CircoInterior', 'CircoExterior', 'Blend'],\n nbQuestions: this.nbQuestions,\n saisie: this.sup2\n })\n for (let i = 0, texte, typesDeQuestions, cpt = 0; i < this.nbQuestions && cpt < 50; cpt++) {\n typesDeQuestions = listeTypeDeQuestions[i]\n const anim = new Alea2iep()\n const objetsEnonce = []\n const objetsCorrection = []\n const indLettre = randint(1, 15)\n const A = point(0, 0, lettreDepuisChiffre(indLettre), 'above left')\n let B = point(20, randint(-4, 0, [-1, 0, 1]), lettreDepuisChiffre(indLettre + 1), 'above right')\n\n let ang1, ang2, ang3\n switch (typesDeQuestions) {\n case 'OrthoInterior':\n case 'CircoInterior': {\n // triangle with acute angles\n ang1 = randint(30, 80)\n ang2 = randint(30, 80)\n ang3 = 180 - ang1 - ang2\n let k = 0\n while (ang3 > 90 & k < 30) {\n const r = randint(1, 10)\n if (ang1 + r < 90) {\n ang1 = ang1 + r\n ang3 = ang3 - r\n } else if (ang2 + r < 90) {\n ang2 = ang2 + r\n ang3 = ang3 - r\n }\n k++\n }\n break\n }\n case 'OrthoExterior':\n case 'CircoExterior': {\n // triangle with an obtuse angle\n ang1 = 90 + randint(10, 30)\n ang2 = randint(30, 50)\n ang3 = 180 - ang1 - ang2\n const angle = shuffle([ang1, ang2])\n ang1 = angle[0]\n ang2 = angle[1]\n B.x = 10\n break\n }\n }\n const dAB = droite(A, B)\n const C1 = rotation(B, A, ang1)\n const C2 = rotation(A, B, -1 * ang2)\n const CC = pointIntersectionDD(droite(A, C1), droite(B, C2))\n let C = point(Math.floor(CC.x), Math.floor(CC.y), lettreDepuisChiffre(indLettre + 2), 'above left')\n\n const ag1 = angle(B, A, C)\n const ag2 = angle(C, B, A)\n const ag3 = angle(A, C, B)\n\n if ((typesDeQuestions === 'OrthoInterior' || typesDeQuestions === 'CircoInterior') && (ag1 > 85 || ag2 > 85 || ag3 > 85)) {\n continue\n }\n\n const dAC = droite(A, C)\n const dBC = droite(B, C)\n let hC, hB, hA, ortho\n switch (typesDeQuestions) {\n case 'OrthoInterior':\n case 'OrthoExterior':\n hC = droiteParPointEtPerpendiculaire(C, dAB, '', 'blue')\n hB = droiteParPointEtPerpendiculaire(B, dAC, '', 'green')\n hA = droiteParPointEtPerpendiculaire(A, dBC, '', 'red')\n ortho = pointIntersectionDD(hC, hB)\n break\n case 'CircoInterior':\n case 'CircoExterior':\n hC = droiteParPointEtPerpendiculaire(milieu(A, B), dAB, '', 'blue')\n hB = droiteParPointEtPerpendiculaire(milieu(A, C), dAC, '', 'green')\n hA = droiteParPointEtPerpendiculaire(milieu(B, C), dBC, '', 'red')\n ortho = pointIntersectionDD(hC, hB)\n break\n }\n\n const Xmin = Math.floor(Math.min(A.x, B.x, C.x, ortho.x) - 1)\n const Xmax = Math.ceil(Math.max(A.x, B.x, C.x, ortho.x) + 1)\n const Ymin = Math.floor(Math.min(A.y, B.y, C.y, ortho.y) - 1)\n const Ymax = Math.ceil(Math.max(A.y, B.y, C.y, ortho.y) + 1)\n context.fenetreMathalea2d = [Xmin, Ymin, Xmax, Ymax]\n\n let pHc = pointIntersectionDD(droite(point(Xmin, Ymin), point(Xmax, Ymin)), hC, '(d_1)', 'above left')\n if (pHc && pHc.x >= Xmin && pHc.x <= Xmax) {\n // intersection with the bottom dial\n // pHc.x - Xmin > Xmax - pHc.x ? pHc.x = pHc.x - 0.5: pHc.x = pHc.x + 0.5\n pHc.y = pHc.y + 0.5\n } else {\n // no intersection\n pHc = pointSurDroite(hC, Xmin, '(d_1)', 'above left')\n // pHc.x = pHc.x - 1\n }\n let pHb = pointIntersectionDD(droite(point(Xmin, Ymin), point(Xmin, Ymax)), hB, '(d_2)', 'below right')\n if (pHb && pHb.y <= Ymax && pHb.y >= Ymin) {\n // intersection with the left dial\n pHb.x = pHb.x + 0.5\n } else {\n pHb = pointIntersectionDD(droite(point(Xmin, Ymax), point(Xmax, Ymax)), hB, '(d_2)', 'below left')\n if (pHb && pHb.x <= Xmax && pHb.x >= Xmin) {\n // intersection with the dial above\n pHb.y = pHb.y - 0.5\n }\n }\n let pHa = pointIntersectionDD(droite(point(Xmax, Ymin), point(Xmax, Ymax)), hA, '(d_3)', 'above left')\n if (pHa && pHa.y <= Ymax && pHa.y >= Ymin) {\n // intersection with the right dial\n pHa.x = pHa.x - 0.5\n } else {\n pHa = pointIntersectionDD(droite(point(Xmin, Ymax), point(Xmax, Ymax)), hA, '(d_3)', 'below right')\n if (pHa && pHa.x <= Xmax && pHa.x >= Xmin) {\n // intersection with the dial above\n pHa.y = pHa.y - 0.5\n }\n }\n const T = tracePoint(A, B, C)\n T.tailleTikz = 0.3\n\n objetsCorrection.push(T, labelPoint(A, B, C), dAB, dAC, dBC, hA, hB, hC)\n objetsCorrection.push(latexParPoint(pHc.nom, pHc, 'blue', 20, 12, '', 8))\n objetsCorrection.push(latexParPoint(pHb.nom, pHb, 'green', 20, 12, '', 8))\n objetsCorrection.push(latexParPoint(pHa.nom, pHa, 'red', 20, 12, '', 8))\n // objectsCorrection.push(latexByCoordinates (pHc.nom.substring(1, pHc.nom.length - 1), pHc.x, pHc.y, 'blue', 50, 20, '',8))\n if (typesDeQuestions === 'OrthoInterior' || typesDeQuestions === 'OrthoExterior') {\n objetsCorrection.push(codageAngleDroit(B, pointIntersectionDD(hC, dAB), C), codageAngleDroit(C, pointIntersectionDD(hA, dBC), A), codageAngleDroit(B, pointIntersectionDD(hB, dAC), C))\n } else {\n objetsCorrection.push(codageSegment(B, milieu(B, C), '|||'), codageSegment(milieu(B, C), C, '|||'), codageSegment(A, milieu(A, C), '||'), codageSegment(milieu(A, C), C, '||'), codageSegment(B, milieu(A, B), '|'), codageSegment(milieu(A, B), A, '|'), codageAngleDroit(B, milieu(A, B), ortho), codageAngleDroit(C, milieu(B, C), ortho), codageAngleDroit(C, milieu(A, C), ortho))\n }\n objetsEnonce.push(T, labelPoint(A, B, C))\n let correction = ''\n let enonce = ''\n let questind = 0\n if (context.isHtml) enonce += numAlpha(questind++) + ' Reproduce the figure below.<br>'\n if (typesDeQuestions === 'OrthoInterior' || typesDeQuestions === 'OrthoExterior') {\n enonce +=\n numAlpha(questind++) +\n `Plot $(${A.nom}${B.nom})$, $(${A.nom}${C.nom})$ and $(${B.nom}${C.nom})$.<br>`\n enonce +=\n numAlpha(questind++) +\n `Draw the line $(d_1)$ perpendicular to $(${A.nom}${B.nom})$ passing through $${C.nom}$.<br>`\n enonce +=\n numAlpha(questind++) +\n `Draw the line $(d_2)$ perpendicular to $(${A.nom}${C.nom})$ passing through $${B.nom}$.<br>`\n enonce +=\n numAlpha(questind++) +\n `Draw the line $(d_3)$ perpendicular to $(${B.nom}${C.nom})$ passing through $${A.nom}$.<br>`\n // states +=\n // numAlpha(questind++) +\n // 'Draw the point of intersection of the lines $(d_1)$, $(d_2)$ and $(d_3)$.<br>'\n } else {\n enonce +=\n numAlpha(questind++) +\n `Plot $(${A.nom}${B.nom})$, $(${A.nom}${C.nom})$ and $(${B.nom}${C.nom})$.<br>`\n enonce +=\n numAlpha(questind++) +\n `Place the middle of $[${A.nom}${B.nom}]$.<br>`\n enonce +=\n numAlpha(questind++) +\n `Draw the line $(d_1)$ perpendicular to $(${A.nom}${B.nom})$ passing through the midpoint of $[${A.nom}${B.nom}]$.<br>`\n enonce +=\n numAlpha(questind++) +\n `Place the middle of $[${A.nom}${C.nom}]$.<br>`\n enonce +=\n numAlpha(questind++) +\n `Draw the line $(d_2)$ perpendicular to $(${A.nom}${C.nom})$ passing through the midpoint of $[${A.nom}${C.nom}]$.<br>`\n enonce +=\n numAlpha(questind++) +\n `Place the middle of $[${B.nom}${C.nom}]$.<br>`\n enonce +=\n numAlpha(questind++) +\n `Draw the line $(d_3)$ perpendicular to $(${B.nom}${C.nom})$ passing through the midpoint of $[${B.nom}${C.nom}]$.<br>`\n // states +=\n // numAlpha(questind++) +\n // 'Draw the point of intersection of the lines $(d_1)$, $(d_2)$ and $(d_3)$.<br>'\n }\n anim.taille((Xmax - Xmin + 5) * 30, (Ymax - Ymin + 5) * 30)\n anim.recadre(Xmin - 3, Ymax)\n B = homothetie(A, B, 0.5, 'B', 'above right')\n C = homothetie(A, C, 0.5, 'C', 'above right')\n pHc = homothetie(A, pHc, 0.5)\n pHb = homothetie(A, pHb, 0.5)\n pHa = homothetie(A, pHa, 0.5)\n ortho = homothetie(A, ortho, 0.5)\n anim.pointsCreer(A, B, C)\n anim.regleModifierLongueur(20)\n anim.equerreZoom(200)\n anim.regleDroite(A, B, { couleur: 'blue' })\n anim.regleDroite(A, C, { couleur: 'blue' })\n anim.regleDroite(B, C, { couleur: 'blue' })\n anim.regleMasquer()\n if (typesDeQuestions === 'OrthoInterior' || typesDeQuestions === 'OrthoExterior') {\n anim.perpendiculaireRegleEquerreDroitePoint(droite(A, B), C)\n anim.textePosition('$(d_1)$', pHc.x, pHc.y)\n anim.perpendiculaireRegleEquerreDroitePoint(droite(A, C), B)\n anim.textePosition('$(d_2)$', pHb.x, pHb.y)\n anim.perpendiculaireRegleEquerreDroitePoint(droite(B, C), A)\n anim.textePosition('$(d_3)$', pHa.x, pHa.y)\n } else {\n anim.perpendiculaireRegleEquerreDroitePoint(droite(A, B), milieu(A, B))\n anim.textePosition('$(d_1)$', pHc.x, pHc.y)\n anim.perpendiculaireRegleEquerreDroitePoint(droite(A, C), milieu(A, C))\n anim.textePosition('$(d_2)$', pHb.x, pHb.y)\n anim.perpendiculaireRegleEquerreDroitePoint(droite(B, C), milieu(B, C))\n anim.textePosition('$(d_3)$', pHa.x, pHa.y)\n }\n anim.pointCreer(ortho)\n let g, sc, carreaux\n if (this.sup < 3) g = grille(Xmin, Ymin, Xmax, Ymax, 'gray', 0.7)\n else g = vide2d()\n if (parseInt(this.sup) === 2) {\n sc = 0.8\n carreaux = seyes(Xmin, Ymin, Xmax, Ymax)\n } else {\n sc = 0.5\n carreaux = vide2d()\n }\n objetsEnonce.push(g, carreaux)\n objetsCorrection.push(g, carreaux)\n const ppc = 20\n enonce += '<br>' + mathalea2d(\n {\n xmin: Xmin,\n ymin: Ymin,\n xmax: Xmax,\n ymax: Ymax,\n pixelsParCm: ppc,\n scale: sc\n },\n objetsEnonce\n )\n correction += mathalea2d(\n {\n xmin: Xmin,\n ymin: Ymin,\n xmax: Xmax,\n ymax: Ymax,\n pixelsParCm: ppc,\n scale: sc\n },\n objetsCorrection\n )\n\n /****************************************************/\n correction += anim.htmlBouton(this.numeroExercice, i)\n if (context.isHtml) correction += '<br><br>Note: the lines $(d_1)$, $(d_2)$ and $(d_3)$ have a single point of intersection. We say that they are concurrent.'\n if (this.listeQuestions.indexOf(texte) === -1) {\n // If the question has never been asked, we create another one\n this.listeQuestions.push(enonce + '<br>')\n this.listeCorrections.push(correction + '<br>')\n i++\n }\n }\n\n listeQuestionsToContenu(this)\n }\n}\n"],"names":["titre","dateDePublication","uuid","ref","constructionPerpendiculaires","Exercice","context","listeTypeDeQuestions","gestionnaireFormulaireTexte","i","texte","typesDeQuestions","cpt","anim","Alea2iep","objetsEnonce","objetsCorrection","indLettre","randint","A","point","lettreDepuisChiffre","B","ang1","ang2","ang3","k","r","angle","shuffle","dAB","droite","C1","rotation","C2","CC","pointIntersectionDD","C","ag1","ag2","ag3","dAC","dBC","hC","hB","hA","ortho","droiteParPointEtPerpendiculaire","milieu","Xmin","Xmax","Ymin","Ymax","pHc","pointSurDroite","pHb","pHa","T","tracePoint","labelPoint","latexParPoint","codageAngleDroit","codageSegment","correction","enonce","questind","numAlpha","homothetie","g","sc","carreaux","grille","vide2d","seyes","ppc","mathalea2d","listeQuestionsToContenu"],"mappings":"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"}