File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/6G13-MlDOGMLq.js.map
{"version":3,"file":"6G13-MlDOGMLq.js","sources":["../../src/exercices/6e/6G13.js"],"sourcesContent":["import { codageAngleDroit } from '../../lib/2d/angles.js'\nimport { cercle } from '../../lib/2d/cercle.js'\nimport { afficheLongueurSegment, texteSurSegment } from '../../lib/2d/codages.js'\nimport { droite, droiteParPointEtPerpendiculaire } from '../../lib/2d/droites.js'\nimport {\n milieu,\n point,\n pointAdistance,\n pointIntersectionCC,\n pointIntersectionLC,\n tracePoint\n} from '../../lib/2d/points.js'\nimport { polygone, polygoneRegulier } from '../../lib/2d/polygones.js'\nimport { segment } from '../../lib/2d/segmentsVecteurs.js'\nimport { labelPoint } from '../../lib/2d/textes.js'\nimport { combinaisonListes } from '../../lib/outils/arrayOutils'\nimport { texteEnCouleur } from '../../lib/outils/embellissements'\nimport { creerNomDePolygone } from '../../lib/outils/outilString.js'\nimport { stringNombre, texNombre } from '../../lib/outils/texNombre'\nimport Exercice from '../Exercice'\nimport { mathalea2d, vide2d } from '../../modules/2dGeneralites.js'\nimport { listeQuestionsToContenu, randint } from '../../modules/outils.js'\nimport Alea2iep from '../../modules/Alea2iep.js'\nexport const titre = 'Draw squares and rectangles of given lengths'\n\nexport const dateDePublication = '10/09/2022'\n\n/**\n * Simple construction de rectangles et de carrés dont les longueur des côtés sont données avec pour autocorrection une vérification des mesures des diagonales.\n * @author Guillaume Valmont\n*/\nexport const uuid = '2203a'\nexport const ref = '6G13'\nexport default class TracerQuadrilatèresParticuliers extends Exercice {\n constructor () {\n super()\n this.nbQuestions = 4\n this.besoinFormulaireNumerique = ['Figure to trace', 11, '1: Square\\n2: Rectangle\\n3: Square (one diagonal)\\n4: Rectangle (one diagonal)\\n5: Rhombus (one side and one diagonal)\\n6: Rhombus (2 diagonals)\\n7: Parallelogram\\n8: Blend Square - Rectangle\\n9: Mix Square - Rectangle - Rhombus\\n10: Mix Rhombus - Parallelogram\\n11: Mix all figures']\n this.sup = 8\n }\n\n nouvelleVersion (numeroExercice) {\n this.listeQuestions = []\n this.listeCorrections = []\n this.autoCorrection = []\n\n let typesDeQuestionsDisponibles = ['Square', 'Rectangle']\n if (this.sup === 1) typesDeQuestionsDisponibles = ['Square']\n else if (this.sup === 2) typesDeQuestionsDisponibles = ['Rectangle']\n else if (this.sup === 3) typesDeQuestionsDisponibles = ['Square1diag']\n else if (this.sup === 4) typesDeQuestionsDisponibles = ['Rectangle1diag']\n else if (this.sup === 5) typesDeQuestionsDisponibles = ['Diamond']\n else if (this.sup === 6) typesDeQuestionsDisponibles = ['Diamond2diag']\n else if (this.sup === 7) typesDeQuestionsDisponibles = ['Parallelogram']\n else if (this.sup === 8) typesDeQuestionsDisponibles = ['Square', 'Rectangle']\n else if (this.sup === 9) typesDeQuestionsDisponibles = ['Square', 'Rectangle', 'Square1diag', 'Rectangle1diag']\n else if (this.sup === 10) typesDeQuestionsDisponibles = ['Diamond', 'Diamond2diag', 'Parallelogram']\n else typesDeQuestionsDisponibles = ['Square', 'Rectangle', 'Square1diag', 'Rectangle1diag', 'Diamond', 'Diamond2diag', 'Parallelogram']\n\n const listeTypeDeQuestions = combinaisonListes(typesDeQuestionsDisponibles, this.nbQuestions)\n for (let i = 0, texte, texteCorr, cpt = 0; i < this.nbQuestions && cpt < 50;) {\n const objetsCorrection = []\n const nomPoly = creerNomDePolygone(4)\n const A = point(0, 0, nomPoly.charAt(0), 'below left')\n let B, C, D, naturePoly, figure\n switch (listeTypeDeQuestions[i]) {\n case 'Square': {\n naturePoly = 'square'\n let ok = false; let disSave = [0, 0, 1000]; const old = []; let dis\n for (let jj = 0; jj < 20 && !ok; jj++) {\n const cote = randint(20, 50, old) * 2 // paire seulement!\n old.push(cote / 2)\n const diagonale = cote / Math.sqrt(2)\n const m = diagonale * 0.1 - Math.floor(diagonale /* * 0.1 * 10 */) * 0.1\n dis = [diagonale, cote, m]\n if (dis[2] < 0.005) {\n disSave = dis\n ok = true\n break\n } else {\n if (dis[2] < disSave[2]) {\n disSave = dis\n }\n }\n }\n B = point(disSave[1] / 10, 0, nomPoly.charAt(1), 'below right')\n figure = polygoneRegulier(A, B, 4)\n C = point(figure.listePoints[2].x, figure.listePoints[2].y, nomPoly.charAt(2), 'above right')\n D = point(figure.listePoints[3].x, figure.listePoints[3].y, nomPoly.charAt(3), 'above left')\n break\n }\n\n case 'Square1diag': {\n naturePoly = 'square'\n let ok = false; let disSave = [0, 0, 1000]; const old = []; let dis\n for (let jj = 0; jj < 20 && !ok; jj++) {\n const diagonale = randint(25, 50, old) * 2 // paire seulement!\n old.push(diagonale / 2)\n const cote = diagonale / Math.sqrt(2)\n const m = cote * 0.1 - Math.floor(cote /* * 0.1 * 10 */) * 0.1\n dis = [diagonale, cote, m]\n // console.log('Square1diag:j' + dd + ':dis:' + dis[0].toFixed(2) + ':' + dis[1].toFixed(2) + ':dis' + dis [2].toFixed(4))\n if (dis[2] < 0.005) {\n disSave = dis\n ok = true\n // console.log('FOUND:Square1diag:' + dd + ':dis:' + dis[0].toFixed(2) + ':' + dis[1].toFixed(2) + ':dis' + dis[2].toFixed(4))\n break\n } else {\n if (dis[2] < disSave[2]) {\n disSave = dis\n }\n }\n }\n B = point(disSave[1] / 10, 0, nomPoly.charAt(1), 'below right')\n figure = polygoneRegulier(A, B, 4)\n C = point(figure.listePoints[2].x, figure.listePoints[2].y, nomPoly.charAt(2), 'above right')\n D = point(figure.listePoints[3].x, figure.listePoints[3].y, nomPoly.charAt(3), 'above left')\n break\n }\n\n case 'Rectangle': {\n naturePoly = 'rectangle'\n let ok = false; let disSave = [0, 0, 0, 1000]; const old = []; let dis\n for (let jj = 0; jj < 20 && !ok; jj++) {\n const lAB = randint(22, 45, old) * 2 // paire seulement!\n old.push(lAB / 2)\n for (let kk = 0; kk < 20 && !ok; kk++) {\n const lBC = randint(35, 60, lAB)\n const lAC = Math.sqrt(lBC * lBC + lAB * lAB)\n dis = [lAB, lBC, lAC, lAC * 0.1 - Math.floor(lAC /** 0.1 * 10 */) * 0.1]\n // console.log('Rectangle: j' + jj + 'k' + kk + ':dis:' + dis[0].toFixed(2) + ':' + dis[1].toFixed(2) + ':' + dis[2].toFixed(2) + ':dis:' + dis[3].toFixed(4))\n if (dis[3] < 0.005) {\n disSave = dis\n ok = true\n // console.log('FOUND:Rectangle: j' + dd + 'k' + kk + ':dis:' + dis[0].toFixed(2) + ':' + dis[1].toFixed(2 ) + ':' + dis[2].toFixed(2) + ':dis:' + dis[3].toFixed(4))\n break\n } else {\n if (dis[3] < disSave[3]) {\n disSave = dis\n }\n }\n }\n }\n B = point(disSave[0] / 10, 0, nomPoly.charAt(1), 'below right')\n C = pointAdistance(B, disSave[1] / 10, 90, nomPoly.charAt(2))\n D = pointAdistance(C, disSave[0] / 10, 180, nomPoly.charAt(3))\n figure = polygone(A, B, C, D)\n break\n }\n\n case 'Rectangle1diag': {\n naturePoly = 'rectangle'\n let ok = false; let disSave = [0, 0, 0, 1000]; const old = []; let dis\n for (let jj = 0; jj < 20 && !ok; jj++) {\n const lAB = randint(22, 45, old) * 2 // paire seulement!\n old.push(lAB / 2)\n for (let kk = 0; kk < 20 && !ok; kk++) {\n const lBC = randint(lAB + 5, 100)\n const lAC = Math.sqrt(lBC * lBC - lAB * lAB)\n dis = [lAB, lBC, lAC, lAC * 0.1 - Math.floor(lAC /** 0.1 * 10 */) * 0.1]\n // console.log('Rectangle1diag:j' + jj + 'k' + kk + ':dis:' + dis[0].toFixed(2) + ':' + dis[1].toFixed(2) + ':' + dis[2].toFixed(2) + ':dis:' + dis[3].toFixed(4))\n if (dis[3] < 0.005) {\n disSave = dis\n ok = true\n // console.log('FOUND:Rectangle1diag:j' + dd + 'k' + kk + ':dis:' + dis[0].toFixed(2) + ':' + dis[1].toFixed(2 ) + ':' + dis[2].toFixed(2) + ':dis:' + dis[3].toFixed(4))\n break\n } else {\n if (dis[3] < disSave[3]) {\n disSave = dis\n }\n }\n }\n }\n\n const diagonale = disSave[1] / 10\n B = point(disSave[0] / 10, 0, nomPoly.charAt(1), 'below right')\n\n C = pointIntersectionLC(droiteParPointEtPerpendiculaire(B, droite(A, B)), cercle(A, diagonale), nomPoly[2], 1)\n C.positionLabel = 'above right'\n\n D = pointIntersectionLC(droiteParPointEtPerpendiculaire(A, droite(A, B)), cercle(B, diagonale), nomPoly[3], 1)\n D.positionLabel = 'above left'\n figure = polygone(A, B, C, D)\n break\n }\n\n case 'Diamond': {\n naturePoly = 'diamond'\n // isosceles triangle given by two lengths and auto-correction\n let ok = false; let disSave = [0, 0, 0, 1000]; const old = []; let dis\n for (let jj = 0; jj < 20 && !ok; jj++) {\n const base = randint(20, 50, old) * 2 // paire seulement!\n old.push(base / 2)\n for (let kk = 0; kk < 20 && !ok; kk++) {\n const cote = randint(base / 2 + 20, 80, base)\n const diagonale2 = 2 * Math.sqrt(cote * cote * 0.01 / 2 + cote * cote * 0.01 / 2 - base * base * 0.01 / 4)\n dis = [base, cote, cote, diagonale2 - Math.floor(diagonale2 * 10) * 0.1]\n if (dis[3] < 0.005) {\n disSave = dis\n ok = true\n break\n } else {\n if (dis[3] < disSave[3]) {\n disSave = dis\n }\n }\n }\n }\n const diagonale = disSave[0] / 10\n const cote = disSave[1] / 10\n C = pointAdistance(A, diagonale, randint(-10, 10), nomPoly[2])\n C.positionLabel = 'right'\n const cA = cercle(A, cote)\n const cB = cercle(C, cote)\n B = pointIntersectionCC(cA, cB, nomPoly[1], 2)\n B.positionLabel = 'below'\n D = pointIntersectionCC(cA, cB, nomPoly[3], 1)\n D.positionLabel = 'above'\n figure = polygone(A, B, C, D)\n break\n }\n case 'Diamond2diag' : {\n naturePoly = 'diamond'\n // right triangle with two lengths and self-correction\n let ok = false; let disSave = [0, 0, 0, 1000]; const old = []; let dis\n for (let jj = 0; jj < 10 & !ok; jj++) {\n const lAB = randint(15, 30, old) * 2\n old.push(lAB)\n for (let kk = 0; kk < 20 && !ok; kk++) {\n const lAC = randint(15, 30, lAB) * 2\n const lBC = Math.sqrt(lAC * lAC + lAB * lAB)\n dis = [lAB, lBC, lAC, lAC * 0.1 - Math.floor(lAC /* 0.1 * 10 */) * 0.1]\n if (dis[3] < 0.005) {\n disSave = dis\n ok = true\n break\n } else {\n if (dis[3] < disSave[3]) {\n disSave = dis\n }\n }\n }\n }\n const diagonale1 = 2 * disSave[0] / 10\n const diagonale2 = 2 * disSave[2] / 10\n C = pointAdistance(A, diagonale1, randint(-10, 10), nomPoly[2])\n C.positionLabel = 'right'\n B = pointIntersectionLC(droiteParPointEtPerpendiculaire(milieu(A, C), droite(A, C)), cercle(milieu(A, C), diagonale2 / 2), nomPoly[1], 2)\n B.positionLabel = 'below'\n D = pointIntersectionLC(droiteParPointEtPerpendiculaire(milieu(A, C), droite(A, C)), cercle(milieu(A, C), diagonale2 / 2), nomPoly[3], 1)\n D.positionLabel = 'above'\n figure = polygone(A, B, C, D)\n break\n }\n case 'Parallelogram' : {\n naturePoly = 'parallelogram'\n // any triangle given by three lengths and auto-correction\n const lAB = randint(25, 45) * 2 // paire seulement!\n let ok = false; let disSave = [0, 0, 0, 1000]; const old = []; let dis\n old.push(lAB)\n for (let kk = 0; kk < 10 && !ok; kk++) {\n const lBC = randint(30, 80, old)\n old.push(lBC)\n for (let jj = 0; jj < 30 && !ok; jj++) {\n const lAC = randint(Math.max(Math.abs(lAB - lBC) + 20, 30), Math.min(lAB + lBC - 20, 150))\n const m = Math.sqrt(lAC * lAC * 0.01 / 2 + lBC * lBC * 0.01 / 2 - lAB * lAB * 0.01 / 4)\n dis = [lAB, lBC, lAC, m - Math.floor(m * 10) * 0.1]\n if (dis[3] < 0.005) {\n disSave = dis\n // console.log('i:' + i + ':kk:' + kk + ':dd:' + dd + ':d:' + m + 'dmin:' + dis[3])\n // console.log('OK i:' + i + ':kk:' + kk + ':dd:' + dd + ':a:' + lBC + ':b:' + lAC + ':c: ' + lAB)\n ok = true\n break\n } else {\n if (dis[3] < disSave[3]) {\n // console.log('i:' + i + ':kk:' + kk + ':dd:' + dd + ':d:' + m + 'dmin:' + dis[3])\n // console.log('i:' + i + ':kk:' + kk + ':dd:' + jj + ':a:' + lBC + ':b:' + lAC + ':c:' + lAB)\n disSave = dis\n }\n }\n }\n }\n const diagonale1 = disSave[0] / 10\n const cote1 = disSave[1] / 10\n const cote2 = disSave[2] / 10\n C = pointAdistance(A, diagonale1, randint(-10, 10), nomPoly[2])\n C.positionLabel = 'right'\n D = pointIntersectionCC(cercle(A, cote1), cercle(C, cote2), nomPoly[3], 1)\n D.positionLabel = 'above'\n B = pointIntersectionCC(cercle(A, cote2), cercle(C, cote1), nomPoly[1], 2)\n B.positionLabel = 'below'\n figure = polygone(A, B, C, D)\n break\n }\n }\n const aA = listeTypeDeQuestions[i] === 'Square' || listeTypeDeQuestions[i] === 'Rectangle' ? codageAngleDroit(B, A, D, 'red', 0.7, 1, 0.6, 'red', 0.2) : vide2d()\n const aB = listeTypeDeQuestions[i] === 'Square' || listeTypeDeQuestions[i] === 'Rectangle' ? codageAngleDroit(A, B, C, 'red', 0.7, 1, 0.6, 'red', 0.2) : vide2d()\n const aC = listeTypeDeQuestions[i] === 'Square' || listeTypeDeQuestions[i] === 'Rectangle' ? codageAngleDroit(B, C, D, 'red', 0.7, 1, 0.6, 'red', 0.2) : vide2d()\n const aD = listeTypeDeQuestions[i] === 'Square' || listeTypeDeQuestions[i] === 'Rectangle' ? codageAngleDroit(C, D, A, 'red', 0.7, 1, 0.6, 'red', 0.2) : vide2d()\n const aE = listeTypeDeQuestions[i] === 'Diamond2diag' || listeTypeDeQuestions[i] === 'Square1diag' ? codageAngleDroit(C, milieu(A, C), D, 'red', 0.7, 1, 0.6, 'red', 0.2) : vide2d()\n const segmentAC = segment(A, C, 'blue')\n const segmentBC = segment(B, D, 'blue')\n const traces2 = tracePoint(A, B, C, D)\n const labels2 = labelPoint(A, B, C, D)\n figure.epaisseur = 2\n objetsCorrection.push(traces2, labels2, figure, aA, aB, aC, aD, aE, segmentAC, segmentBC)\n if (listeTypeDeQuestions[i] === 'Rectangle' || listeTypeDeQuestions[i] === 'Square') {\n objetsCorrection.push(afficheLongueurSegment(B, A), afficheLongueurSegment(C, B), afficheLongueurSegment(D, C), afficheLongueurSegment(A, D))\n const txt = texteSurSegment(`${A.nom}${C.nom}≃${stringNombre(segment(A, C).longueur, 2)} cm`, milieu(A, C), C, 'blue')\n txt.mathOn = false\n txt.scale = 1.2\n objetsCorrection.push(txt)\n } else if (listeTypeDeQuestions[i] === 'Square1diag') {\n const txt = texteSurSegment(`${A.nom}${C.nom}=${stringNombre(segment(A, C).longueur, 1)} cm`, milieu(A, C), C)\n txt.mathOn = false\n const txt2 = texteSurSegment(`${B.nom}${D.nom}=${stringNombre(segment(B, D).longueur, 1)} cm`, milieu(B, D), D)\n txt2.mathOn = false\n const txt3 = texteSurSegment(`${D.nom}${C.nom}≃${stringNombre(segment(D, C).longueur, 2)} cm`, D, C, 'blue')\n txt3.mathOn = false\n txt3.scale = 1.2\n objetsCorrection.push(txt, txt2, txt3)\n } else if (listeTypeDeQuestions[i] === 'Rectangle1diag') {\n objetsCorrection.push(afficheLongueurSegment(B, A))\n const txt = texteSurSegment(`${A.nom}${C.nom}=${stringNombre(segment(A, C).longueur, 1)} cm`, milieu(A, C), C)\n txt.mathOn = false\n const txt3 = texteSurSegment(`${B.nom}${C.nom}≃${stringNombre(segment(B, C).longueur, 2)} cm`, C, B, 'blue')\n txt3.mathOn = false\n txt3.scale = 1.2\n objetsCorrection.push(txt, txt3)\n } else if (listeTypeDeQuestions[i] === 'Diamond') {\n objetsCorrection.push(afficheLongueurSegment(B, A), afficheLongueurSegment(C, B), afficheLongueurSegment(D, C), afficheLongueurSegment(A, D))\n const txt = texteSurSegment(`${A.nom}${C.nom}=${stringNombre(segment(A, C).longueur, 1)} cm`, milieu(A, C), C)\n txt.mathOn = false\n const txt2 = texteSurSegment(`${B.nom}${D.nom}≃${stringNombre(segment(B, D).longueur, 2)} cm`, milieu(B, D), D, 'blue')\n txt2.mathOn = false\n txt2.scale = 1.2\n objetsCorrection.push(txt, txt2)\n } else if (listeTypeDeQuestions[i] === 'Diamond2diag') {\n const txt = texteSurSegment(`${A.nom}${C.nom}=${stringNombre(segment(A, C).longueur, 1)} cm`, milieu(A, C), C)\n txt.mathOn = false\n const txt2 = texteSurSegment(`${B.nom}${D.nom}=${stringNombre(segment(B, D).longueur, 1)} cm`, milieu(B, D), D)\n txt2.mathOn = false\n const txt3 = texteSurSegment(`${D.nom}${C.nom}≃${stringNombre(segment(D, C).longueur, 2)} cm`, D, C, 'blue')\n txt3.mathOn = false\n txt3.scale = 1.2\n objetsCorrection.push(txt, txt2, txt3)\n } else if (listeTypeDeQuestions[i] === 'Parallelogram') {\n const txt = texteSurSegment(`${A.nom}${C.nom}=${stringNombre(segment(A, C).longueur, 1)} cm`, milieu(A, C), C)\n txt.mathOn = false\n const txt2 = texteSurSegment(`${B.nom}${D.nom}≃${stringNombre(segment(B, D).longueur, 2)} cm`, milieu(A, C), B, 'blue')\n txt2.mathOn = false\n txt2.scale = 1.2\n objetsCorrection.push(txt, afficheLongueurSegment(A, D), afficheLongueurSegment(D, C), txt2)\n }\n\n const anim = new Alea2iep()\n if (listeTypeDeQuestions[i] === 'Rectangle' || listeTypeDeQuestions[i] === 'Square') {\n anim.recadre(-segment(A, B).longueur, segment(B, C).longueur) // Déplace l'origine du repère (à mettre en premier obligatoirement)\n anim.pointCreer(A, { dx: -0.5, dy: -0.5, label: nomPoly.charAt(0) }) // On déplace les labels des points avec dx et dy\n anim.regleMontrer(A)\n anim.regleSegment(A, B)\n anim.pointCreer(B, { dx: 0.2, dy: -0.5, label: nomPoly.charAt(1) })\n anim.regleMasquer()\n anim.equerreMontrer(B)\n anim.equerreRotation(90)\n anim.crayonMontrer(B)\n anim.tracer(pointAdistance(B, segment(B, C).longueur + 2, 90))\n anim.equerreMasquer()\n anim.codageAngleDroit(A, B, C)\n anim.regleMontrer()\n anim.regleDeplacer(B)\n anim.regleRotation(90)\n anim.crayonMontrer()\n anim.crayonDeplacer(C)\n anim.pointCreer(C, { dx: 0.2, dy: 0.8, label: nomPoly.charAt(2), tempo: 10 })\n anim.crayonMasquer()\n anim.regleMasquer()\n anim.equerreRotation(90)\n anim.equerreMontrer(C)\n anim.crayonMontrer()\n anim.tracer(pointAdistance(C, segment(C, D).longueur + 2, -180))\n anim.codageAngleDroit(B, C, D)\n anim.equerreMasquer()\n anim.regleDeplacer(C)\n anim.regleMontrer()\n anim.regleRotation(180)\n anim.crayonDeplacer(D)\n anim.pointCreer(D, { dx: -0.5, dy: 0.8, label: nomPoly.charAt(3) })\n anim.regleSegment(D, A)\n anim.regleMasquer()\n anim.crayonMasquer()\n } else if (listeTypeDeQuestions[i] === 'Rectangle1diag') {\n anim.recadre(-segment(A, B).longueur, segment(B, C).longueur) // Déplace l'origine du repère (à mettre en premier obligatoirement)\n anim.pointCreer(A, { dx: -0.5, dy: -0.5, label: nomPoly.charAt(0) }) // On déplace les labels des points avec dx et dy\n anim.regleMontrer(A)\n anim.regleSegment(A, B)\n anim.pointCreer(B, { dx: 0.2, dy: -0.5, label: nomPoly.charAt(1) })\n anim.regleMasquer()\n\n anim.equerreMontrer(B)\n anim.equerreRotation(90)\n anim.crayonMontrer(B)\n anim.tracer(pointAdistance(B, segment(B, C).longueur + 2, 90))\n anim.equerreMasquer()\n anim.codageAngleDroit(A, B, C)\n\n anim.compasMontrer(A)\n anim.compasEcarterAvecRegle(segment(A, C).longueur)\n anim.regleMasquer()\n anim.compasTracerArcCentrePoint(A, C, 40)\n anim.compasMasquer()\n\n anim.crayonMontrer(C)\n anim.pointCreer(C, { dx: 0.2, dy: +0.5, label: nomPoly.charAt(2) })\n\n anim.equerreMontrer(C)\n anim.equerreRotation(90)\n anim.crayonMontrer(C)\n anim.tracer(pointAdistance(C, segment(A, C).longueur + 2, 180))\n anim.equerreMasquer()\n\n anim.compasMontrer(C)\n anim.compasEcarterAvecRegle(segment(A, B).longueur)\n anim.regleMasquer()\n anim.compasTracerArcCentrePoint(C, D, 40)\n anim.compasMasquer()\n anim.codageAngleDroit(B, C, D)\n\n anim.crayonMontrer(D)\n anim.pointCreer(D, { dx: -0.2, dy: +0.5, label: nomPoly.charAt(3) })\n anim.regleSegment(A, D)\n anim.regleMasquer()\n anim.crayonMasquer()\n anim.textePoint(`${nomPoly.charAt(1)}${nomPoly.charAt(2)} ≃ ${stringNombre(segment(B, C).longueur, 3, true)} cm`, milieu(B, C))\n } else if (listeTypeDeQuestions[i] === 'Diamond' || listeTypeDeQuestions[i] === 'Parallelogram') {\n anim.recadre(-segment(A, B).longueur, segment(B, D).longueur / 2) // Déplace l'origine du repère (à mettre en premier obligatoirement)\n anim.pointCreer(A, { dx: -0.5, dy: -0.5, label: nomPoly.charAt(0) }) // On déplace les labels des points avec dx et dy\n anim.regleMontrer(A)\n anim.regleSegment(A, C)\n anim.pointCreer(C, { dx: 0.2, dy: -0.5, label: nomPoly.charAt(2) })\n\n anim.compasMontrer(A)\n anim.compasEcarterAvecRegle(segment(A, B).longueur)\n anim.regleMasquer()\n anim.compasTracerArcCentrePoint(A, B, 40)\n anim.compasEcarterAvecRegle(segment(C, B).longueur)\n anim.regleMasquer()\n anim.compasTracerArcCentrePoint(C, B, 40)\n anim.compasMasquer()\n\n anim.crayonMontrer()\n anim.pointCreer(B, { dx: 0.2, dy: -0.5, label: nomPoly.charAt(1) })\n anim.regleSegment(A, B)\n anim.regleSegment(C, B)\n anim.crayonMasquer()\n anim.regleMasquer()\n\n anim.compasMontrer(A)\n anim.compasEcarterAvecRegle(segment(A, D).longueur)\n anim.regleMasquer()\n anim.compasTracerArcCentrePoint(A, D, 40)\n\n anim.compasMontrer(C)\n anim.compasEcarterAvecRegle(segment(C, D).longueur)\n anim.regleMasquer()\n anim.compasTracerArcCentrePoint(C, D, 40)\n anim.compasMasquer()\n\n anim.crayonMontrer()\n anim.pointCreer(D, { dx: 0.2, dy: +0.5, label: nomPoly.charAt(3) })\n anim.regleSegment(A, D)\n anim.regleSegment(C, D)\n anim.crayonMasquer()\n anim.regleMasquer()\n\n anim.regleSegment(B, D)\n anim.regleMasquer()\n anim.textePoint(`${nomPoly.charAt(1)}${nomPoly.charAt(3)} ≃ ${stringNombre(segment(B, D).longueur, 3, true)} cm`, milieu(B, D))\n } else if (listeTypeDeQuestions[i] === 'Diamond2diag' || listeTypeDeQuestions[i] === 'Square1diag') {\n anim.recadre(-segment(A, B).longueur, segment(B, D).longueur) // Déplace l'origine du repère (à mettre en premier obligatoirement)\n anim.pointCreer(A, { dx: -0.5, dy: -0.5, label: nomPoly.charAt(0) }) // On déplace les labels des points avec dx et dy\n anim.regleMontrer(A)\n anim.regleSegment(A, C)\n anim.pointCreer(C, { dx: 0.2, dy: -0.5, label: nomPoly.charAt(2) })\n\n anim.regleMontrer(A)\n anim.regleRotation(segment(A, C).angleAvecHorizontale)\n anim.crayonMontrer(milieu(A, C))\n anim.pointCreer(milieu(A, C))\n anim.regleMasquer()\n\n anim.equerreMontrer(milieu(A, C))\n anim.equerreRotation(segment(A, C).angleAvecHorizontale)\n anim.crayonMontrer(milieu(A, C))\n anim.tracer(pointAdistance(milieu(A, C), segment(B, D).longueur / 2 + 2, segment(A, C).angleAvecHorizontale + 90))\n anim.equerreMasquer()\n\n anim.regleMontrer()\n anim.regleSegment(pointAdistance(milieu(A, C), segment(B, D).longueur / 2 + 2, segment(A, C).angleAvecHorizontale + 270), pointAdistance(milieu(A, C), segment(B, D).longueur / 2 + 2, segment(A, C).angleAvecHorizontale + 90))\n anim.regleMasquer()\n\n anim.crayonMontrer(milieu(A, C))\n anim.codageAngleDroit(C, milieu(A, C), D)\n\n anim.regleMontrer(milieu(A, C))\n anim.regleRotation(segment(A, C).angleAvecHorizontale + 90)\n anim.crayonMontrer(D)\n anim.pointCreer(D, { dx: 0.2, dy: +0.5, label: nomPoly.charAt(3) })\n\n anim.regleDeplacer(milieu(A, C))\n anim.regleRotation(segment(A, C).angleAvecHorizontale + 90 + 180)\n anim.crayonMontrer(B)\n anim.pointCreer(B, { dx: 0.2, dy: -0.5, label: nomPoly.charAt(1) })\n\n anim.regleDeplacer(A)\n anim.regleSegment(A, B)\n anim.regleDeplacer(B)\n anim.regleSegment(B, C)\n anim.regleDeplacer(D)\n anim.regleSegment(D, C)\n anim.regleDeplacer(A)\n anim.regleSegment(A, D)\n anim.regleMasquer()\n anim.crayonMasquer()\n\n anim.textePoint(`${nomPoly.charAt(3)}${nomPoly.charAt(2)} ≃ ${stringNombre(segment(A, B).longueur, 3, true)} cm`, milieu(D, C))\n }\n\n texte = `Construct the ${naturePoly} $${nomPoly}$`\n if (listeTypeDeQuestions[i] === 'Rectangle' || listeTypeDeQuestions[i] === 'Square') texte += ` with $${A.nom + B.nom} = ${texNombre(segment(A, B).longueur, 2)}~\\\\text{cm}$`\n if (listeTypeDeQuestions[i] === 'Rectangle') texte += ` and $${B.nom + C.nom} = ${texNombre(segment(B, C).longueur, 2)}~\\\\text{cm}$`\n if (listeTypeDeQuestions[i] === 'Diamond') texte += ` with $${A.nom + B.nom} = ${texNombre(segment(A, B).longueur, 2)}~\\\\text{cm}$ and $${A.nom + C.nom} = ${texNombre(segment(A, C).longueur, 2)}~\\\\text{cm}$`\n if (listeTypeDeQuestions[i] === 'Diamond2diag') texte += ` with $${A.nom + C.nom} = ${texNombre(segment(A, C).longueur, 2)}~\\\\text{cm}$ and $${B.nom + D.nom} = ${texNombre(segment(B, D).longueur, 2)}~\\\\text{cm}$`\n if (listeTypeDeQuestions[i] === 'Square1diag') texte += ` with $${A.nom + C.nom} = ${texNombre(segment(A, C).longueur, 2)}~\\\\text{cm}$`\n if (listeTypeDeQuestions[i] === 'Rectangle1diag') texte += ` with $${A.nom + B.nom} = ${texNombre(segment(A, B).longueur, 2)}~\\\\text{cm}$ and $${A.nom + C.nom} = ${texNombre(segment(A, C).longueur, 2)}~\\\\text{cm}$`\n if (listeTypeDeQuestions[i] === 'Parallelogram') texte += ` with $${A.nom + C.nom} = ${texNombre(segment(A, C).longueur, 2)}~\\\\text{cm}$, $${A.nom + D.nom} = ${texNombre(segment(A, D).longueur, 2)}~\\\\text{cm}$ and $${D.nom + C.nom} = ${texNombre(segment(D, C).longueur, 2)}~\\\\text{cm}$`\n texte += '.'\n // The lines below allow you to have a display with optimized dimensions\n const xmin = Math.min(A.x, B.x, C.x, D.x) - 2\n const xmax = Math.max(A.x, B.x, C.x, D.x) + 2\n const ymin = Math.min(A.y, B.y, C.y, D.y) - 2\n const ymax = Math.max(A.y, B.y, C.y, D.y) + 2\n // Mathalea2d window parameters for normal statement\n const paramsCorrection = { xmin, ymin, xmax, ymax, pixelsParCm: 20, scale: 1 }\n // We add to the text of the correction, the figure of the correction\n texteCorr = mathalea2d(paramsCorrection, objetsCorrection)\n if (listeTypeDeQuestions[i] === 'Rectangle' || listeTypeDeQuestions[i] === 'Square') texteCorr += `<br><br>${texteEnCouleur(`For self-correction, we can check that $[${A.nom + C.nom}]$ and $[${B.nom + D.nom}]$ both measure $${texNombre(segment(A, C).longueur, 2, true)}~\\\\text{cm}$`)}.<br>`\n if (listeTypeDeQuestions[i] === 'Diamond') texteCorr += `<br><br>${texteEnCouleur(`For self-correction, we can check that $[${B.nom + D.nom}]$ measures approximately $${texNombre(segment(B, D).longueur, 2, true)}~\\\\text{cm}$`)}.<br>`\n if (listeTypeDeQuestions[i] === 'Diamond2diag' || listeTypeDeQuestions[i] === 'Square1diag') texteCorr += `<br><br>${texteEnCouleur(`For self-correction, one can check that all sides of the ${naturePoly} measures approximately $${texNombre(segment(A, B).longueur, 2, true)}~\\\\text{cm}$`)}.<br>`\n if (listeTypeDeQuestions[i] === 'Rectangle1diag') texteCorr += `<br><br>${texteEnCouleur(`For self-correction, we can check that $[${B.nom + C.nom}]$ measures approximately $${texNombre(segment(B, C).longueur, 2, true)}~\\\\text{cm}$`)}.<br>`\n if (listeTypeDeQuestions[i] === 'Parallelogram') texteCorr += `<br><br>${texteEnCouleur(`For self-correction, we can check that $[${B.nom + D.nom}]$ measures approximately $${texNombre(segment(B, D).longueur, 2, true)}~\\\\text{cm}$`)}.<br>`\n texteCorr += anim.htmlBouton(numeroExercice, i)\n\n // If the question has never been asked, we save it\n if (this.questionJamaisPosee(i, segment(A, B).longueur, segment(B, C).longueur)) { // <- laisser le i et ajouter toutes les variables qui rendent les exercices différents (par exemple a, b, c et d)\n // In this exercise, we do not use a, b, c and d but A, B, C and D so replace them!\n this.listeQuestions.push(texte)\n this.listeCorrections.push(texteCorr)\n i++\n }\n cpt++\n }\n listeQuestionsToContenu(this)\n }\n}\n"],"names":["titre","dateDePublication","uuid","ref","TracerQuadrilatèresParticuliers","Exercice","numeroExercice","typesDeQuestionsDisponibles","listeTypeDeQuestions","combinaisonListes","texte","texteCorr","cpt","objetsCorrection","nomPoly","creerNomDePolygone","A","point","B","C","D","naturePoly","figure","ok","disSave","old","dis","jj","cote","randint","diagonale","m","polygoneRegulier","lAB","kk","lBC","lAC","pointAdistance","polygone","pointIntersectionLC","droiteParPointEtPerpendiculaire","droite","cercle","base","diagonale2","cA","cB","pointIntersectionCC","diagonale1","milieu","cote1","cote2","aA","codageAngleDroit","vide2d","aB","aC","aD","aE","segmentAC","segment","segmentBC","traces2","tracePoint","labels2","labelPoint","afficheLongueurSegment","txt","texteSurSegment","stringNombre","txt2","txt3","anim","Alea2iep","texNombre","xmin","xmax","ymin","ymax","mathalea2d","texteEnCouleur","listeQuestionsToContenu"],"mappings":"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"}