File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/5G12-pAKHMViJ.js.map
{"version":3,"file":"5G12-pAKHMViJ.js","sources":["../../src/exercices/5e/5G12.js"],"sourcesContent":["import { codageMilieu } from '../../lib/2d/codages.js'\nimport { tracePoint } from '../../lib/2d/points.js'\nimport { segment, vecteur } from '../../lib/2d/segmentsVecteurs.js'\nimport { labelPoint, texteParPosition } from '../../lib/2d/textes.js'\nimport { rotation, translation } from '../../lib/2d/transformations.js'\nimport { choice, shuffle } from '../../lib/outils/arrayOutils'\nimport { texcolors } from '../../lib/format/style'\nimport { nombreAvecEspace } from '../../lib/outils/texNombre.js'\nimport Exercice from '../Exercice.js'\nimport { colorToLatexOrHTML, mathalea2d } from '../../modules/2dGeneralites.js'\nimport { context } from '../../modules/context.js'\nimport { egal, listeQuestionsToContenu, randint } from '../../modules/outils.js'\nimport { rotationAnimee } from '../../modules/2dAnimation.js'\nimport { pavage } from '../../modules/Pavage.js'\nimport { ajouteChampTexteMathLive } from '../../lib/interactif/questionMathLive.js'\nimport { setReponse } from '../../lib/interactif/gestionInteractif.js'\nimport { miseEnEvidence } from '../../lib/outils/embellissements'\n\nexport const titre = 'Finding the image of a figure by central symmetry in a tiling'\nexport const interactifReady = true\nexport const interactifType = 'mathLive'\nexport const dateDeModifImportante = '23/07/2023'\n\n/**\n * Publié le 14/12/2020\n * Trouver l'image par symétrie centrale d'une figure dans un pavage\n * Version Latex & Html grâce à Mathalea2d\n * @author Jean-Claude Lhote\n * Ref 5G12\n */\nexport const uuid = '76ea9'\nexport const ref = '5G12'\nexport default function PavageEtDemiTour2D () {\n Exercice.call(this) // Héritage de la classe Exercice()\n this.titre = titre\n this.consigne = ''\n this.nbQuestions = 3\n this.nbQuestionsModifiable = true\n this.correctionDetailleeDisponible = true\n this.correctionDetaillee = true\n this.nbCols = 1\n this.nbColsCorr = 1\n this.sup = 1 // 1 pour des pavages modestes, 2 pour des plus grand.\n this.sup2 = false // On cache les barycentres par défaut.\n this.sup3 = 7\n context.isHtml ? (this.spacingCorr = 2.5) : (this.spacingCorr = 1.5)\n this.nouvelleVersion = function () {\n this.sup = Number(this.sup)\n this.sup3 = Number(this.sup3)\n const videcouples = function (tableau) {\n for (let k = 0; k < tableau.length; k++) {\n for (let j = k + 1; j < tableau.length; j++) {\n if (tableau[k][1] === tableau[j][0]) {\n tableau.splice(j, 1)\n }\n }\n }\n return tableau\n }\n const videIdentite = function (tableau) {\n for (let k = 0; k < tableau.length; k++) {\n if (tableau[k][1] === tableau[k][0]) {\n tableau.splice(k, 1)\n }\n }\n return tableau\n }\n const compare2polys = function (poly1, poly2) {\n if (comparenbsommets(poly1, poly2)) {\n if (comparesommets(poly1, poly2)) {\n return true\n } else {\n return false\n }\n } else {\n return false\n }\n }\n const comparenbsommets = function (poly1, poly2) {\n if (poly1.listePoints.length === poly2.listePoints.length) {\n return true\n } else return false\n }\n\n const compare2sommets = function (sommet1, sommet2) {\n if (egal(sommet1.x, sommet2.x, 0.1) && egal(sommet1.y, sommet2.y, 0.1)) {\n return true\n } else return false\n }\n const comparesommets = function (poly1, poly2) {\n let trouve = false\n let trouves = 0\n if (comparenbsommets(poly1, poly2)) {\n for (const P of poly1.listePoints) {\n for (const M of poly2.listePoints) {\n if (compare2sommets(M, P)) {\n trouve = true\n }\n if (trouve) break\n }\n if (trouve) {\n trouves++\n trouve = false\n } else {\n trouves -= 100\n }\n if (trouves < 0) {\n break\n }\n }\n }\n if (trouves === poly1.listePoints.length) {\n return true\n } else return false\n }\n\n const demitour = function (pavage, A, numero) { // retourne le numero du polygone symétrique ou -1 si il n'existe pas\n const poly = pavage.polygones[numero - 1]\n let pol\n const result = -1\n const sympoly = rotation(poly, A, 180)\n for (let k = 0; k < pavage.polygones.length; k++) {\n pol = pavage.polygones[k]\n if (compare2polys(sympoly, pol)) {\n return k + 1\n }\n }\n return result\n }\n\n const objets = []\n const objetsCorrection = []\n let P1\n let P2\n let P3\n let G1\n let G2\n let t\n const codes = ['/', '//', '///', 'o', 'w', 'X', 'U', '*']\n let taillePavage = this.sup\n if (taillePavage < 1 || taillePavage > 2) {\n taillePavage = 1\n }\n if (this.nbQuestions > 5) {\n taillePavage = 2\n }\n this.listeCorrections = []\n this.listeQuestions = []\n this.autoCorrection = []\n let Nx\n let Ny\n let index1\n let A\n let B\n let d\n let image\n let couples = []\n let tailles = []\n let monpavage\n let fenetre\n let texte = ''\n let texteCorr = ''\n let typeDePavage = this.sup\n let nombreTentatives\n let nombrePavageTestes = 1\n if (this.sup3 === 8) {\n typeDePavage = randint(1, 7)\n } else {\n typeDePavage = this.sup3\n }\n while (couples.length < this.nbQuestions && nombrePavageTestes < 6) {\n nombreTentatives = 0\n monpavage = pavage() // On crée l'Tile object that goes s'appeler monpavage\n tailles = [[[3, 2], [3, 2], [2, 2], [2, 2], [2, 2], [2, 2], [3, 2]], [[4, 3], [4, 3], [3, 3], [3, 3], [3, 3], [3, 2], [5, 3]]]\n Nx = tailles[taillePavage - 1][typeDePavage - 1][0]\n Ny = tailles[taillePavage - 1][typeDePavage - 1][1]\n monpavage.construit(typeDePavage, Nx, Ny, 3) // On initialise toutes les propriétés de l'objet.\n fenetre = monpavage.fenetre\n context.fenetreMathalea2d = [fenetre.xmin, fenetre.ymin, fenetre.xmax, fenetre.ymax]\n while (couples.length < this.nbQuestions + 2 && nombreTentatives < 3) { // On cherche d pour avoir suffisamment de couples\n couples = [] // On vide la liste des couples pour une nouvelle recherche\n\n index1 = randint(Math.floor(monpavage.nb_polygones / 3), Math.ceil(monpavage.nb_polygones * 2 / 3)) // On choisit 1 point dans un des polygones\n if (choice([true, false])) {\n A = monpavage.polygones[index1].listePoints[randint(0, monpavage.polygones[index1].listePoints.length - 1)] // On choisit un sommet\n } else {\n A = monpavage.barycentres[index1] // Ou on choisit un barycentre\n }\n while (A.x - 5 < fenetre.xmin || A.x + 5 > fenetre.xmax || A.y - 5 < fenetre.ymin || A.y + 5 > fenetre.ymax) {\n index1 = randint(Math.floor(monpavage.nb_polygones / 3), Math.ceil(monpavage.nb_polygones * 2 / 3)) // On choisit 1 point dans un des polygones\n if (choice([true, false])) {\n A = monpavage.polygones[index1].listePoints[randint(0, monpavage.polygones[index1].listePoints.length - 1)] // On choisit un sommet\n } else {\n A = monpavage.barycentres[index1] // Ou on choisit un barycentre\n }\n }\n A.nom = 'A'\n A.positionLabel = 'above left'\n d = tracePoint(A, 'red') // la trace du centre de symétrie sera rouge et grosse\n B = labelPoint(A)\n d.epaisseur = 3\n d.taille = 4\n for (let i = 1; i <= monpavage.nb_polygones; i++) { // on crée une liste des couples (antécédents, images)\n image = demitour(monpavage, A, i)\n if (image !== -1) { // si l'image du polygone i existe, on ajoute le couple à la liste\n couples.push([i, image])\n }\n }\n couples = videcouples(couples) // supprime tous les couples en double (x,y)=(y,x)\n couples = videIdentite(couples) // supprime tous les couples (x,x)\n nombreTentatives++\n }\n if (couples.length < this.nbQuestions) {\n if (this.sup3 === 7) {\n typeDePavage = (typeDePavage + 1) % 5 + 1\n }\n nombrePavageTestes++\n }\n }\n if (couples.length < this.nbQuestions) {\n console.log('too many questions, increase the tiling size')\n return\n }\n\n objets.push(d) // le centre est OK on pousse sa trace\n objets.push(B) // et son label\n couples = shuffle(couples) // on mélange les couples\n for (let i = 0; i < monpavage.nb_polygones; i++) {\n objets.push(texteParPosition(nombreAvecEspace(i + 1), monpavage.barycentres[i].x + 0.5, monpavage.barycentres[i].y, 'medium', 'gray', 1, 0, true))\n }\n if (this.sup2) { // Doit-on montrer les centres des figures ?\n for (let i = 0; i < monpavage.nb_polygones; i++) {\n objets.push(monpavage.tracesCentres[i])\n }\n }\n for (let i = 0; i < monpavage.nb_polygones; i++) { // il faut afficher tous les polygones du pavage\n objets.push(monpavage.polygones[i])\n }\n texte = mathalea2d(fenetre, objets) // monpavage.fenetre est calibrée pour faire entrer le pavage dans une feuille A4\n texte += '<br>'\n for (let i = 0; i < this.nbQuestions; i++) {\n texte += `Give the number of the image of the figure $${couples[i][0]}$ in the symmetry of center $A$.`\n setReponse(this, i, couples[i][1])\n texte += ajouteChampTexteMathLive(this, i, 'inline width72') + '<br>'\n texteCorr += `The image of the figure $${couples[i][0]}$ in the symmetry with center $A$ is the figure $${miseEnEvidence(couples[i][1])}$.<br>`\n if (this.correctionDetaillee) {\n t = this.nbQuestions * 3\n G1 = monpavage.barycentres[couples[i][0] - 1]\n G2 = monpavage.barycentres[couples[i][1] - 1]\n P1 = translation(monpavage.polygones[couples[i][0] - 1], vecteur(0, 0)) // il faut créer un nouvel objet sinon on pointe vers le polygone du pavage qui est transparent !\n P1.color = colorToLatexOrHTML(texcolors(i))\n P1.couleurDeRemplissage = colorToLatexOrHTML(texcolors(i))\n P1.opaciteDeRemplissage = 0.5\n P1.epaisseur = 2\n P2 = translation(monpavage.polygones[couples[i][1] - 1], vecteur(0, 0))\n P2.color = colorToLatexOrHTML(texcolors(i))\n P2.couleurDeRemplissage = colorToLatexOrHTML(texcolors(i))\n P2.opaciteDeRemplissage = 0.5\n P2.epaisseur = 2\n P3 = rotationAnimee(P1, A, 180, `begin=\"${i * 3}s;${i * 3 + t}s;${i * 3 + t * 2}s\" end=\"${i * 3 + 2}s;${i * 3 + t + 2}s;${i * 3 + t * 2 + 2}s\" dur=\"2s\" repeatCount=\"indefinite\" repeatDur=\"${9 * this.nbQuestions}s\" id=\"poly-${i}-anim\"`)\n P3.color = colorToLatexOrHTML(texcolors(i))\n P3.epaisseur = 2\n objetsCorrection.push(tracePoint(G1, G2), segment(G1, G2, texcolors(i)), codageMilieu(G1, G2, texcolors(i), codes[i], false), P1, P2)\n if (context.isHtml) objetsCorrection.push(P3)\n }\n }\n if (this.correctionDetaillee) {\n texteCorr += mathalea2d(fenetre, objets, objetsCorrection)\n }\n this.listeQuestions.push(texte)\n this.listeCorrections.push(texteCorr)\n listeQuestionsToContenu(this)\n }\n this.besoinFormulaireNumerique = ['Size of the tiling (the large one is automatic beyond 5 questions)', 2, ' 1: Modest size\\n2: Large size']\n this.besoinFormulaire2CaseACocher = ['Show centers']\n this.besoinFormulaire3Numerique = ['Choice of paving', 8, '1: Equilateral triangles\\n2: Squares\\n3: Regular hexagons\\n4: Squares and equilateral triangles\\n5: Octagons and squares\\n 6: Rhombuses (school hexagonal tiling)\\n7: Hexagons and equilateral triangles\\n8: One of seven random tilings']\n}\n"],"names":["titre","interactifReady","interactifType","dateDeModifImportante","uuid","ref","PavageEtDemiTour2D","Exercice","context","videcouples","tableau","k","j","videIdentite","compare2polys","poly1","poly2","comparenbsommets","comparesommets","compare2sommets","sommet1","sommet2","egal","trouve","trouves","P","M","demitour","pavage","A","numero","poly","pol","result","sympoly","rotation","objets","objetsCorrection","P1","P2","P3","G1","G2","t","codes","taillePavage","Nx","Ny","index1","B","d","image","couples","tailles","monpavage","fenetre","texte","texteCorr","typeDePavage","nombreTentatives","nombrePavageTestes","randint","choice","tracePoint","labelPoint","i","shuffle","texteParPosition","nombreAvecEspace","mathalea2d","setReponse","ajouteChampTexteMathLive","miseEnEvidence","translation","vecteur","colorToLatexOrHTML","texcolors","rotationAnimee","segment","codageMilieu","listeQuestionsToContenu"],"mappings":"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"}