File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/betaAleaFigure-3JpMofoJ.js.map
{"version":3,"file":"betaAleaFigure-3JpMofoJ.js","sources":["../../src/modules/aleaFigure/outilsThales.js","../../src/exercices/beta/betaAleaFigure.js"],"sourcesContent":["import { GVVector } from './elements.js'\nimport { GVGraphicView } from './GraphicView.js'\nimport { aleaName } from '../outilsMathjs.js'\nimport { cross } from 'mathjs'\nexport class GVAleaThalesConfig extends GVGraphicView {\n classicConfig/** boolean */ = undefined\n k/** number */\n AOB/** boolean */ = false\n OAB/** boolean */ = false\n points/** GVPoint[] */\n constructor (k/** boolean */ = undefined) {\n super(-5, -5, 5, 5)\n this.create(k)\n }\n\n create (k/** boolean */ = undefined) {\n // Boucle à remplacer par quelque chose de plus efficace\n // Il faut tout simplement créer un objet configuration de Thalès en indiquant le k\n if (k !== undefined) {\n do {\n this.new()\n } while (this.classicConfig !== k)\n } else {\n this.new()\n }\n }\n\n new () {\n this.geometric = []\n let O/** GVPoint */, A/** GVPoint */, B/** GVPoint */\n if (this.AOB) {\n [O, A, B] = this.addRectPoint() // Trois points non alignés et formant un triangle OAB rectangle en O\n } else if (this.OAB) {\n [A, O, B] = this.addRectPoint() // Trois points non alignés et formant un triangle OAB rectangle en A\n } else {\n [O, A, B] = this.addNotAlignedPoint() // Trois points non alignés\n }\n // M est un point de (OA)\n const M = this.addPointAligned(O, A)[2] // C'est le troisième point de la sortie addPointAligned\n // On ajoute les droites (OB) et (AB) pour ne pas gêner le point M\n const dOB = this.addLine(O, B)\n const dAB = this.addLine(A, B)\n // Exemple d'un vecteur créé à partir de deux points\n const vO = new GVVector(O.x, O.y)\n const vA = new GVVector(A.x, A.y)\n const vB = new GVVector(B.x, B.y)\n const vM = new GVVector(M.x, M.y)\n const vOA = vA.sub(vO)\n const vOB = vB.sub(vO)\n const vOM = vM.sub(vO)\n // On détermine l'orientation de AOB pour la position des labels\n const direct = cross([vOA.x, vOA.y, 0], [vOB.x, vOB.y, 0])[2] > 0\n // On remplace le point M par son symétrique par rapport à O si besoin\n // Mauvaise idée !!\n // Rechercher un point qui corresponde soit par l'aléatoire soir par le barycentre bien choisi\n if (this.classicConfig !== undefined && ((this.classicConfig && vOA.dot(vOM) < 0) || (!this.classicConfig && vOA.dot(vOM) > 0))) {\n // Object.assign(M, this.addHomothetic(O, -1, M)[0])\n this.classicConfig = vOA.dot(vOM) > 0\n } else if (this.classicConfig === undefined) {\n this.classicConfig = vOA.dot(vOM) > 0\n }\n this.k = (vOA.dot(vOM) < 0 ? -1 : 1) * this.distance(O, M) / this.distance(O, A)\n // On crée une parallèle à (AB)\n const dMN = this.addParallelLine(M, dAB)[1] // C'est la seconde parallèle de addParalleleLine\n // On ajoute le point d'intersection de (OA) et (MN)\n const [N] = this.addIntersectLine(dMN, dOB) // C'est un tableau pour prévoir l'intersection de cercles par exemple\n // On commence par nommer les points et les droites\n const aleaNames = aleaName(5) // Nommage aléatoire des points\n // const aleaNames = ['O', 'A', 'B', 'M', 'N'] // Pour le debuggage\n const points = [O, A, B, M, N]\n points.forEach((x, i) => { x.name = aleaNames[i] })\n // On nomme les droites à partir des noms des points\n dAB.name = A.name + B.name // L'ordre des lettres est conservé\n dMN.aleaName(M, N) // L'ordre des lettres est aléatoirisé\n // On positionne les labels des points du mieux possible\n if (this.k < 0) { // À l'extrémités des triangles\n A.labelPoints = [O, A, B]\n B.labelPoints = [O, B, A]\n M.labelPoints = [O, M, N]\n N.labelPoints = [O, N, M]\n } else if (this.k < 1) {\n // ? : http://localhost:8080/mathalea.html?ex=betaThales,s=31,s2=3,s3=1,n=1,cd=1&serie=lvxb&v=ex&z=1\n A.labelPoints = [O, A, B]\n B.labelPoints = [O, B, A]\n M.labelPoints = direct ? [O, M, A] : [A, M, O]\n N.labelPoints = direct ? [B, N, O] : [O, N, B]\n } else {\n A.labelPoints = direct ? [O, A, M] : [M, A, O]\n B.labelPoints = direct ? [N, B, O] : [O, B, N]\n M.labelPoints = [O, M, N]\n N.labelPoints = [O, N, M]\n }\n O.labelPoints = [B, O, M]\n this.geometric = [O, A, B, M, N].map(x => { x.label = true; return x })\n this.points = [O, A, B, M, N].map(x => { x.label = true; return x })\n }\n\n /**\n * Set dimensions\n * @example\n * this.setDimensions(0.5) - > rectangle half height from the setting xmin, ymin and xmax\n * this.setDimensions(7,5) - > rectangle width=7 and height=5\n * this.setdimensions(0,0,7,6) - > xmin, ymin, xmax, ymax\n * @param args\n */\n setDimensions (...args/** number[] */) {\n switch (args.length) {\n case 1: {\n this.ratio = args[0]\n this.ymax = this.xmax * this.ratio\n this.width = this.xmax - this.xmin\n this.height = this.ymax - this.ymin\n break\n }\n case 2:\n case 3: {\n this.width = args[0]\n this.height = args[1]\n this.xmin = 0\n this.ymin = 0\n this.xmax = this.width\n this.ymax = this.height\n this.ratio = this.height / this.width\n break\n }\n case 4: {\n this.xmin = args[0]\n this.ymin = args[1]\n this.xmax = args[2]\n this.ymax = args[3]\n this.width = this.xmax - this.xmin\n this.height = this.ymax - this.ymin\n this.ratio = this.height / this.width\n break\n }\n }\n }\n}\n","import Exercice from '../deprecatedExercice.js'\nimport { context } from '../../modules/context.js'\nimport { listeQuestionsToContenu } from '../../modules/outils.js'\nimport { parse, create, all, unit } from 'mathjs'\nimport { toString, aleaVariables, assignVariables, calculer, toTex, resoudre, aleaName } from '../../modules/outilsMathjs.js'\nimport { GVGraphicView } from '../../modules/aleaFigure/GraphicView.js'\nimport { GVGrandeur } from '../../modules/aleaFigure/grandeurs.js'\nimport { GVLine, GVSegment, GVVector, GVPoint } from '../../modules/aleaFigure/elements.js'\nimport { GVAleaThalesConfig } from '../../modules/aleaFigure/outilsThales.js'\nimport { circularPermutation, name } from '../../modules/aleaFigure/outils.js'\nimport { colorToLatexOrHTML } from '../../modules/2dGeneralites.js'\n\n// eslint-disable-next-line no-debugger\ndebugger\n\nconst nbCase = 43\n\nexport const math = create(all)\nmath.config({\n number: 'number',\n randomSeed: context.graine\n})\nconst toTex2 = function (a) { return toTex(a, { suppr1: false }) }\n\nexport const titre = 'aleaFigure'\n\n// Les exports suivants sont optionnels mais au moins la date de publication semble essentielle\nexport const dateDePublication = '03/02/2022' // La date de publication initiale au format 'jj/mm/aaaa' pour affichage temporaire d'un tag\n// export const dateDeModifImportante = '08/01/2022' // Une date de modification importante au format 'jj/mm/aaaa' pour affichage temporaire d'un tag\n\n/**\n * Description didactique de l'exercice\n * @author Frédéric PIOU\n * Référence\n*/\nexport default function ExercicesThales () {\n Exercice.call(this)\n const formulaire = [\n '1 : Angles marqués alternes-internes ou correspondants ?',\n '2 : Déterminer si des droites sont parallèles (angles marqués).',\n '3 : Calculer la mesure d\\'un angle.',\n '4 : Nommer un angle alterne-interne ou correspondant à un angle marqué.',\n '5 : Nommer un angle alterne-interne ou correspondant à un angle nommé.',\n '6 : Déterminer si des droites sont parallèles (utiliser les noms d\\'angles).',\n '7 : Calculer la mesure d\\'un angle. (utiliser le nom des angles) ?',\n '8 : Mélange des questions'\n ]\n this.nbQuestions = 1\n this.besoinFormulaireNumerique = [\n 'Type de questions', nbCase, formulaire.join('\\n')\n ]\n this.besoinFormulaire2Numerique = true\n this.besoinFormulaire2Numerique = [\n 'Configuration ? ', 3, ['1 - Triangles emboités\\n 2 - Papillon\\n 3 - Mélange']\n ]\n this.besoinFormulaire3Numerique = true\n this.besoinFormulaire3Numerique = [\n 'Configuration ? ', 3, ['1 - Calcul de ON\\n 2 - Calcul de AB\\n 3 - Calcul de AM']\n ]\n this.consigne = ''\n this.nbCols = 0\n this.nbColsCorr = 0\n this.tailleDiaporama = 1\n this.video = ''\n this.correctionDetailleeDisponible = true\n this.correctionDetaillee = true\n context.isHtml ? (this.spacing = 2.5) : (this.spacing = 1.5)\n context.isHtml ? (this.spacingCorr = 2.5) : (this.spacingCorr = 2)\n this.sup = 'all'\n this.sup2 = 3\n this.sup3 = 1\n this.nouvelleVersion = function (numeroExercice, dDebug = true) {\n if (this.sup === 'all') this.nbQuestions = nbCase\n this.listeQuestions = [] // Liste de questions\n this.listeCorrections = [] // Liste de questions corrigées\n this.autoCorrection = [] // À placer même si l'exercice n'a pas vocation à être corrigé\n let nquestion = 0\n for (let i = 0, exercice = { texte: 'Pas de texte', texteCorr: 'Pas de correction' }, cpt = 0; i < this.nbQuestions && cpt < 100;) { // Boucle principale où i+1 correspond au numéro de la question\n if (this.sup === 'all') {\n // if ([9, 10].indexOf(cpt + 1) !== -1) cpt = 11\n nquestion = cpt + 1\n } else {\n nquestion = this.sup\n }\n if (dDebug) {\n console.log(`\n ********************************\n Exercice ${i + 1} Case ${nquestion}\n ********************************`)\n }\n switch (nquestion) { // Chaque question peut être d'un type différent, ici 4 cas sont prévus...\n case 7: {\n // Dépasser la limite du nombre de points\n // Remarque : l'algorithme est lourd lorsqu'on dépasse 20 points\n // http://localhost:8090/mathalea.html?ex=betaThales,s=7\n const graphic = new GVGraphicView(0, 0, 10, 7)\n const points = graphic.addPoint(20).map(x => { x.showDot(); x.showName(); return x })\n exercice = { texte: graphic.getFigure(...points), texteCorr: '' }\n break\n }\n case 8: {\n // Nommer des points avec des numéros\n // http://localhost:8090/mathalea.html?ex=betaThales,s=8\n const graphic = new GVGraphicView(0, 0, 10, 7)\n graphic.names = ['M']\n const points = graphic.addPoint(11).map(x => { x.showDot(); x.showName(); return x })\n exercice = { texte: graphic.getFigure(...points), texteCorr: '' }\n break\n }\n case 9: {\n // Deux droites parallèles\n // http://localhost:8090/mathalea.html?ex=betaThales,s=9\n\n // Une seule droite s'affiche\n // http://localhost:8090/mathalea.html?ex=betaThales,s=9,n=1&serie=T2K6&z=1\n // http://localhost:8090/mathalea.html?ex=betaThales,s=9,n=1&serie=bm8b&z=1\n\n // Aucune droite ne s'affiche\n // http://localhost:8090/mathalea.html?ex=betaThales,s=9,n=1&serie=Yldw&z=1\n\n // Une seule droite s'affiche mais tronquée\n // http://localhost:8090/mathalea.html?ex=betaThales,s=9,n=1&serie=KrLG&z=1\n const graphic = new GVGraphicView(0, 0, 10, 7)\n const [A, B, C] = graphic.addNotAlignedPoint()\n const d = graphic.addLine(A, B)\n const parallels = graphic.addParallelLine(C, d)\n exercice = { texte: graphic.getFigure(A, B, C, ...parallels), texteCorr: '' }\n break\n }\n case 10: {\n // Une sécante à deux droites\n // Bug ? http://localhost:8090/mathalea.html?ex=betaThales,s=10\n // Manque le point D : http://localhost:8090/mathalea.html?ex=betaThales,s=all,n=24&serie=M3k4&v=ex&z=1\n // Manque le point D : http://localhost:8090/mathalea.html?ex=betaThales,s=all,n=24&serie=2498&v=ex&z=1\n const graphic = new GVGraphicView(0, 0, 10, 7)\n graphic.clipVisible = true\n const [A, B, C] = graphic.addNotAlignedPoint()\n const D = graphic.addNotAlignedPoint(A, B)[2]\n const dAB = graphic.addLine(A, B)\n const dAC = graphic.addLine(A, C)\n const dBD = graphic.addLine(B, D)\n exercice.texte = graphic.getFigure(A, B, C, D, dAB, dAC, dBD)\n break\n }\n case 11: {\n // Droite verticale visible !\n // http://localhost:8090/mathalea.html?ex=betaThales,s=11\n const graphic = new GVGraphicView(-5, -5, 5, 5)\n const [A, B, C] = graphic.addPoint(3)\n A.x = 0\n B.x = 0\n const d = graphic.addLine(A, B)\n const d2 = graphic.addLine(A, C)\n exercice.texte = graphic.getFigure(A, B, C, d, d2)\n break\n }\n case 12: {\n // La droite ne s'affiche pas :\n // http://localhost:8090/mathalea.html?ex=betaThales,s=12,n=1&serie=1Ziy&z=1\n // http://localhost:8090/mathalea.html?ex=betaThales,s=12,n=1&serie=XCRV&z=1\n // http://localhost:8090/mathalea.html?ex=betaThales,s=12,n=1&serie=dBgM&z=1\n\n // La droite ne change pas ! (ou très peu)\n // http://localhost:8090/mathalea.html?ex=betaThales,s=12,n=1&serie=CWoc&z=1\n // http://localhost:8090/mathalea.html?ex=betaThales,s=12,n=1&serie=FjjF&z=1\n\n // La droite n'apparaît pas entièrement !\n // http://localhost:8090/mathalea.html?ex=betaThales,s=12,n=1&serie=MmjS&z=1\n\n // La droite s'affiche :\n // http://localhost:8090/mathalea.html?ex=betaThales,s=12,n=1&serie=D108&z=1\n const graphic = new GVGraphicView(-5, -5, 5, 5)\n graphic.clipVisible = true\n const [A, B] = graphic.addPoint(2)\n const l = graphic.addLine(A, B)\n const graph = graphic.getFigure(\n A, B, l\n )\n exercice.texte = graph\n break\n }\n case 14 : {\n // Parallelogrammes\n // http://localhost:8090/mathalea.html?ex=betaThales,s=14,n=1&serie=1Ziy&z=1\n const graphic = new GVGraphicView(-5, -5, 5, 5)\n const [A, B, C, D] = graphic.addParallelogram().vertices\n const [E, F] = graphic.addParallelogram(A, B).vertices.slice(2)\n const [G] = graphic.addParallelogram(F, A, D).vertices.slice(3)\n const graph = graphic.getFigure(\n A, B, C, D, E, F, G\n , graphic.addSidesPolygon(A, B, C, D)\n , graphic.addSidesPolygon(A, B, E, F)\n , graphic.addSidesPolygon(F, A, D, G)\n )\n exercice = { texte: graph, texteCorr: '' }\n break\n }\n case 15 : {\n // Homothetie\n // http://localhost:8090/mathalea.html?ex=betaThales,s=15,s2=1,s3=1\n const graphic = new GVGraphicView(-5, -5, 5, 5)\n const ABCD = graphic.addParallelogram()\n let O\n switch (this.sup3) {\n case 1:\n O = graphic.addPointOutPolygon(...ABCD.vertices)\n break\n case 2:\n O = graphic.addPointInPolygon(...ABCD.vertices)\n break\n case 3:\n if (Math.floor(Math.random() * 2) === 1) {\n O = graphic.addPointOutPolygon(...ABCD.vertices)\n } else {\n O = graphic.addPointInPolygon(...ABCD.vertices)\n }\n break\n }\n graphic.placeLabelsPolygon(...ABCD.vertices)\n let k\n switch (this.sup2) {\n case 1:\n k = 0.4 + Math.random() * 0.3\n break\n case 2:\n k = 1.3 + Math.random() * 0.4\n break\n case 3:\n k = -0.4 - Math.random() * 0.3\n break\n case 4:\n k = -1.3 - Math.random() * 0.4\n break\n case 5:\n k = (Math.random() * 0.4 + (Math.floor(Math.random() * 2)) + 0.3) * (-1) ** Math.floor(Math.random() * 2)\n break\n }\n const EFGH = graphic.addHomothetic(O, k, ...ABCD.vertices)\n graphic.placeLabelsPolygon(...EFGH)\n O.showDot()\n O.showName()\n const graph = graphic.getFigure(O, ABCD, EFGH, graphic.addSidesPolygon(...EFGH))\n exercice.texte = name`Dans cette homothétie de centre $${O}$ le parallélogramme de départ est $${ABCD}$.\n\n$\\textbf{1.}$ Parmi les valeurs suivantes du rapport $k$, une seule est possible, laquelle ?\n\n$\\hspace{1cm}$ $${aleaName([toTex(k.toFixed(2)), toTex((-k).toFixed(2)), toTex((1 / k).toFixed(2)), toTex((-1 / k).toFixed(2))]).join('\\\\qquad')}$\n\n$\\textbf{2.}$ Quelle est l'image de $${ABCD.vertices[0]}$ ?\n\n${graph}`\n exercice.texteCorr = name`$\\textbf{1.}$ $k = ${toTex(k.toFixed(2))}$\n\n$\\textbf{2.}$ L'image de $${ABCD.vertices[0]}$ est $${EFGH[0]}$.`\n break\n }\n case 16 : {\n // 3 Points non alignés\n // http://localhost:8090/mathalea.html?ex=betaThales,s=16,n=1&serie=1Ziy&z=1\n const graphic = new GVGraphicView(-5, -5, 5, 5)\n const [A, B, C] = graphic.addNotAlignedPoint()\n A.name = 'A'\n B.name = 'B'\n C.name = 'C'\n graphic.show(A, B, C, ...graphic.addSidesPolygon(A, B, C))\n const AB = new GVGrandeur(A.name + B.name, graphic.distance(A, B), 2, 'cm')\n let texte = name`${AB}`\n const graph = graphic.getFigure(A, B, C, ...graphic.addSidesPolygon(A, B, C))\n texte = texte + '<br>'\n exercice = { texte: texte + graph, texteCorr: '' }\n break\n }\n case 17 : {\n // Configurations de Thalès\n // Triangles emboités // http://localhost:8090/mathalea.html?ex=betaThales,s=17,n=1&serie=1Ziy&z=1&v=ex\n // Papillon // http://localhost:8090/mathalea.html?ex=betaThales,s=17,n=1&serie=pitq&v=ex&z=1\n // const graphic = new GVGraphicView(-0.1, -0.1, 0.1, 0.1)\n // graphic.scale *= 100\n // graphic.ppc *= 100\n const graphic = new GVGraphicView(-5, -5, 5, 5)\n const [O, A, B] = graphic.addNotAlignedPoint() // Trois points non alignés\n // On ajoute les droites (OB) et (AB)\n const dOB = graphic.addLine(O, B)\n const dAB = graphic.addLine(A, B)\n // M est un point de (OA)\n const M = graphic.addPointAligned(O, A)[2] // C'est le troisième point de la sortie addPointAligned\n // Exemple d'un vecteur créé à partir de deux points\n const vO = new GVVector(O.x, O.y)\n const vA = new GVVector(A.x, A.y)\n const vM = new GVVector(M.x, M.y)\n const vOA = vA.sub(vO)\n const vOM = vM.sub(vO)\n // configThales = true pour une configuration classique et papillon sinon\n const classicConfig = true\n if (classicConfig !== undefined && ((classicConfig && vOA.dot(vOM) < 0) || (!classicConfig && vOA.dot(vOM) > 0))) {\n Object.assign(M, graphic.addHomothetic(O, -1, M)[0])\n }\n // On crée une parallèle à (AB)\n const dMN = graphic.addParallelLine(M, dAB)[1] // C'est la seconde parallèle de addParalleleLine\n // On ajoute le point d'intersection de (OA) et (MN)\n const [N] = graphic.addIntersectLine(dMN, dOB) // C'est un tableau pour prévoir l'intersection de cercles par exemple\n // On commence par nommer les points et les droites\n // const aleaNames = aleaName(5) // Nommage aléatoire des points\n const aleaNames = ['O', 'A', 'B', 'M', 'N'] // Pour le debuggage\n const points = [O, A, B, M, N]\n points.forEach((x, i) => { x.name = aleaNames[i] })\n // On nomme les droites à partir des noms des points\n dAB.name = A.name + B.name // L'ordre des lettres est conservé\n dMN.aleaName(M, N) // L'ordre des lettres est aléatoirisé\n // Cela permet d'obtenir à l'aide du produit scalaire le signe de l'homothétie\n const signk = vOA.dot(vOM) < 0 ? -1 : 1\n // On définit deux grandeurs en imposant un nombre de décimales\n const OA = new GVGrandeur(O.name + A.name, graphic.distance(O, A), 1, 'cm')\n // On conservant signk le signe de k on a donc des longueurs algébriques\n const k = new GVGrandeur('k', signk * graphic.distance(O, M) / graphic.distance(O, A), 1)\n const OB = new GVGrandeur(O.name + B.name, graphic.distance(O, B), 1, 'cm')\n // On effectue le calcul pour OM à partir des grandeurs définies et non à partir des mesures de la figure\n // Ceci afin d'éviter les valeurs non décimales.\n const OM = OA.multiply(k)\n // OM porte le nom du calcul qui a permis de l'obtenir à savoir OA * k\n // On le renomme pour la suite\n OM.name = O.name + M.name\n // Même chose avec ON\n const ON = OB.multiply(OM).divide(OA)\n ON.name = O.name + N.name\n // On peut ainsi obtenir AM par le calcul vec les longueurs algébriques\n const AM = OA.neg().add(OM)\n AM.aleaName(A, M)\n // Calculer le périmètre\n const AB = new GVGrandeur(A.name + B.name, graphic.distance(A, B), 1, 'cm')\n const p = OA.abs().add(AB.abs()).add(OB.abs())\n p.name = 'p'\n // Un exemple d'utilisation de grandeur produit\n const aire = OA.multiply(OB).abs()\n // On définit les éléments à afficher sur la figure\n const graph = graphic.getFigure(\n O, A, B, M, N,\n graphic.addSidesPolygon(O, A, B), // Les segments visibles sont les côtés des deux triangles OAB et OMN\n graphic.addSidesPolygon(O, M, N)\n )\n // ObjetGarphic.name donne le nom en fonction de la nature de l'objet (droite, segment, point)\n // Grandeur.name donne le nom qu'on lui a affecté à sa création ou bien l'ensemble des calculs qui ont prmis de l'obtenir ou encore le nom qu'on lui a affecté\n // Grandeur.nameAndValue donne un format latex de la forme k = 1.5 cm par exemple\n // Grandeur.calcul donne une chaine de caractère avec les calculs au format string\n let texte = `\n Les droites $(${dAB.name}$) et $(${dMN.name})$ sont parallèles.\n <br>\n Calculer $${ON.name}$.\n <br>\n $${toTex(`${aire.calcul} = ${aire.toFixed}${aire.unit}`)}$\n <br>\n $${toTex(`${OA.name} = ${OA.toFixed}${OA.unit}`)}$\n <br>\n $${toTex(`${OB.name} = ${OB.toFixed}${OB.unit}`)}$\n <br>\n $${toTex(`${OM.name} = ${OM.abs().toFixed}${OM.unit}`)}$\n <br>\n $${toTex(`${ON.name} = ${ON.calcul}`)}$\n <br>\n $${toTex(`${ON.name} = ${ON.abs().toFixed}${ON.unit}`)}$\n <br>\n $${toTex(`${p.name} = ${p.calcul}`)}$\n <br>\n $${toTex(`${p.name} = ${p.toFixed}${p.unit}`)}$\n <br>\n $${toTex(`${AM.name} = ${AM.abs().toFixed}${AM.unit}`)}$\n `\n texte = texte + '<br>'\n exercice = { texte: texte + graph, texteCorr: '' }\n break\n }\n case 18: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=18,n=1&serie=fOS7&v=ex&z=1\n const graphic = new GVAleaThalesConfig()\n const [O, A, B, M, N] = graphic.geometric\n const graph = graphic.getFigure(\n O, A, B, M, N,\n graphic.addSidesPolygon(O, A, B), // Les segments visibles sont les côtés des deux triangles OAB et OMN\n graphic.addSidesPolygon(O, M, N)\n )\n exercice.texte = graph\n break\n }\n case 19: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=19,n=1&serie=fOS7&v=ex&z=1\n const graphic = new GVAleaThalesConfig()\n graphic.classicConfig = true\n const [O, A, B, M, N] = graphic.geometric\n const graph = graphic.getFigure(\n O, A, B, M, N,\n graphic.addSidesPolygon(O, A, B), // Les segments visibles sont les côtés des deux triangles OAB et OMN\n graphic.addSidesPolygon(O, M, N)\n )\n exercice.texte = graph\n break\n }\n case 20: {\n break\n }\n case 21: {\n // Problème toFixed : http://localhost:8090/mathalea.html?ex=betaThales,s=21,n=1&serie=3B5V&v=ex&z=1\n // const graphic = aleaThalesConfig(0, 0, 6, 6)\n // const graphic = new GVAleaThalesConfig()\n\n // Paramètres\n // graphic.setDimensions(0.5)\n // graphic.classicConfig = true\n // graphic.OAB = true\n // graphic.new()\n\n // Exemple avec des conversions\n // http://localhost:8090/mathalea.html?ex=betaThales,s=21,n=1&serie=GxI1&v=ex&z=1\n // Il faut mettre la précision à 2\n // ça bloque Problème toFixed : http://localhost:8090/mathalea.html?ex=betaThales,s=21,n=1&serie=8JRU&v=ex&z=1\n const graphic = new GVAleaThalesConfig()\n /* graphic.setDimensions(-0.1, -0.1, 0.1, 0.1)\n graphic.new()\n graphic.scale *= 15 / graphic.width\n graphic.ppc *= 15 / graphic.width */\n\n // On récupère les 5 points en configuration de Thalès\n const [O, A, B, M, N] = graphic.points\n\n // On nomme les droites à partir des noms des points\n const dAB = graphic.addLine(A, B)\n dAB.aleaName(A, B) // L'ordre des lettres est aléatoirisé\n const dMN = graphic.addLine(M, N)\n dMN.aleaName(M, N) // L'ordre des lettres est aléatoirisé\n\n const signk = graphic.classicConfig ? 1 : -1\n // On définit deux grandeurs en imposant un nombre de décimales\n const OA = new GVGrandeur(O.name + A.name, parse(unit(graphic.distance(O, A), 'cm').toString()).args[0].value, 1, parse(unit(graphic.distance(O, A), 'cm').toString()).args[1].toString())\n // On conservant signk le signe de k on a donc des longueurs algébriques\n const k = new GVGrandeur('k', signk * graphic.distance(O, M) / graphic.distance(O, A), 1)\n const OB = new GVGrandeur(O.name + B.name, parse(unit(graphic.distance(O, B), 'cm').toString()).args[0].value, 1, parse(unit(graphic.distance(O, B), 'cm').toString()).args[1].toString())\n\n // On effectue le calcul pour OM à partir des grandeurs définies et non à partir des mesures de la figure\n // Ceci afin d'éviter les valeurs non décimales.\n const OM = OA.multiply(k)\n // OM porte le nom du calcul qui a permis de l'obtenir à savoir OA * k\n // On le renomme pour la suite\n OM.name = O.name + M.name\n // Même chose avec ON\n const ON = OB.multiply(OM).divide(OA)\n ON.name = O.name + N.name\n\n // On peut ainsi obtenir AM par le calcul avec les longueurs algébriques\n const AM = OA.neg().add(OM)\n AM.aleaName(A, M)\n\n // On ajoute des droites pour l'énoncé\n const dAM = graphic.addLine(A, M)\n dAM.aleaName(A, M)\n const dBN = graphic.addLine(B, N)\n dBN.aleaName(B, N)\n\n // Préparation d'une autre question pour le calcul de MN\n const AB = new GVGrandeur(A.name + B.name, parse(unit(graphic.distance(A, B), 'cm').toString()).args[0].value, 1, parse(unit(graphic.distance(A, B), 'cm').toString()).args[1].toString())\n const MN = AB.multiply(k)\n MN.aleaName(M, N)\n\n // ObjetGarphic.name donne le nom en fonction de la nature de l'objet (droite, segment, point)\n // Grandeur.name donne le nom qu'on lui a affecté à sa création ou bien l'ensemble des calculs qui ont prmis de l'obtenir ou encore le nom qu'on lui a affecté\n // Grandeur.nameAndValue donne un format latex de la forme k = 1.5 cm par exemple\n // Grandeur.calcul donne une chaine de caractère avec les calculs au format string\n const aleaDonnees = aleaName(\n [`$${toTex(`${OA.name} = ${OA.toFixed}${OA.unit}`, { suppr1: false })}$`,\n `$${toTex(`${OB.name} = ${OB.toFixed}${OB.unit}`, { suppr1: false })}$`,\n `$${toTex(`${OM.name} = ${OM.abs().toFixed}${OM.unit}`, { suppr1: false })}$`,\n `$${toTex(`${MN.name} = ${MN.abs().toFixed}${MN.unit}`, { suppr1: false })}$`\n ]\n ).join(', ')\n const graph = graphic.getFigure(\n O, A, B, M, N,\n graphic.addSidesPolygon(O, A, B), // Les segments visibles sont les côtés des deux triangles OAB et OMN\n graphic.addSidesPolygon(O, M, N)\n )\n\n // Déterminer la meilleure unité pour les calculs avec les grandeurs\n const unite = parse(unit(graphic.width / 30, 'cm').toString()).args[1].toString()\n\n // Création du texte\n const texte = `\n Les droites $(${dAB.name}$) et $(${dMN.name})$ sont parallèles.\n <br> Les droites $(${dAM.name}$) et $(${dBN.name})$ sont sécantes en $${O.name}$.\n <br> On a : ${aleaDonnees}.\n <br> Calculer ${ON.name} en ${ON.unit} puis ${AB.name} en ${AB.unit}.\n `\n const texteCorr = `\n Les droites $(${dAB.name}$) et $(${dMN.name})$ sont parallèles.\n <br> Les droites $(${dAM.name}$) et $(${dBN.name})$ sont sécantes en $${O.name}$.\n <br>D'après le théorème de Thalès, on a : $${toTex(`${OA.name}/${OM.name}=${OB.name}/${ON.name}=${AB.name}/${MN.name}`, { suppr1: false })}$\n <br>D'une part $${toTex(`${OA.to(unite).toFixed}/${OM.abs().to(unite).toFixed}=${OB.to(unite).toFixed}/${ON.name}`, { suppr1: false })}$\n <br>On en déduit l'égalité des produits en croix : $${toTex(`${OA.to(unite).toFixed}*${ON.name}=${OB.to(unite).toFixed}*${OM.abs().to(unite).toFixed}`, { suppr1: false })}$\n <br> On résout l'équation d'inconnue $${ON.name}$ : $${toTex(`${ON.name}=${OB.to(unite).toFixed}*${OM.abs().to(unite).toFixed}/${OA.to(unite).toFixed}=${ON.abs().to(unite).toFixed}${ON.abs().to(unite).unit}`, { suppr1: false })}$\n <br>D'où ${ON.abs().nameAndValue}.\n <br> D'autre part $${toTex(`${AB.name}/${MN.abs().to(unite).toFixed}=${OA.to(unite).toFixed}/${OM.abs().to(unite).toFixed}`, { suppr1: false })}$\n <br>On en déduit l'égalité des produits en croix : $${toTex(`${AB.name}*${OM.abs().to(unite).toFixed}=${OA.to(unite).toFixed}*${MN.abs().to(unite).toFixed}`, { suppr1: false })}$\n <br> On résout l'équation d'inconnue $${AB.name}$ : $${toTex(`${AB.name}=${OA.to(unite).toFixed}*${MN.abs().to(unite).toFixed}/${OM.abs().to(unite).toFixed}=${AB.to(unite).toFixed}${AB.to(unite).unit}`, { suppr1: false })}$\n <br>D'où ${AB.nameAndValue}.\n `\n exercice.texte = texte + '<br>' + graph + '<br>' + texteCorr\n exercice.texteCorr = texteCorr\n break\n }\n case 22: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=22,n=1&serie=hZya&v=ex&z=1\n // Droites invisibles : http://localhost:8090/mathalea.html?ex=betaThales,s=22,n=1&serie=Ihry&v=ex&z=1\n // Droite tronquée http://localhost:8090/mathalea.html?ex=betaThales,s=22,n=1&serie=lS3Q&v=ex&z=1\n const graphic = new GVGraphicView(0, 0, 10, 10)\n const [l1, l2] = graphic.addParallelLine()\n const [A] = graphic.addPoint()\n A.showDot()\n const l3 = graphic.addParallelLine(A, l1)[1]\n graphic.clipVisible = true\n const graph = graphic.getFigure(\n l1, l2, A, l3\n )\n exercice.texte = graph\n break\n }\n case 23: {\n // Des rotations de rectangles\n // http://localhost:8090/mathalea.html?ex=betaThales,s=23,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView(0, 0, 10, 10)\n\n // Trois points formant un triangle rectangle pour obtenir un rectangle\n const [A, B, D] = graphic.addRectPoint()\n\n // Nombre aléatoire de rectangles\n const nbRectangles = [2, 3, 4, 5, 6, 8][Math.floor(Math.random() * 6)]\n\n // Nommage aléatoires des sommets\n const names = aleaName(4)\n\n // Construction des rectangles\n let ABCD\n const rectangles = []\n for (let i = 0; i < nbRectangles; i++) {\n const sommets = graphic.addRotate(A, 2 * Math.PI / nbRectangles * i, ...graphic.addParallelogram(D, A, B).vertices)\n if (i === 0) {\n ABCD = sommets.map((x, i) => {\n x.name = names[i]\n x.showName()\n if (i === 0) {\n x.labelPoints = [sommets[3], sommets[i], sommets[i + 1]]\n } else if (i === 3) {\n x.labelPoints = [sommets[i - 1], sommets[i], sommets[0]]\n } else {\n x.labelPoints = [sommets[i - 1], sommets[i], sommets[i + 1]]\n }\n return x.name\n })\n }\n rectangles.push(sommets, graphic.addSidesPolygon(...sommets))\n }\n const graph = graphic.getFigure(...rectangles)\n\n const n = new GVGrandeur('n', nbRectangles, 0)\n const AnglePlein = new GVGrandeur('', 360, 0, 'deg')\n const angle = AnglePlein.divide(n)\n // angle.name = aleaName(['\\\\alpha', '\\\\beta', '\\\\gamma', '\\\\delta'], 1)\n angle.name = aleaName(['\\\\alpha', '\\\\beta', '\\\\delta'], 1)[0]\n // L'exercice\n // Chaque rectangle et son suivant sont obtenus par une rotation de même centre et de même angle.\n exercice.texte = name`Compléter l'algorithme ci-dessous pour obtenir la figure.\n\n$\\textbf{Début de l'algorithme}$\n\n$\\small\\color{gray} 01 \\hspace{0.1cm}$ $\\color{blue}\\text{monrectangle}$ = Rectangle ${ABCD.join('')}\n\n$\\small\\color{gray} 02 \\hspace{0.1cm}$ variable $\\color{blue}${angle.name}$ = $\\color{red}\\fbox{ ? }\\degree$\n\n$\\small\\color{gray} 03 \\hspace{0.1cm}$ variable $\\color{blue}n$ = 0\n\n$\\small\\color{gray} 04 \\hspace{0.1cm}$ Répéter $\\color{red}\\fbox{ ? }$ fois :\n\n$\\small\\color{gray} 05 \\hspace{0.5cm}$ Tracer l'image de $\\color{blue}\\text{monrectangle}$ par une rotation de centre $\\color{red}\\fbox{ ? }$ et d'angle $\\color{blue}${angle.name}$\n\n$\\small\\color{gray} 06 \\hspace{0.5cm}$ $\\color{blue}n$ = $\\color{blue}n$ + 1\n\n$\\small\\color{gray} 07 \\hspace{0.5cm}$ $\\color{blue}${angle.name}$ = $\\color{blue}n$ * $\\color{blue}${angle.name}$\n\n$\\small\\color{gray} 08 \\hspace{0.1cm}$ Fin de la boucle Répéter\n\n$\\textbf{Fin de l'algorithme}$\n\n${graph.split('\\n').filter(x => x !== '').filter(x => x !== '').join('\\n')}`\n exercice.texteCorr = name`Il y a $${n.toFixed}$ rectangles il faut donc répéter au moins $\\color{red}\\fbox{${n.toFixed}}$ fois la boucle.\n\n$${angle.name} = \\dfrac{360\\degree}{${n.toFixed}} = ${angle.toFixed}\\degree$\n\nLa rotation est donc de centre $\\color{red}\\fbox{${ABCD[1]}}$ et d'angle $\\color{red}\\fbox{$${angle.name}=${angle.value}$\\degree}$.`\n break\n }\n case 24: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=24,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView()\n const [A, B] = graphic.addPoint(2)\n const polygons = []\n const n = parseInt((Math.random() * 3 + 3).toFixed())\n const O = graphic.addRegularPolygonCenter(A, B, n)\n for (let i = 0; i < 10; i++) {\n const sommets = graphic.addHomothetic(O, 1 / (i + 1), ...graphic.addRegularPolygon(n, A, B).vertices)\n polygons.push(sommets, graphic.addSidesPolygon(...sommets))\n }\n const graph = graphic.getFigure(\n O\n , ...polygons\n )\n exercice.texte = graph\n break\n }\n case 25: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=25,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView()\n const [G, H] = graphic.addPoint(2)\n const I = graphic.addRegularPolygon(3, G, H).vertices[2]\n const triangle3 = graphic.addSidesPolygon(G, H, I)\n const [A, B, C] = graphic.addNotAlignedPoint()\n const triangle1 = graphic.addSidesPolygon(A, B, C)\n const [D, E, F] = graphic.addNotAlignedPoint()\n const triangle2 = graphic.addSidesPolygon(D, E, F)\n const graph = graphic.getFigure(\n A, B, C, D, E, F, G, H, I,\n triangle1,\n triangle2,\n triangle3\n )\n exercice.texte = graph\n break\n }\n case 26: {\n // Deux triangles symétriques par rapport à un point situé à l'extérieur d'un des deux triangles\n // http://localhost:8090/mathalea.html?ex=betaThales,s=26,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView()\n const triangle1 = graphic.addNotAlignedPoint()\n const M = graphic.addPointOutPolygon(...triangle1)\n const triangle2 = graphic.addSymetric(M, ...triangle1)\n M.showDot()\n const graph = graphic.getFigure(\n triangle1, graphic.addSidesPolygon(...triangle1)\n , M\n , triangle2, graphic.addSidesPolygon(...triangle2)\n )\n exercice.texte = graph\n break\n }\n case 27: {\n // Deux triangles symétriques par rapport à un point situé à l'intérieur d'un des deux triangles\n // http://localhost:8090/mathalea.html?ex=betaThales,s=27,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView()\n const [A, B, C] = graphic.addNotAlignedPoint()\n const triangle1 = graphic.addSidesPolygon(A, B, C)\n const M = graphic.addPointInPolygon(A, B, C)\n M.name = 'M'\n const triangle2 = graphic.addSidesPolygon(...graphic.addSymetric(M, A, B, C))\n const graph = graphic.getFigure(\n triangle1\n , M, A, B, C\n , triangle2\n )\n exercice.texte = graph\n break\n }\n case 28: {\n // Deux triangles symétriques par rapport à un point situé sur l'un des côtés\n // http://localhost:8090/mathalea.html?ex=betaThales,s=28,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView()\n const [A, B, C] = graphic.addNotAlignedPoint()\n const triangle1 = graphic.addSidesPolygon(A, B, C)\n const M = graphic.addPointOnPolygon(A, B, C)\n M.name = 'M'\n const triangle2 = graphic.addSidesPolygon(...graphic.addSymetric(M, A, B, C))\n const graph = graphic.getFigure(\n triangle1\n , M, A, B, C\n , triangle2\n )\n exercice.texte = graph\n break\n }\n case 29: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=29,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView()\n const [A, B] = graphic.addPoint(2)\n const C = graphic.addPointDistance(A, graphic.distance(A, B)) // AB=AC\n const triangle1 = graphic.addSidesPolygon(A, B, C)\n for (const P of [A, B, C]) {\n P.showName()\n P.showDot()\n }\n const graph = graphic.getFigure(\n A, B, C\n , triangle1\n )\n exercice.texte = graph\n break\n }\n case 30: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=30,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView()\n const [A, B] = graphic.addPoint(2)\n A.showDot()\n B.showDot()\n const C = graphic.addPointBetween(A, B)\n C.showDot()\n C.showName()\n\n const graph = graphic.getFigure(\n A, B, C\n )\n exercice.texte = graph\n break\n }\n case 31: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=31,s2=3,n=1,cd=1&serie=qFnt&v=ex&z=1\n // PB M : http://localhost:8090/mathalea.html?ex=betaThales,s=31,s2=3,s3=1,n=1,cd=1&serie=Ld9D&v=ex&z=1\n // On créé un objet configuration de Thalès\n const graphic = new GVAleaThalesConfig([true, false, undefined][this.sup2 - 1])\n\n // On conserve le signe de k pour les longueurs algébriques\n const signk = graphic.classicConfig ? 1 : -1\n\n // On décide d'une unité\n const unite1 = 'cm'\n // Unité différente pour travailler les conversions\n const unite2 = 'mm'\n\n // On récupère les 5 points en configuration de Thalès\n const [O, A, B, M, N] = graphic.points\n\n // On nomme les droites à partir des noms des points\n const dAB = graphic.addLine(A, B)\n dAB.aleaName(A, B) // L'ordre des lettres est aléatoirisé\n const dMN = graphic.addLine(M, N)\n dMN.aleaName(M, N) // L'ordre des lettres est aléatoirisé\n\n // On définit deux grandeurs en imposant un nombre de décimales\n // const OA = new Grandeur(O.name + A.name, parse(unit(graphic.distance(O, A), unite).toString()).args[0].value, 1, parse(unit(graphic.distance(O, A), unite).toString()).args[1].toString())\n const OA = new GVGrandeur(O.name + A.name, graphic.distance(O, A), 1, unite1)\n // On conservant signk le signe de k on a donc des longueurs algébriques\n const k = new GVGrandeur('k', signk * graphic.distance(O, M) / graphic.distance(O, A), 1)\n // const OB = new GVGrandeur(O.name + B.name, parse(unit(graphic.distance(O, B), unite).toString()).args[0].value, 1, parse(unit(graphic.distance(O, B), unite).toString()).args[1].toString())\n const OB = new GVGrandeur(O.name + B.name, graphic.distance(O, B), 1, unite1)\n\n // On effectue le calcul pour OM à partir des grandeurs définies et non à partir des mesures de la figure\n // Ceci afin d'éviter les valeurs non décimales.\n const OM = OA.multiply(k)\n // La grandeur OM porte le nom du calcul qui a permis de l'obtenir à savoir OA * k\n // On la renomme pour la suite\n OM.aleaName(O, M)\n\n // Même travail avec ON\n const ON = OB.multiply(OM).divide(OA)\n ON.aleaName(O, N)\n\n // On peut ainsi obtenir AM et BN par le calcul avec les longueurs algébriques\n const AM = OA.neg().add(OM)\n AM.aleaName(A, M)\n const BN = OB.neg().add(ON)\n BN.aleaName(B, N)\n\n // On ajoute des droites pour l'énoncé\n const dAM = graphic.addLine(A, M)\n dAM.aleaName(A, M)\n const dBN = graphic.addLine(B, N)\n dBN.aleaName(B, N)\n\n // Préparation d'une autre question pour le calcul de MN\n // const AB = new GVGrandeur(A.name + B.name, parse(unit(graphic.distance(A, B), unite1).toString()).args[0].value, 1, parse(unit(graphic.distance(A, B), unite).toString()).args[1].toString())\n const AB = new GVGrandeur(A.name + B.name, graphic.distance(A, B), 1, unite1)\n const MN = AB.multiply(k)\n MN.aleaName(M, N)\n\n // À ce stade nous n'avons plus besoins des longueurs algébriques\n for (const x of [OB, OM, ON, MN, AM, BN]) {\n x.toFixed = Math.abs(x.toFixed) // Les longueurs sont maintenant positives\n x.name = x.name + '' // Pour que nameAndValue soit actualisé\n }\n\n // On aléatoirise l'ordre des données\n const aleaDonnees = []\n aleaDonnees[0] = aleaName([OA, OB, OM, MN].map(x => `$ {${toTex2(`${x.name} = ${x.abs().toFixed}`)}~${x.unit}}$`)).join(', ')\n aleaDonnees[1] = aleaName([OA, OB, OM, MN].map(x => `$ {${toTex2(`${x.name} = ${x.abs().toFixed}`)}~${x.unit}}$`)).join(', ')\n aleaDonnees[2] = aleaName([OA, AB, MN].map(x => `$ {${toTex2(`${x.name} = ${x.abs().toFixed}`)}~${x.unit}}$`)).join(', ')\n // On créé l'export.\n // Attention à l'ordre d'affichage et notamment des labels (en premier)\n const graph = graphic.getFigure(\n O, A, B, M, N,\n graphic.addSidesPolygon(O, A, B), // Les segments visibles sont les côtés des deux triangles OAB et OMN\n graphic.addSidesPolygon(O, M, N)\n )\n\n // Création des textes et des solutions\n const texteCorr = ['', '', '']\n const texteDonnees = ['', '', '']\n const consigne = ['', '', '']\n\n const texteIntro = name`Les droites $(${dAB}$) et $(${dMN})$ sont parallèles.\n\nLes droites $(${dAM}$) et $(${dBN})$ sont sécantes en $${O}$.`\n\n texteDonnees[0] = `On a : ${aleaDonnees[0]}.`\n texteDonnees[1] = `On a : ${aleaDonnees[1]}.`\n texteDonnees[2] = `On a : ${aleaDonnees[2]}.`\n\n consigne[0] = name`Calculer $${ON}$ en ${ON.to(unite2).unit}.`\n consigne[1] = name`Calculer $${AB}$ en ${AB.unit}.`\n consigne[2] = name`Calculer $${AM}$ en ${AM.unit}.`\n\n const texteCorrIntro = `D'après le théorème de Thalès, on a :\n\n$$${toTex2(name`${OA} / ${OM} = ${OB} / ${ON} = ${AB} / ${MN}`)}$`\n // Calcul de ON\n texteCorr[0] = name`$\\textbf{Calcul de ${ON}}$\n\nOn connait les longueurs $${OA}$, $${OB}$ et $${OM}$, d'où :\n\n$$${toTex2(name`${OA.toFixed}/${OM.toFixed}=${OB.toFixed}/${ON}`)}$\n\nOn en déduit ensuite l'égalité des produits en croix :\n\n$$${toTex2(name`${OA.toFixed} * ${ON}=${OB.toFixed} * ${OM.toFixed}`)}$\n\nOn résout enfin l'équation d'inconnue $${ON}$ :\n\n$$${toTex2(name`${ON}=${OB.toFixed} * ${OM.toFixed}/${OA.toFixed}=${ON.toFixed}`)}~${ON.unit}$\n\nDonc ${ON.to(unite2).nameAndValue}.`\n // Calcul de AB\n texteCorr[1] = name`$\\textbf{Calcul de ${AB}}$\n\nOn connait les longueurs $${OA}$, $${OM}$ et $${MN}$, d'où :\n\n$$${toTex2(name`${AB}/${MN.toFixed}=${OA.toFixed}/${OM.toFixed}`)}$\n\nOn en déduit l'égalité des produits en croix :\n\n$$${toTex2(name`${AB} * ${OM.toFixed} = ${OA.toFixed} * ${MN.toFixed}`)}$\n\nOn résout l'équation d'inconnue $${AB}$ :\n\n$$${toTex2(name`${AB} = ${OA.toFixed} * ${MN.toFixed} / ${OM.toFixed} = ${AB.toFixed}`)}~${AB.unit}$\n\nDonc ${AB.nameAndValue}.`\n // Calcul de AM\n texteCorr[2] = name`$\\textbf{Calcul de ${OM}}$\n\nOn connait les longueurs $${AB}$, $${MN}$ et $${OA}$, d'où :\n\n$$${toTex2(name`${AB.toFixed}/${MN.toFixed}=${OA.toFixed}/${OM}`)}$\n\nOn en déduit l'égalité des produits en croix :\n\n$$${toTex2(name`${AB.toFixed} * ${OM} = ${OA.toFixed} * ${MN.toFixed}`)}$\n\nOn résout l'équation d'inconnue $${OM}$ :\n\n$$${toTex2(name`${OM} = ${OA.toFixed} * ${MN.toFixed} / ${AB.toFixed} = ${OM.toFixed}`)}~${OM.unit}$\n\n$\\textbf{Calcul de ${AM}}$\n\n$$${toTex2(k.abs().value < 1 ? name`${AM} = ${OA} ${k.value > 0 ? '-' : '+'} ${OM}` : name`${AM} = ${OM} ${k.value > 0 ? '-' : '+'} ${OA}`)}$\n\n$$${toTex2(k.abs().value < 1 ? name`${AM} = ${OA.toFixed} ${k.value > 0 ? '-' : '+'} ${OM.toFixed}` : name`${AM} = ${OM.toFixed} ${k.value > 0 ? '-' : '+'} ${OA.toFixed}`)}$\n\nDonc ${AM.nameAndValue}.`\n const phrasesCorr = `${texteIntro}\n\n${texteCorrIntro}\n\n${texteCorr[this.sup3 - 1]}`.split('\\n\\n')\n\n if (this.correctionDetaillee) {\n exercice.texteCorr = phrasesCorr.join('<br>')\n } else {\n exercice.texteCorr = phrasesCorr.filter((x, i) => [3, 4, 6, 8, 10, 11, 12, 14, 16, 18, 19].indexOf(i) !== -1).join('<br>').replaceAll('$$', '$\\\\hspace{1cm}')\n }\n exercice.texte = `${texteIntro}\n\n${texteDonnees[this.sup3 - 1]}\n\n${consigne[this.sup3 - 1]}` + '<br>' + graph\n break\n }\n case 32: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=32,s2=3,s3=1,n=1,cd=1&serie=7wjj&v=ex&z=1\n // Ajouter des étiquettes aux extrémités d'un angle\n const graphic = new GVGraphicView()\n const [A, B, C] = graphic.addNotAlignedPoint()\n\n // Boucle ! http://localhost:8090/mathalea.html?ex=betaThales,s=32,s2=3,s3=1,n=1,cd=1&serie=lqd7&v=ex&z=1\n // const [D, E, F] = graphic.addPointAligned()\n\n // Afficher le label des points\n // A.showName()\n // C.showName()\n // B.showName(A, B, C).showDot()\n B.labelPoints = [A, B, C]\n B.label = true\n // Afficher les points sous forme de croix x\n A.showDot()\n // B.showDot()\n C.showDot()\n const graph = graphic.getFigure(\n graphic.addSidesPolygon(A, B, C)\n , B, A, C // , D, E, F\n )\n exercice.texte = graph\n break\n }\n case 33: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=33,s2=3,s3=1,n=1,cd=1&serie=7wjj&v=ex&z=1\n // Exercices sur les rotations\n const graphic = new GVGraphicView()\n const [A, B, C] = graphic.addNotAlignedPoint()\n A.showDot()\n const graph = graphic.getFigure(\n A, B, C,\n graphic.addSidesPolygon(A, B, C)\n )\n exercice.texte = graph\n break\n }\n case 34: {\n // Des rotations de rectangles\n // http://localhost:8090/mathalea.html?ex=betaThales,s=34,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView()\n\n // Trois points formant un triangle rectangle pour obtenir un rectangle\n const [A, B, D] = graphic.addRectPoint()\n\n // Nombre aléatoire de rectangles\n const nbRectangles = [3, 4, 5, 6, 8, 10][Math.floor(Math.random() * 6)]\n\n // Nommage aléatoires des sommets\n const names = aleaName(8)\n\n // Construction des rectangles\n let ABCD, EFGH\n const rectanglesPossibles = [2, 3, 5, 6, 7, 9, 10].filter(x => x < nbRectangles)\n const aleaRectangle = rectanglesPossibles[Math.floor(Math.random() * rectanglesPossibles.length)]\n const rectangles = []\n for (let i = 0; i < nbRectangles; i++) {\n const sommets = graphic.addRotate(A, 2 * Math.PI / nbRectangles * i, ...graphic.addParallelogram(D, A, B).vertices)\n if (i === 0) {\n ABCD = sommets.map((x, i) => {\n x.name = names[i]\n x.showName()\n if (i === 0) {\n x.labelPoints = [sommets[3], sommets[i], sommets[i + 1]]\n } else if (i === 3) {\n x.labelPoints = [sommets[i - 1], sommets[i], sommets[0]]\n } else {\n x.labelPoints = [sommets[i - 1], sommets[i], sommets[i + 1]]\n }\n return x.name\n })\n }\n if (i === aleaRectangle) {\n EFGH = sommets.map((x, i) => {\n x.name = names[i + 4]\n if (i !== 1) x.showName()\n if (i === 0) {\n x.labelPoints = [sommets[3], sommets[i], sommets[i + 1]]\n } else if (i === 3) {\n x.labelPoints = [sommets[i - 1], sommets[i], sommets[0]]\n } else {\n x.labelPoints = [sommets[i - 1], sommets[i], sommets[i + 1]]\n }\n if (i === 1) {\n return ABCD[1]\n } else {\n return x.name\n }\n })\n }\n rectangles.push(sommets, graphic.addSidesPolygon(...sommets))\n }\n rectangles.filter((x, i) => (i === 1 || i === 2 * aleaRectangle + 1)).map((y) => y.map(z => { z.color = colorToLatexOrHTML('blue'); return z }))\n const cotesRectangles = rectangles.filter(x => x[0] instanceof GVSegment)\n const sommetsRectangles = rectangles.filter(x => x[0] instanceof GVPoint)\n const graph = graphic.getFigure(...sommetsRectangles, ...cotesRectangles, cotesRectangles[0], cotesRectangles[aleaRectangle])\n\n const n = new GVGrandeur('n', nbRectangles, 0)\n const AnglePlein = new GVGrandeur('', 360, 0, 'deg')\n const angle = AnglePlein.divide(n)\n const k = new GVGrandeur('', aleaRectangle, 0)\n const angleSolution = angle.multiply(k)\n angle.name = aleaName(['\\\\alpha', '\\\\beta', '\\\\gamma', '\\\\delta'], 1)\n // L'exercice\n const P = aleaName([0, 2, 3])\n // Chaque rectangle et son suivant sont obtenus par une rotation de même centre et de même angle.\n exercice.texte = `On a effectué successiveement $${n.toFixed}$ rotations d'un rectangle avec le même angle et le même centre.\n\nOn est revenu sur le rectangle de départ.\n\nOn considère la rotation qui transforme le rectangle $${circularPermutation(ABCD).join('')}$ en $${circularPermutation(EFGH).join('')}$ dans le sens direct (anti-horaire).\n\n$\\\\textbf{1.}$ Déterminer l'image de $${ABCD[P[i]]}$ par cette rotation.\n\n$\\\\textbf{2.}$ Déterminer l'angle de la rotation.\n\n${graph.split('\\n').filter(x => x !== '').filter(x => x !== '').join('\\n')}`\n exercice.texteCorr = `\n$\\\\textbf{1.}$ L'image de $${ABCD[P[i]]}$ est $${EFGH[P[i]]}$.\n\n$\\\\textbf{2.}$ Il y a $${n.value}$ rectangles en tout.\n\n$\\\\dfrac{360\\\\degree}{${n.toFixed}} = ${angle.toFixed}\\\\degree$\n\nOn doit tourner $${aleaRectangle}$ fois d'un angle de $${angle.toFixed}\\\\degree$ dans le sens direct (anti-horaire).\n\n$${aleaRectangle}\\\\times${angle.toFixed}\\\\degree=${angleSolution.toFixed}\\\\degree$\n\nDonc c'est la rotation de centre $${ABCD[1]}$ et d'angle $${angleSolution.toFixed}\\\\degree$.\n`.replaceAll('\\n\\n', '<br>')\n break\n }\n case 35: {\n // Des rotations de carrés\n // http://localhost:8090/mathalea.html?ex=betaThales,s=35,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView()\n\n // Trois points formant un triangle rectangle isocèle pour obtenir un carré\n const [A, B] = graphic.addPoint(2)\n const [D] = graphic.addRotate(A, Math.PI / 2, B)\n\n // Nombre aléatoire de rectangles\n const nbRectangles = [3, 5, 6][Math.floor(Math.random() * 3)]\n const rectangleImagePossibles = [2, 3, 4, 5].filter(x => x < nbRectangles && x !== nbRectangles / 2)\n const rectangleImage = rectangleImagePossibles[Math.floor(Math.random() * rectangleImagePossibles.length)]\n // Nommage aléatoires des sommets\n const names = aleaName(8)\n\n // Construction des rectangles\n let ABCD, EFGH\n const rectangles = []\n for (let i = 0; i < nbRectangles; i++) {\n const sommets = graphic.addRotate(A, 2 * Math.PI / nbRectangles * i, ...graphic.addParallelogram(D, A, B).vertices)\n if (i === 0) {\n ABCD = circularPermutation(sommets.map((x, i) => {\n x.name = names[i]\n x.showName()\n if (i === 0) {\n x.labelPoints = [sommets[3], sommets[i], sommets[i + 1]]\n } else if (i === 3) {\n x.labelPoints = [sommets[i - 1], sommets[i], sommets[0]]\n } else {\n x.labelPoints = [sommets[i - 1], sommets[i], sommets[i + 1]]\n }\n return x.name\n }), 3)\n }\n if (i === rectangleImage) {\n EFGH = circularPermutation(sommets.map((x, i) => {\n x.name = names[i + 4]\n if (i !== 1) x.showName()\n if (i === 0) {\n x.labelPoints = [sommets[3], sommets[i], sommets[i + 1]]\n } else if (i === 3) {\n x.labelPoints = [sommets[i - 1], sommets[i], sommets[0]]\n } else {\n x.labelPoints = [sommets[i - 1], sommets[i], sommets[i + 1]]\n }\n if (i === 1) {\n return ABCD[2]\n } else {\n return x.name\n }\n }), 3)\n }\n rectangles.push(sommets, graphic.addSidesPolygon(...sommets))\n }\n rectangles.filter((x, i) => (i === 1 || i === 2 * rectangleImage + 1)).map((y) => y.map(z => { z.color = colorToLatexOrHTML('blue'); return z }))\n const cotesRectangles = rectangles.filter(x => x[0] instanceof GVSegment)\n const sommetsRectangles = rectangles.filter(x => x[0] instanceof GVPoint)\n const graph = graphic.getFigure(...sommetsRectangles, ...cotesRectangles, cotesRectangles[0], cotesRectangles[rectangleImage])\n\n const n = new GVGrandeur('n', nbRectangles, 0)\n const AnglePlein = new GVGrandeur('', 360, 0, 'deg')\n const angle = AnglePlein.divide(n)\n const k = new GVGrandeur('', rectangleImage, 0)\n const angleSolution = angle.multiply(k)\n ABCD.name = circularPermutation(ABCD.concat([])).join('')\n EFGH.name = circularPermutation(EFGH.concat([])).join('')\n angle.name = aleaName(['\\\\alpha', '\\\\beta', '\\\\gamma', '\\\\delta'], 1)\n let remarque\n if (angleSolution.toFixed + 90 > 360) {\n remarque = `<br>\\\\textit{Remarque :} L'angle est plus grand que $360\\\\degree$.\n\n$${angleSolution.toFixed + 90}-360=${angleSolution.toFixed + 90 - 360}$\n\nDonc la solution peut être une rotation d'angle $${angleSolution.toFixed + 90 - 360}\\\\degree$.`\n } else { remarque = '' }\n // L'exercice\n // Chaque rectangle et son suivant sont obtenus par une rotation de même centre et de même angle.\n exercice.texte = `Il y a $${n.toFixed}$ carrés tous identiques dont $${ABCD.name}$ et $${EFGH.name}$.\n\nDéterminer l'angle de la rotation de centre $${ABCD[2]}$ qui permet de transformer $${ABCD[3]}$ en $${EFGH[1]}$ dans le sens direct (anti-horaire).\n\n${graph.split('\\n').filter(x => x !== '').filter(x => x !== '').join('\\n')}`.replaceAll('\\n\\n', context.isHtml ? '<br>' : '\\n\\n')\n exercice.texteCorr = `Il y a $${n.value}$ carrés en tout.\n\n$\\\\dfrac{360\\\\degree}{${n.toFixed}} = ${angle.toFixed}\\\\degree$\n\nOn doit tourner $${rectangleImage}$ fois d'un angle de $${angle.toFixed}\\\\degree$ dans le sens direct (anti-horaire) pour passer de $${ABCD.name}$ à $${EFGH.name}$.\n\nL'image de $${ABCD[3]}$ par cette rotation est $${EFGH[3]}$.\n\nOn doit ensuite effectuer une rotation de centre $${ABCD[2]}$ d'un angle de $90\\\\degree$ pour passer du point $${EFGH[3]}$ au point $${EFGH[1]}$.\n\n$${rectangleImage}\\\\times${angle.toFixed}\\\\degree+90\\\\degree=${angleSolution.toFixed + 90}\\\\degree$\n\nDonc c'est la rotation de centre $${ABCD[2]}$ et d'angle $${angleSolution.toFixed + 90}\\\\degree$.\n\n${remarque}`\n break\n }\n case 36: {\n // Angles\n // http://localhost:8090/mathalea.html?ex=betaThales,s=36,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView()\n // const [A, B, C] = graphic.addRectPoint()\n const triangle = graphic.addTriangle()\n // graphic.aleaName(...triangle)\n graphic.addLabelsPointsPolygon(...triangle.vertices)\n const angles = graphic.addAnglesPolygon(...triangle.vertices)\n const aA = new GVGrandeur(circularPermutation(triangle.vertices.map(x => x.name), 2).join(''), angles[0].angle / Math.PI * 180, 0, 'deg')\n const aB = new GVGrandeur(circularPermutation(triangle.vertices.map(x => x.name), 0).join(''), angles[1].angle / Math.PI * 180, 0, 'deg')\n const aC = new GVGrandeur(circularPermutation(triangle.vertices.map(x => x.name), 1).join(''), 180 - (aA.toFixed + aB.toFixed), 0, 'deg')\n triangle.name = circularPermutation(triangle.vertices.map(x => x.name)).join('')\n const graph = graphic.getFigure(\n ...triangle.vertices\n , ...graphic.addSidesPolygon(...triangle.vertices)\n , ...angles.map(x => { x.fillColor = 'red'; x.right = true; return x })\n )\n exercice.texte = `$\\\\widehat{${aA.name}}=${aA.format()}$ $\\\\widehat{${aB.name}}=${aB.format()}$\n\n${graph}`\n exercice.texteCorr = String.raw`Dans un triangle, la somme des angles est $180\\degree$.\n\nDans le triangle $${triangle.name}$ :\n\n$\\begin{aligned}\n\\widehat{${aA.name}}+\\widehat{${aB.name}}+\\widehat{${aC.name}}&=180\\degree\\\\\n${aA.format()}+${aB.format()}+\\widehat{${aC.name}}&=180\\degree\\\\\n\\widehat{${aC.name}}&=180 - (${aA.format()}+${aB.format()})\\\\\n\\widehat{${aC.name}}&=180 - ${aA.add(aB).format()}\\\\\n\\widehat{${aC.name}}&=${aC.format()}\n\\end{aligned}$`\n break\n }\n case 37: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=37,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView(0, 0, 10, 7)\n // graphic.clipVisible = true\n const ABC = graphic.addTriangle()\n const [A, B, C] = ABC.vertices\n const k = new GVGrandeur('k', Math.floor(Math.random() * 10 + 10) / 10 + 0.1, 1)\n const DEF = graphic.addTriangle(\n k.toFixed * graphic.distance(A, B),\n k.toFixed * graphic.distance(B, C),\n k.toFixed * graphic.distance(A, C)\n )\n const [D, E, F] = DEF.vertices\n DEF.moveRight(ABC)\n const AB = new GVGrandeur([A, B], graphic.distance(A, B), 1, 'cm')\n const BC = new GVGrandeur([B, C], graphic.distance(B, C), 1, 'cm')\n const CA = new GVGrandeur([C, A], graphic.distance(C, A), 1, 'cm')\n const DE = AB.multiply(k)\n const EF = BC.multiply(k)\n const FD = CA.multiply(k)\n DE.aleaName(D, E)\n EF.aleaName(E, F)\n FD.aleaName(F, D)\n const graph = graphic.getFigure(ABC, DEF)\n const hfill = context.isHtml ? '\\\\hspace{1cm}' : '\\\\hfill'\n exercice.texte = name`$${DEF}$ est une agrandissement de $${ABC}$ tel que les points $${D}$, $${E}$, $${F}$ sont les homologues respectifs de $${A}$, $${B}$, $${C}$.\n\nOn sait que ${AB.nameAndValue}, ${BC.nameAndValue}, ${DE.nameAndValue} et ${FD.nameAndValue}.\n\n$\\textbf{1.}$ Calculer $${EF}$. $${hfill}$ $\\textbf{2.}$ Calculer $${CA}$ $${hfill}$.\n\n${graph}`\n exercice.texteCorr = name`$\\textbf{1.} $ $${toTex(name`${DE}/${AB}=${DE.toFixed}/${AB.toFixed}=${k.toFixed}`)}$\n\nDonc $${DEF}$ est $${k.format()}$ fois plus grand que $${ABC}$.\n\n$${EF}=${k.format()}\\times ${AB}$.\n\n$${EF}=${k.format()}\\times ${AB.format()}$.\n\n$${EF}=${EF.format()}$.\n\n$\\textbf{2.}$ On a $${FD}=${k.format()}\\times ${CA}$.\n\nSoit $${FD.format()}=${k.format()}\\times ${CA}$.\n\nRésolvons l'équation d'inconnue $${CA}$.\n\n${resoudre(name`${FD.toFixed}=${k.toFixed}*${CA}`, {}).texteCorr}\n\nDonc ${CA.nameAndValue}.`\n break\n }\n case 38: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=38,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView(0, 0, 10, 7)\n graphic.clipVisible = false\n const ABCD = graphic.addRegularPolygon(4)\n const [A, B, C] = ABCD.vertices.slice(0, 3)\n const k = new GVGrandeur('k', Math.floor(Math.random() * 10 + 10) / 10 + 0.1, 1)\n const [E] = graphic.addPoint()\n const F = graphic.addPointDistance(E, k.toFixed * graphic.distance(A, B))\n const EFGH = graphic.addRegularPolygon(4, E, F)\n const G = EFGH.vertices[2]\n // Déplacer la figure\n EFGH.moveRight(ABCD)\n // Calcul des grandeurs\n const AB = new GVGrandeur('AB', graphic.distance(A, B), 1, 'cm')\n AB.aleaName(A, B)\n const AC = AB.hypotenuse(AB)\n AC.aleaName(A, C)\n const BC = AB.add(new GVGrandeur('', 0, 0, 'cm'))\n BC.aleaName(B, C)\n const EF = AB.multiply(k)\n EF.aleaName(E, F)\n const EG = EF.hypotenuse(EF)\n EG.aleaName(E, G)\n const AB2 = AB.pow(2).multiply(new GVGrandeur('', 2, 0))\n const graph = graphic.getFigure(ABCD, EFGH)\n exercice.texte = name`Le carré $${EFGH}$ est une agrandissement de $${ABCD}$.\n\nL'échelle d'agrandissement est $${k.format()}$.\n\nOn sait que ${AB.nameAndValue}.\n\nCalculer $${EG}$ arrondi au millimètre près.\n\n${graph}`\n exercice.texteCorr = name`$${ABCD}$ est un carré donc $${A}${B}${C}$ est rectangle en ${B}.\n\nD'après le théorème de Pythagore, on a :\n\n$${AC}^2=${AB}^2+${BC}^2$\n\n$${toTex(name`${AC}^2=${AB.toFixed}^2+${BC.toFixed}^2`)}$\n\n$${toTex(name`${AC}^2=${AB2.toFixed}`)}$\n\n$${AC}=\\sqrt{${toTex(`${AB2.toFixed}`)}}$\n\nOn a donc $${EG} = ${k.format()} \\times \\sqrt{${toTex(`${AB2.toFixed}`)}}$\n\nD'où ${EG.nameAndValue.replace('=', '\\\\approx')}.`\n break\n }\n case 39: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=39,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView(0, 0, 10, 7)\n graphic.clipVisible = false\n const ABCD = graphic.addRegularPolygon(4)\n const [A, B, C] = ABCD.vertices.slice(0, 3)\n const k = new GVGrandeur('k', Math.floor(Math.random() * 10 + 10) / 10 + 0.1, 1)\n const [E] = graphic.addPoint()\n const F = graphic.addPointDistance(E, k.toFixed * graphic.distance(A, B))\n const EFGH = graphic.addRegularPolygon(4, E, F)\n const G = EFGH.vertices[2]\n // Déplacer la figure\n EFGH.moveRight(ABCD)\n const AB = new GVGrandeur([A, B], graphic.distance(A, B), 1, 'cm')\n const AC = AB.hypotenuse(AB)\n AC.aleaName(A, C)\n const BC = AB.add(new GVGrandeur('', 0, 0, 'cm'))\n BC.aleaName(B, C)\n const EF = AB.multiply(k)\n EF.aleaName(E, F)\n const EG = EF.hypotenuse(EF)\n EG.aleaName(E, G)\n const FG = EF.add(new GVGrandeur('', 0, 0, 'cm'))\n const EF2 = EF.pow(2).multiply(new GVGrandeur('', 2, 0))\n const graph = graphic.getFigure(ABCD, EFGH)\n exercice.texte = name`Le carré $${EFGH}$ est une agrandissement de $${ABCD}$.\n\nL'échelle d'agrandissement est $${k.format()}$.\n\nOn sait que ${EF.nameAndValue}.\n\nCalculer $${AC}$ arrondi au millimètre près.\n\n${graph}`\n exercice.texteCorr = name`$${EFGH}$ est un carré donc $${E}${F}${G}$ est rectangle en ${F}.\n\nD'après le théorème de Pythagore, on a :\n\n$${EG}^2=${EF}^2+${FG}^2$\n\n$${toTex(name`${EG}^2=${EF.toFixed}^2+${FG.toFixed}^2`)}$\n\n$${toTex(name`${EG}^2=${EF2.toFixed}`)}$\n\n$${EG}=\\sqrt{${toTex(`${EF2.toFixed}`)}}$\n\nOn a donc $${AC} = \\dfrac{\\sqrt{${toTex(`${EF2.toFixed}`)}}}{${k.format()}}$\n\nD'où ${AC.nameAndValue.replace('=', '\\\\approx')}.`\n break\n }\n case 40: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=40,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView(0, 0, 10, 7)\n graphic.clipVisible = false\n const ABCD = graphic.addRegularPolygon(4)\n const [A, B] = ABCD.vertices.slice(0, 2)\n const k = new GVGrandeur('k', Math.floor(Math.random() * 10 + 10) / 10 + 0.1, 1)\n const [E] = graphic.addPoint()\n const F = graphic.addPointDistance(E, k.value * graphic.distance(A, B))\n const EFGH = graphic.addRegularPolygon(4, E, F)\n EFGH.moveRight(ABCD)\n const AB = new GVGrandeur([A, B], graphic.distance(A, B), 1, 'cm')\n const EF = AB.multiply(k)\n EF.aleaName(E, F)\n const AireEFGH = EF.multiply(EF)\n const graph = graphic.getFigure(ABCD, EFGH)\n exercice.texte = name`Le carré $${EFGH}$ est un agrandissement de $${ABCD}$.\n\nL'échelle d'agrandissement est $${k.format()}$.\n\nOn sait que ${AB.nameAndValue}.\n\nCalculer l'aire de $${EFGH}$ de deux manières.\n\n${graph}`\n exercice.texteCorr = name`$${EF}=${k.format()}\\times ${AB}$.\n\n$${EF}=${k.format()}\\times ${AB.format()}$\n\n$${EF}=${EF.format()}$\n\nL'aire d'un carré est le carré de la longueur de son côté.\n\n$${EF}^2=${toTex(`${EF.toFixed}^2`)}=${toTex(`${EF.pow(2).toFixed}`)}$\n\nL'aire du carré est donc $${AireEFGH.format()}$\n`\n break\n }\n case 41: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=41,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView(0, 0, 7, 5)\n const ABCD = graphic.addRectangle()\n const [A, B, C, D] = ABCD.vertices\n const angles = graphic.addAnglesPolygon(A, B, C, D)\n const AB = graphic.addSegment(A, B)\n AB.direct = graphic.addAngle(A, B, C).direct\n const BC = graphic.addSegment(B, C)\n BC.direct = AB.direct\n const CD = graphic.addSegment(C, D)\n const DA = graphic.addSegment(D, A)\n const variables = aleaVariables({\n a: this.sup2 !== 1,\n c: this.sup2 !== 1,\n x: this.sup2 !== 1,\n AB: (10 * graphic.distance(A, B)).toFixed(0),\n BC: (10 * graphic.distance(B, C)).toFixed(0),\n b: 'AB-a*x',\n d: 'BC-c*x',\n p: '2*(a*x+b+c*x+d)',\n test: 'a*x+b>0 and c*x+d>0'\n })\n delete variables.x\n const exprAB = toString(assignVariables('a*x+b', variables))\n const exprBC = toString(assignVariables('c*x+d', variables))\n AB.text = context.isHtml ? `${exprAB}`.replaceAll('*', '') : `$${exprAB}$`.replaceAll('*', '')\n BC.text = context.isHtml ? `${exprBC}`.replaceAll('*', '') : `$${exprBC}$`.replaceAll('*', '')\n const p = variables.p\n const graph = graphic.getFigure(ABCD, AB, BC, ...angles.map(x => { x.right = true; return x }))\n const resolution = resoudre(`${p}=2*(${exprAB}) + 2*(${exprBC})`, { suppr1: false, substeps: this.correctionDetaillee })\n const calculAB = calculer('a*(x)+b'.replace('x', resolution.solution.exact), { name: AB.name, suppr1: false, substeps: this.correctionDetaillee, variables })\n const calculBC = calculer('c*(x)+d'.replace('x', resolution.solution.exact), { name: BC.name, suppr1: false, substeps: this.correctionDetaillee, variables })\n const calculAire = calculer(`${calculAB.result}*${calculBC.result}`, { name: '\\\\mathcal{A}', suppr1: false, substeps: this.correctionDetaillee, variables })\n let solutionDecimale = math.fraction(calculAire.result.replaceAll(' ', '')).valueOf()\n const environ = solutionDecimale === math.round(solutionDecimale, 2) ? '' : 'environ'\n solutionDecimale = math.round(solutionDecimale, 2).toString()\n exercice.texte = name`$${ABCD}$ est un rectangle.\n\n$x$ est un nombre tel que $ {${AB}=${toTex(exprAB)}}$ et $ {${BC}=${toTex(exprBC)}}$ en $cm$.\n\nLe périmètre de $${ABCD}$ mesure $${p}~cm$.\n\nDéterminer son aire en $cm^2$.\n\n${graph}`\n exercice.texteCorr = name`$${ABCD}$ est un rectangle donc ses côtés opposés sont de la même longueur.\n\nD'où $${AB}=${CD}$ et $${BC}=${DA}$.\n\nAinsi, $${toTex(name`${p} = 2*${AB} + 2*${BC}`)}$.\n\nOu encore $${toTex(`${p} = 2*(${exprAB}) + 2*(${exprBC})`)}$.\n\n$\\textbf{Résolvons cette équation d'inconnue $x$}$.\n\n${resolution.texteCorr}\n\n$\\textbf{Calculons $${AB}$ en cm.}$\n\n${calculAB.texteCorr}\n\n$\\textbf{Calculons $${BC}$ en cm.}$\n\n${calculBC.texteCorr}\n\n$\\textbf{Calculons l'aire $\\mathcal{A}$ de $${ABCD}$ en $cm^2$.}$\n\n${calculAire.texteCorr}\n\nDonc l'aire du rectangle $${ABCD}$ est ${environ} $${toTex(solutionDecimale)}~cm^2$.`\n break\n }\n case 42: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=42,n=1&serie=hZya&v=ex&z=1\n const graphic = new GVGraphicView(0, 0, 7, 5)\n const ABCD = graphic.addRectangle()\n const [A, B, C, D] = ABCD.vertices\n const angles = graphic.addAnglesPolygon(A, B, C, D)\n const AB = graphic.addSegment(A, B)\n AB.direct = graphic.addAngle(A, B, C).direct\n const BC = graphic.addSegment(B, C)\n const CD = graphic.addSegment(C, D)\n CD.direct = AB.direct\n const DA = graphic.addSegment(D, A)\n const variables = aleaVariables({\n c: this.sup2 !== 1,\n x: this.sup2 !== 1,\n a: this.sup2 !== 1,\n AB: (10 * graphic.distance(A, B)).toFixed(0),\n BC: (10 * graphic.distance(B, C)).toFixed(0),\n b: 'AB-a*x',\n d: 'AB-c*x',\n p: '2*(AB+BC)',\n test: 'a!=c and a*x+b>0'\n })\n delete variables.x\n const exprAB = toString(assignVariables('a*x+b', variables))\n const exprCD = toString(assignVariables('c*x+d', variables))\n AB.text = context.isHtml ? `${exprAB}`.replaceAll('*', '') : `$${exprAB}$`.replaceAll('*', '')\n CD.text = context.isHtml ? `${exprCD}`.replaceAll('*', '') : `$${exprCD}$`.replaceAll('*', '')\n const p = variables.p\n const graph = graphic.getFigure(ABCD, AB, CD, ...angles.map(x => { x.right = true; return x }))\n const resolution = resoudre(`${exprAB}=${exprCD}`, { suppr1: false, substeps: this.correctionDetaillee })\n const calculAB = calculer('a*(x)+b'.replace('x', resolution.solution.exact), { name: AB.name, suppr1: false, substeps: this.correctionDetaillee, variables })\n const resolution2 = resoudre(name`${p} = 2*${calculAB.result} + 2*${BC}`, { suppr1: false, substeps: this.correctionDetaillee })\n const calculAire = calculer(`${calculAB.result}*${resolution2.solution.exact}`, { name: '\\\\mathcal{A}', suppr1: false, substeps: this.correctionDetaillee, variables })\n let solutionDecimale = math.fraction(calculAire.result.replaceAll(' ', '')).valueOf()\n const environ = solutionDecimale === math.round(solutionDecimale, 2) ? '' : 'environ'\n solutionDecimale = math.round(solutionDecimale, 2).toString()\n exercice.texte = name`$${ABCD}$ est un rectangle.\n\n$x$ est un nombre tel que $ {${AB}=${toTex(exprAB)}}$ et $ {${CD}=${toTex(exprCD)}}$ en $cm$.\n\nLe périmètre de $${ABCD}$ mesure $${p}~cm$.\n\nDéterminer son aire en $cm^2$.\n\n${graph}`\n exercice.texteCorr = name`$${ABCD}$ est un rectangle donc ses côtés opposés sont de la même longueur.\n\nD'où $${AB}=${CD}$ et $${BC}=${DA}$.\n\nAinsi $${toTex(`${exprAB}=${exprCD}`)}$.\n\n$\\textbf{Résolvons l'équation.}$\n\n${resolution.texteCorr}\n\n$\\textbf{Calculons $${AB}$ en cm}.$\n\n${calculAB.texteCorr}\n\nAinsi, $${toTex(name`${p} = 2* (${calculAB.result}) + 2* ${BC}`)}$.\n\n$\\textbf{Résolvons cette équation d'inconnue $${BC}$}$.\n\n${resolution2.texteCorr}\n\n$\\textbf{Calculons l'aire $\\mathcal{A}$ de $${ABCD}$ en $cm^2$.}$\n\n${calculAire.texteCorr}\n\nDonc l'aire du rectangle $${ABCD}$ est ${environ} $${toTex(solutionDecimale)}~cm^2$.`\n break\n }\n case 43: {\n // http://localhost:8090/mathalea.html?ex=betaThales,s=43,s2=3,s3=1,n=1,cd=1&serie=dA7c&v=ex&z=1\n const graphic = new GVGraphicView(-5, -5, 5, 5)\n this.consigne = 'Donner les coordonnées de tous les points.'\n graphic.clipVisible = false\n graphic.allowResize = false\n graphic.showLabelPoint = true\n graphic.limit = 100\n graphic.addGrid()\n graphic.addAxes()\n let A, B, C, D, E\n do {\n [A, B, C, D, E] = graphic.addPoint(5, 0.5)\n } while (A.x * A.y * B.x * B.y * C.x * C.y === 0 || D.x === D.y || E.x === -E.y)\n let C1, D1, E1\n const [A1] = graphic.addSymetric(new GVLine(new GVPoint(0, 0), new GVVector(1, 0)), A)\n const [B1] = graphic.addSymetric(new GVPoint(0, 0), B)\n if (this.sup2 > 2) {\n [C1] = graphic.addHomothetic(new GVPoint(0, 0), 0.5, C)\n } else {\n [C1] = graphic.addSymetric(new GVLine(new GVPoint(0, 0), new GVVector(0, 1)), C)\n }\n if (this.sup2 > 2) {\n [D1] = graphic.addRotate(new GVPoint(0, 0), Math.PI / 2, D)\n } else {\n [D1] = graphic.addSymetric(new GVLine(new GVPoint(0, 0), new GVVector(1, 1)), D)\n }\n if (this.sup2 > 1) {\n [E1] = graphic.addTranslate(B.sub(A).getVector(), E)\n } else {\n [E1] = graphic.addSymetric(new GVLine(new GVPoint(0, 0), new GVVector(-1, 1)), E)\n }\n [A1, B1, C1, D1, E1].forEach((P, i) => { P.name = [A, B, C, D, E][i].name + '\\''; P.showDot(); P.showName() })\n const graph = graphic.getFigure(A, B, C, D, E)\n const graph2 = graphic.getFigure(A, B, C, D, E, A1, B1, C1, D1, E1)\n const donnees = []\n donnees.push([name`$${A1}$ est le symétrique de $${A}$ par rapport à l'axe des abscisses.`, name`$${A}${A.coordinates.format()}$ et $${A1}${A1.coordinates.format()}$.`])\n donnees.push([name`$${B1}$ est le symétrique de $${B}$ par rapport à l'origine du repère.`, name`$${B}${B.coordinates.format()}$ et $${B1}${B1.coordinates.format()}$.`])\n if (this.sup2 > 2) {\n donnees.push([name`$${C1}$ est l'image de $${C}$ par l'homothétie de centre l'origine du repère et de rapport $\\dfrac{1}{2}$.`, name`$${C}${C.coordinates.format()}$ et $${C1}${C1.coordinates.format()}$.`])\n } else {\n donnees.push([name`$${C1}$ est le symétrique de $${C}$ par rapport à l'axe des ordonnées.`, name`$${C}${C.coordinates.format()}$ et $${C1}${C1.coordinates.format()}$.`])\n }\n if (this.sup2 > 2) {\n donnees.push([name`$${D1}$ est l'image de $${D}$ par la rotation de centre l'origine du repère et d'angle $90\\degree$ dans le sens direct (anti-horaire).`, name`$${D}${D.coordinates.format()}$ et $${D1}${D1.coordinates.format()}$.`])\n } else {\n donnees.push([name`$${D1}$ est le symétrique de $${D}$ par rapport à la droite passant par l'origine et par le point de coordonnées $(1{;}1)$.`, name`$${D}${D.coordinates.format()}$ et $${D1}${D1.coordinates.format()}$.`])\n }\n if (this.sup2 > 1) {\n donnees.push([name`$${E1}$ est l'image de $${E}$ par la translation qui emmène $${A}$ sur $${B}$.`, name`$${E}${E.coordinates.format()}$ et $${E1}${E1.coordinates.format()}$.`])\n } else {\n donnees.push([name`$${E1}$ est le symétrique de $${E}$ par rapport à la droite passant par l'origine et par le point de coordonnées $(-1{;}1)$.`, name`$${E}${E.coordinates.format()}$ et $${E1}${E1.coordinates.format()}$.`])\n }\n const donneesMelangees = aleaName(donnees)\n exercice.texte = `${donneesMelangees.map(x => { return '$\\\\bullet~$ ' + x[0] }).join('<br>')}<br>${graph}`\n exercice.texteCorr = `${donneesMelangees.map(x => { return '$\\\\bullet~$ ' + x[1] }).join('<br>')}<br>${graph2}`\n break\n }\n }\n // Les lignes ci-dessous permettent d'avoir un affichage aux dimensions optimisées\n if (this.questionJamaisPosee(i, i)) {\n this.listeQuestions.push(exercice.texte.replaceAll('\\n\\n', '<br>'))\n this.listeCorrections.push(exercice.texteCorr.replaceAll('\\n\\n', '<br>').replaceAll('$$', '$\\\\hspace{0.5cm}'))\n i++\n }\n cpt++\n }\n listeQuestionsToContenu(this) // On envoie l'exercice à la fonction de mise en page\n }\n}\n"],"names":["GVAleaThalesConfig","GVGraphicView","k","__publicField","O","A","B","M","dOB","dAB","vO","GVVector","vA","vB","vM","vOA","vOB","vOM","direct","cross","dMN","N","aleaNames","aleaName","x","i","args","nbCase","math","create","all","context","toTex2","a","toTex","titre","dateDePublication","ExercicesThales","Exercice","formulaire","numeroExercice","dDebug","nquestion","exercice","cpt","graphic","points","C","d","parallels","D","dAC","dBD","d2","l","graph","E","F","G","ABCD","EFGH","name","AB","GVGrandeur","texte","signk","OA","OB","OM","ON","AM","p","aire","parse","unit","dAM","dBN","MN","aleaDonnees","unite","texteCorr","l1","l2","l3","nbRectangles","names","rectangles","sommets","n","angle","polygons","H","I","triangle3","triangle1","triangle2","P","unite1","unite2","BN","texteDonnees","consigne","texteIntro","texteCorrIntro","phrasesCorr","rectanglesPossibles","aleaRectangle","y","z","colorToLatexOrHTML","cotesRectangles","GVSegment","sommetsRectangles","GVPoint","angleSolution","circularPermutation","rectangleImagePossibles","rectangleImage","remarque","triangle","angles","aA","aB","aC","ABC","DEF","BC","CA","DE","EF","FD","hfill","resoudre","AC","EG","AB2","FG","EF2","AireEFGH","CD","DA","variables","aleaVariables","exprAB","toString","assignVariables","exprBC","resolution","calculAB","calculer","calculBC","calculAire","solutionDecimale","environ","exprCD","resolution2","C1","D1","E1","A1","GVLine","B1","graph2","donnees","donneesMelangees","listeQuestionsToContenu"],"mappings":"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"}