exercices/2e/2G12-4.js

import Exercice from '../Exercice.js'
import { mathalea2d } from '../../modules/2dGeneralites.js'
import { axes, point, polygoneAvecNom, repere } from '../../modules/2d.js'
import { extraireRacineCarree, listeQuestionsToContenu, randint, choice, combinaisonListes, ecritureParentheseSiNegatif, fractionSimplifiee, texNombre } from '../../modules/outils.js'
export const titre = 'Déterminer la nature d\'un polygone'

/**
 * 2G12
 * @author Stéphane Guyon
 */
export const uuid = 'd633a'
export const ref = '2G12-4'
export default function NaturePolygone () {
  Exercice.call(this) // Héritage de la classe Exercice()
  this.titre = titre
  this.nbQuestions = 2
  this.nbCols = 2
  this.nbColsCorr = 2
  // this.sup = 1 ; //
  this.nouvelleVersion = function () {
    this.listeQuestions = [] // Liste de questions
    this.listeCorrections = [] // Liste de questions corrigées
    const typesDeQuestionsDisponibles = [1]; let typesDeQuestions
    let objets
    let A, B, C, D, P, XMIN, XMAX, YMIN, YMAX

    const listeTypeDeQuestions = combinaisonListes(typesDeQuestionsDisponibles, this.nbQuestions)
    for (let i = 0, a, facteur, radical, ux, uy, xA, yA, xB, yB, xC, yC, xD, yD, AB, XAB, YAB, XAC, YAC, XBC, YBC, AC, BC, XAD, YAD, AD, xI0, xI1, yI0, yI1, xJ0, xJ1, yJ0, yJ1, texte, texteCorr, cpt = 0; i < this.nbQuestions && cpt < 50;) {
      objets = []
      typesDeQuestions = listeTypeDeQuestions[i]
      switch (typesDeQuestions) {
        // Cas par cas, on définit le type de nombres que l'on souhaite
        // Combien de chiffres ? Quelles valeurs ?

        case 1: // Triangle isocèle ou équilatéral

          xA = randint(0, 5) * choice([-1, 1])
          yA = randint(0, 5) * choice([-1, 1])
          ux = randint(1, 5) * choice([-1, 1])
          uy = randint(1, 5) * choice([-1, 1])
          while (ux === uy || ux === -uy) { // ajout d'une condition pour éviter des points alignés (Jean-claude Lhote)
            uy = randint(1, 5) * choice([-1, 1])
          }// empêcher ux=uy pour éviter B=C
          xB = xA + ux

          yB = yA + uy

          xC = xA + uy
          yC = yA + ux
          xD = 0 // pour ne pas bloquer le recadrage du repère
          yD = 0
          XAB = (xB - xA) * (xB - xA)
          YAB = (yB - yA) * (yB - yA)
          AB = XAB + YAB
          XAC = (xC - xA) * (xC - xA)
          YAC = (yC - yA) * (yC - yA)
          XBC = (xC - xB) * (xC - xB)
          YBC = (yC - yB) * (yC - yB)
          AC = XAC + YAC
          texte = 'Dans un repère orthonormé $(O,I,J)$, on donne les points suivants :'
          texte += ` $A\\left(${xA};${yA}\\right)$ ; $B\\left(${xB};${yB}\\right)$ et $C\\left(${xC};${yC}\\right)$`
          texte += '<br>Déterminer la nature du triangle $ABC$ '

          texteCorr = 'A partir du repère, on a envie de prouver que$ABC$ est un triangle isocèle en $A$.'
          texteCorr += '<br> On calcule donc séparément les distances $AB$ et $AC$ '
          texteCorr += '<br>On sait d\'après le cours, que si $A(x_A;y_A)$ et $B(x_B;y_B)$ sont deux points d\'un repère orthonormé,'
          texteCorr += ' alors on a : $AB=\\sqrt{\\left(x_B-x_A\\right)^{2}+\\left(y_B-y_A\\right)^{2}}$<br>'
          texteCorr += `On applique la relation à l'énoncé : $AB=\\sqrt{\\left(${xB}-${ecritureParentheseSiNegatif(xA)}\\right)^{2}+\\left(${yB}-${ecritureParentheseSiNegatif(yA)}\\right)^{2}}$<br>`
          texteCorr += `$\\phantom{On applique la relation a l'enonce :        } AB=\\sqrt{${XAB}+${YAB}}$<br>`
          texteCorr += `$\\phantom{On applique la relation a l'enonce :        } AB=\\sqrt{${texNombre(XAB + YAB)}}$<br>`
          facteur = extraireRacineCarree(AB)[0]
          radical = extraireRacineCarree(AB)[1]
          if (radical !== 1) {
            if (facteur !== 1) {
              texteCorr += `$\\phantom{On applique la relation a l'enonce :   } AB=${facteur}\\sqrt{${radical}}$<br>`
            }
          } else {
            texteCorr += `$\\phantom{On applique la relation a l'enonce :   } AB=${facteur}$<br>`
          }

          texteCorr += `De même : $AC=\\sqrt{\\left(${xC}-${ecritureParentheseSiNegatif(xA)}\\right)^{2}+\\left(${yC}-${ecritureParentheseSiNegatif(yA)}\\right)^{2}}$<br>`
          texteCorr += `$\\phantom{De meme :       } AC=\\sqrt{${XAC}+${YAC}}$<br>`
          texteCorr += `$\\phantom{De meme :       } AC=\\sqrt{${texNombre(XAC + YAC)}}$<br>`
          facteur = extraireRacineCarree(AC)[0]
          radical = extraireRacineCarree(AC)[1]
          if (radical !== 1) {
            if (facteur !== 1) {
              texteCorr += `$\\phantom{On applique la relation a l'enonce :   } AB=${facteur}\\sqrt{${radical}}$<br>`
            }
          } else {
            texteCorr += `$\\phantom{On applique la relation a l'enonce :   } AB=${facteur}$<br>`
          }
          texteCorr += 'On observe que $AC=AB$ donc le triangle $ABC$ est isocèle.'
          texteCorr += '<br>On calcule $BC$ pour vérifier s\'il est ou non  équilatéral.'
          texteCorr += `<br>On obtient : $BC=\\sqrt{${XBC}+${YBC}}=\\sqrt{${texNombre(XBC + YBC)}}$<br>`
          if (XBC + YBC === XAB + YAB) { texteCorr += 'Le triangle $ABC$ est équilatéral.' } else { texteCorr += 'Le triangle $ABC$ est simplement isocèle, il n\'est pas équilatéral.' }

          ;
          A = point(xA, yA, 'A')
          B = point(xB, yB, 'B')
          C = point(xC, yC, 'C')
          P = polygoneAvecNom(A, B, C)
          objets.push(P[0], P[1])
          break
        case 2: // ABC isocèle triangle rectangle

          xA = randint(0, 5) * choice([-1, 1])
          yA = randint(0, 5) * choice([-1, 1])
          ux = randint(1, 5) * choice([-1, 1])
          uy = randint(1, 5) * choice([-1, 1])
          xB = xA + ux
          yB = yA + uy
          xC = xA - uy
          yC = yA + ux
          XAB = (xB - xA) * (xB - xA)
          YAB = (yB - yA) * (yB - yA)
          AB = XAB + YAB
          XAC = (xC - xA) * (xC - xA)
          YAC = (yC - yA) * (yC - yA)
          XBC = (xC - xB) * (xC - xB)
          YBC = (yC - yB) * (yC - yB)
          AC = XAC + YAC
          texte = 'Dans un repère orthonormé $(O,I,J)$, on donne les points suivants :'
          texte += ` $A\\left(${xA};${yA}\\right)$ ; $B\\left(${xB};${yB}\\right)$ et $C\\left(${xC};${yC}\\right)$`
          texte += '<br>Déterminer la nature du triangle $ABC$ '

          texteCorr = 'A partir du repère, on a envie de prouver que$ABC$ est un triangle rectangle en $A$.'
          texteCorr += '<br> Pour vérifier que le triangle est rectabgle, on va utiliser la réciproque du théorème de Pythagore.'
          texteCorr += '<br> On calcule donc séparément les distances $AB^{2}$ ; $AC^{2}$ et $BC^{2}$ pour vérifier si $BC^{2}=AB^{2}+AC^{2}$ .'
          texteCorr += '<br>On sait d\'après le cours, que si $A(x_A;y_A)$ et $B(x_B;y_B)$ sont deux points d\'un repère orthonormé,'
          texteCorr += ' alors on a : $AB^{2}=\\left(x_B-x_A\\right)^{2}+\\left(y_B-y_A\\right)^{2}$<br>'
          texteCorr += `On applique la relation à l'énoncé : $AB^{2}=\\left(${xB}-${ecritureParentheseSiNegatif(xA)}\\right)^{2}+\\left(${yB}-${ecritureParentheseSiNegatif(yA)}\\right)^{2}$<br>`
          texteCorr += `$\\phantom{On applique la relation a l'enonce :        } AB^{2}={${XAB}+${YAB}}$<br>`
          texteCorr += `$\\phantom{On applique la relation a l'enonce :        } AB^{2}={${texNombre(XAB + YAB)}}$<br>`

          texteCorr += `De même : $AC^{2}={\\left(${xC}-${ecritureParentheseSiNegatif(xA)}\\right)^{2}+\\left(${yC}-${ecritureParentheseSiNegatif(yA)}\\right)^{2}}$<br>`
          texteCorr += `$\\phantom{De meme :       } AC^{2}={${XAC}+${YAC}}$<br>`
          texteCorr += `$\\phantom{De meme :       } AC^{2}={${texNombre(XAC + YAC)}}$<br>`

          texteCorr += `Enfin : $BC^{2}={\\left(${xB}-${ecritureParentheseSiNegatif(xB)}\\right)^{2}+\\left(${yC}-${ecritureParentheseSiNegatif(yB)}\\right)^{2}}$<br>`
          texteCorr += `$\\phantom{De meme :       } BC^{2}={${XBC}+${YBC}}$<br>`
          texteCorr += `$\\phantom{De meme :       } BC^{2}={${texNombre(XBC + YBC)}}$<br>`
          texteCorr += `On observe que $AC^{2}+AB^{2}=${texNombre(XAC + YAC + XAB + YAB)} ~~et~~ BC^{2}={${texNombre(XBC + YBC)}}$.`
          texteCorr += '<br>On en déduit que $BC^{2}=AC^{2}+AB^{2}$.'
          texteCorr += '<br>D\'après la réciproque du théorème de Pythagore,  le triangle ABC est rectangle en A.'
          if (XAB + YAB === XAC + YAC) { texteCorr += '<br>On observe en plus que AB=AC. <br> Le triangle ABC est donc isocèle rectangle en A.' }
          A = point(xA, yA, 'A')
          B = point(xB, yB, 'B')
          C = point(xC, yC, 'C')
          P = polygoneAvecNom(A, B, C)
          objets.push(P[0], P[1])
          break
        case 3: // Dq ABDC losange
          xA = randint(0, 9) * choice([-1, 1])
          yA = randint(0, 9) * choice([-1, 1])
          ux = randint(1, 5)
          uy = randint(1, 5, ux) * choice([-1, 1])
          ux *= choice([-1, 1])
          xB = xA + ux
          yB = yA + uy
          xC = xB - uy
          yC = yB - ux
          xD = xC - ux
          yD = yC - uy
          xI0 = fractionSimplifiee(xA + xC, 2)[0]
          xI1 = fractionSimplifiee(xA + xC, 2)[1]
          yI0 = fractionSimplifiee(yA + yC, 2)[0]
          yI1 = fractionSimplifiee(yA + yC, 2)[1]
          xJ0 = fractionSimplifiee(xB + xD, 2)[0]
          xJ1 = fractionSimplifiee(xB + xD, 2)[1]
          yJ0 = fractionSimplifiee(yB + yD, 2)[0]
          yJ1 = fractionSimplifiee(yB + yD, 2)[1]
          XAB = (xB - xA) * (xB - xA)
          YAB = (yB - yA) * (yB - yA)
          AB = XAB + YAB
          XAD = (xD - xA) * (xD - xA)
          YAD = (yD - yA) * (yD - yA)
          AD = XAD + YAD
          XAC = (xC - xA) * (xC - xA)
          YAC = (yC - yA) * (yC - yA)
          AC = XAC + YAC
          a = axes(-9, -9, 9, 9, 0.2, 1)

          texte = 'Dans un repère orthonormé (O,I,J), on donne les 4 points suivants :<br>'
          texte += ` $A\\left(${xA};${yA}\\right)$ ; $B\\left(${xB};${yB}\\right).$`
          texte += ` $C\\left(${xC};${yC}\\right)$ ; $D\\left(${xD};${yD}\\right).$`
          texte += '<br>Démontrer que $ABCD$ est un losange.'

          texteCorr = '<br>Pour prouver que $ABCD$ est un losange, il y a deux stratégies :<br>'
          texteCorr += '$~~~~~~~~$<B>1.</B> On calcule les quatre longueurs du quadrilatère et on prouve leur égalité.<br>'
          texteCorr += '$\\phantom{~~~~~~~~}$Un quadrilatère qui possède quatre côtés de même longueur est un losange.<br>'
          texteCorr += '$~~~~~~~~$<B>2. </B> On prouve que $ABDC$ est un parallélogramme, puis il sufit de prouver qu\'il possède deux côtés consécutifs de même longueur.<br>'
          texteCorr += '$\\phantom{~~~~~~~~}$ Un parallélogramme qui possède deux côtés consécutifs de même longueur est un losange'
          texteCorr += '<br>Les deux démonstrations se valent. <br>On choisit ici la <B>démonstration n°2</B>, plus variée, mais la n°1 est valable.<br>'
          texteCorr += '<B>Démonstration :</B><br>'
          texteCorr += 'On veut prouver que $ABCD$ est un parallélogramme :'
          texteCorr += '<br>On sait que ABCD est un parallélogramme si et seulement si ses diagonales se coupent en leur milieu.'
          texteCorr += '<br>On cherche donc les coordonnées du milieu de chacune des deux diagonales du quadrilatère, pour prouver qu\'elles sont identiques. :'
          texteCorr += '<br>On sait d\'après le cours, que si $A(x_A;y_A)$ et $C(x_C;y_C)$ sont deux points d\'un repère ,'
          texteCorr += '<br> alors les coordonnées du point $I$ milieu de $[AC]$ sont '
          texteCorr += '$I\\left(\\dfrac{x_A+x_C}{2};\\dfrac{y_A+y_C}{2}\\right)$ <br>'
          texteCorr += 'On applique la relation à l\'énoncé : '
          texteCorr += `$\\begin{cases}x_I=\\dfrac{${xA}+${ecritureParentheseSiNegatif(xC)}}{2} \\\\ y_I=\\dfrac{${yA}+${ecritureParentheseSiNegatif(yC)}}{2}\\end{cases}$`
          texteCorr += `<br>On en déduit :  $\\begin{cases}x_I=\\dfrac{${texNombre(xA + xC)}}{2}\\\\y_I=\\dfrac{${texNombre(yA + yC)}}{2}\\end{cases}$`
          if (xI1 !== 1 && yI1 !== 1) { texteCorr += `  <br>Ce qui donne au final : $ I\\left(\\dfrac{${xI0}}{${xI1}};\\dfrac{${yI0}}{${yI1}};\\right)$` }
          if (xI1 === 1 && yI1 !== 1) { texteCorr += `  <br>Ce qui donne au final : $ I\\left(${xI0};\\dfrac{${yI0}}{${yI1}}\\right)$` }
          if (xI1 !== 1 && yI1 === 1) { texteCorr += `  <br>Ce qui donne au final : $ I\\left(\\dfrac{${xI0}}{${xI1}};${yI0}\\right)$` }
          if (xI1 === 1 && yI1 === 1) { texteCorr += `  <br>Ce qui donne au final : $ I\\left(${xI0};${yI0}\\right)$` }
          texteCorr += '<br> Les coordonnées du point $J$ milieu de $[BC]$ sont '
          texteCorr += '$J\\left(\\dfrac{x_B+x_C}{2};\\dfrac{y_B+y_C}{2}\\right)$ <br>'
          texteCorr += 'On applique la relation à l\'énoncé : '
          texteCorr += `$\\begin{cases}x_J=\\dfrac{${xB}+${ecritureParentheseSiNegatif(xD)}}{2} \\\\ y_J=\\dfrac{${yB}+${ecritureParentheseSiNegatif(yD)}}{2}\\end{cases}$`
          texteCorr += `<br>On en déduit :  $\\begin{cases}x_J=\\dfrac{${texNombre(xB + xD)}}{2}\\\\y_J=\\dfrac{${texNombre(yB + yD)}}{2}\\end{cases}$`
          if (xJ1 !== 1 && yJ1 !== 1) { texteCorr += `  <br>Ce qui donne au final : $ J\\left(\\dfrac{${xJ0}}{${xJ1}};\\dfrac{${yJ0}}{${yJ1}};\\right)$` }
          if (xJ1 === 1 && yJ1 !== 1) { texteCorr += `  <br>Ce qui donne au final : $ J\\left(${xJ0};\\dfrac{${yJ0}}{${yJ1}}\\right)$` }
          if (xJ1 !== 1 && yJ1 === 1) { texteCorr += `  <br>Ce qui donne au final : $ J\\left(\\dfrac{${xJ0}}{${xJ1}};${yJ0}\\right)$` }
          if (xJ1 === 1 && yJ1 === 1) { texteCorr += `  <br>Ce qui donne au final : $ J\\left(${xJ0};${yJ0}\\right)$` }
          texteCorr += '<br>On observe que $I$ et $J$ ont les mêmes coordonnées, donc les deux diagonales du quadrilatère se coupent en leur milieu.'
          texteCorr += '<br>$ABCD$ est donc un parallélogramme.'
          texteCorr += '<br>On calcule maintenant deux cotés consécutifs : $AB$ et $AD$ par exemple.'
          texteCorr += '<br>On sait d\'après le cours, que si $A(x_A;y_A)$ et $B(x_B;y_B)$ sont deux points d\'un repère orthonormé,'
          texteCorr += ' alors on a : $AB=\\sqrt{\\left(x_B-x_A\\right)^{2}+\\left(y_B-y_A\\right)^{2}}.$<br>'
          texteCorr += `On applique la relation à l'énoncé : $AB=\\sqrt{\\left(${xB}-${ecritureParentheseSiNegatif(xA)}\\right)^{2}+\\left(${yB}-${ecritureParentheseSiNegatif(yA)}\\right)^{2}}$<br>`
          texteCorr += `$\\phantom{On applique la relation a l'enonce :        } AB=\\sqrt{${XAB}+${YAB}}$<br>`
          texteCorr += `$\\phantom{On applique la relation a l'enonce :        } AB=\\sqrt{${texNombre(XAB + YAB)}}$<br>`

          facteur = extraireRacineCarree(AB)[0]
          radical = extraireRacineCarree(AB)[1]

          if (radical !== 1) {
            if (facteur !== 1) {
              texteCorr += `$\\phantom{On applique la relation a l'enonce :   } AB=${facteur}\\sqrt{${radical}}$<br>`
            }
          } else {
            texteCorr += `$\\phantom{On applique la relation a l'enonce :   } AB=${facteur}$<br>`
          }

          texteCorr += `On procède de même pour $AD$:<br> $AD=\\sqrt{\\left(${xD}-${ecritureParentheseSiNegatif(xA)}\\right)^{2}+\\left(${yD}-${ecritureParentheseSiNegatif(yA)}\\right)^{2}}$<br>`
          texteCorr += `$\\phantom{On applique la relation a l'enonce :        } AC=\\sqrt{${XAD}+${YAD}}$<br>`
          texteCorr += `$\\phantom{On applique la relation a l'enonce :        } AC=\\sqrt{${texNombre(XAD + YAD)}}$<br>`
          facteur = extraireRacineCarree(AD)[0]
          radical = extraireRacineCarree(AD)[1]
          if (radical !== 1) {
            if (facteur !== 1) {
              texteCorr += `$\\phantom{On applique la relation a l'enonce :   } AD=${facteur}\\sqrt{${radical}}$<br>`
            }
          } else {
            texteCorr += `$\\phantom{On applique la relation a l'enonce :   } AD=\\sqrt{${radical}}$<br>`
          }
          texteCorr += '<br>On observe que $AB=AD$, $ABDC$ est donc bien un losange.'
          A = point(xA, yA, 'A')
          B = point(xB, yB, 'B')
          C = point(xC, yC, 'C')
          D = point(xD, yD, 'D')
          P = polygoneAvecNom(A, B, C, D)
          objets.push(P[0], P[1])

          break
        case 4://  Dq rectangle
          xA = randint(0, 6) * choice([-1, 1])
          yA = randint(0, 6) * choice([-1, 1])
          ux = randint(1, 3) * choice([-1, 1])
          uy = randint(1, 3) * choice([-1, 1])
          a = randint(2, 4)
          xB = xA + ux * a
          yB = yA + uy * a
          xC = xA - uy
          yC = yA + ux
          xD = xC + ux * a
          yD = yC + uy * a

          xI0 = fractionSimplifiee(xA + xD, 2)[0]
          xI1 = fractionSimplifiee(xA + xD, 2)[1]
          yI0 = fractionSimplifiee(yA + yD, 2)[0]
          yI1 = fractionSimplifiee(yA + yD, 2)[1]
          xJ0 = fractionSimplifiee(xB + xC, 2)[0]
          xJ1 = fractionSimplifiee(xB + xC, 2)[1]
          yJ0 = fractionSimplifiee(yB + yC, 2)[0]
          yJ1 = fractionSimplifiee(yB + yC, 2)[1]
          XAB = (xB - xA) * (xB - xA)
          YAB = (yB - yA) * (yB - yA)
          AB = XAB + YAB
          XAC = (xC - xA) * (xC - xA)
          YAC = (yC - yA) * (yC - yA)
          AC = XAC + YAC
          XAD = (xD - xA) * (xD - xA)
          YAD = (yD - yA) * (yD - yA)
          AD = XAD + YAD
          XBC = (xB - xC) * (xB - xC)
          YBC = (yB - yC) * (yB - yC)
          BC = XBC + YBC
          a = axes(-9, -9, 9, 9, 0.2, 1)

          texte = 'Dans un repère orthonormé (O,I,J), on donne les 4 points suivants :<br>'
          texte += ` $A\\left(${xA};${yA}\\right)$ ; $B\\left(${xB};${yB}\\right).$`
          texte += ` $C\\left(${xC};${yC}\\right)$ ; $D\\left(${xD};${yD}\\right).$`
          texte += '<br>Démontrer que $ABDC$ est un rectangle.'

          texteCorr = '<br>Pour prouver que $ABDC$ est un rectangle, il y a pluieurs stratégies :<br>'
          texteCorr += '$~~~~~~~~$<B>1.</B> On prouve avec la réciproque du théorème de Pythagore que $ABDC$ possède un angle droit,<br>'
          texteCorr += '$puis on prouve qu\'il a ses côtés opposés de même longueur.<br>'
          texteCorr += '$~~~~~~~~$<B>2. </B> On prouve que $ABDC$ est un parallélogramme, puis il sufit de prouver que ses diagonales sont de même longueur.<br>'
          texteCorr += '$\\phantom{~~~~~~~~}$ Un parallélogramme qui a ses diagonales de même longueur est un rectangle.'
          texteCorr += '<br>Plusiurs démonstrations se valent. On choisit ici la <B>démonstration n°2</B>, mais d\'autres idées sont valables.<br>'
          texteCorr += '<B>Démonstration :</B><br>'
          texteCorr += 'On veut prouver que $ABDC$ est un parallélogramme :'
          texteCorr += '<br>On sait que $ABDC$ est un parallélogramme si et seulement si ses diagonales se coupent en leur milieu.'
          texteCorr += '<br>On cherche donc les coordonnées du milieu de chacune des deux diagonales du quadrilatère, pour prouver qu\'elles sont identiques. :'
          texteCorr += '<br>On sait d\'après le cours, que si $A(x_A;y_A)$ et $D(x_D;y_D)$ sont deux points d\'un repère ,'
          texteCorr += '<br> alors les coordonnées du point $I$ milieu de $[AD]$ sont '
          texteCorr += '$I\\left(\\dfrac{x_A+x_D}{2};\\dfrac{y_A+y_D}{2}\\right)$ <br>'
          texteCorr += 'On applique la relation a l\'enonce : '
          texteCorr += `$\\begin{cases}x_I=\\dfrac{${xA}+${ecritureParentheseSiNegatif(xD)}}{2} \\\\ y_I=\\dfrac{${yA}+${ecritureParentheseSiNegatif(yD)}}{2}\\end{cases}$`
          texteCorr += `<br>On en déduit :  $\\begin{cases}x_I=\\dfrac{${texNombre(xA + xD)}}{2}\\\\y_I=\\dfrac{${texNombre(yA + yD)}}{2}\\end{cases}$`
          if (xI1 !== 1 && yI1 !== 1) { texteCorr += `  <br>Ce qui donne au final : $ I\\left(\\dfrac{${xI0}}{${xI1}};\\dfrac{${yI0}}{${yI1}};\\right)$` }
          if (xI1 === 1 && yI1 !== 1) { texteCorr += `  <br>Ce qui donne au final : $ I\\left(${xI0};\\dfrac{${yI0}}{${yI1}}\\right)$` }
          if (xI1 !== 1 && yI1 === 1) { texteCorr += `  <br>Ce qui donne au final : $ I\\left(\\dfrac{${xI0}}{${xI1}};${yI0}\\right)$` }
          if (xI1 === 1 && yI1 === 1) { texteCorr += `  <br>Ce qui donne au final : $ I\\left(${xI0};${yI0}\\right)$` }
          texteCorr += '<br> Les coordonnées du point $J$ milieu de $[BC]$ sont '
          texteCorr += '$J\\left(\\dfrac{x_B+x_C}{2};\\dfrac{y_B+y_C}{2}\\right)$ <br>'
          texteCorr += 'On applique la relation à l\'énoncé : '
          texteCorr += `$\\begin{cases}x_J=\\dfrac{${xB}+${ecritureParentheseSiNegatif(xC)}}{2} \\\\ y_J=\\dfrac{${yB}+${ecritureParentheseSiNegatif(yC)}}{2}\\end{cases}$`
          texteCorr += `<br>On en déduit :  $\\begin{cases}x_J=\\dfrac{${texNombre(xB + xC)}}{2}\\\\y_J=\\dfrac{${texNombre(yB + yC)}}{2}\\end{cases}$`
          if (xJ1 !== 1 && yJ1 !== 1) { texteCorr += `  <br>Ce qui donne au final : $ J\\left(\\dfrac{${xJ0}}{${xJ1}};\\dfrac{${yJ0}}{${yJ1}};\\right)$` }
          if (xJ1 === 1 && yJ1 !== 1) { texteCorr += `  <br>Ce qui donne au final : $ J\\left(${xJ0};\\dfrac{${yJ0}}{${yJ1}}\\right)$` }
          if (xJ1 !== 1 && yJ1 === 1) { texteCorr += `  <br>Ce qui donne au final : $ J\\left(\\dfrac{${xJ0}}{${xJ1}};${yJ0}\\right)$` }
          if (xJ1 === 1 && yJ1 === 1) { texteCorr += `  <br>Ce qui donne au final : $ J\\left(${xJ0};${yJ0}\\right)$` }
          texteCorr += '<br>On observe que $I$ et $J$ ont les mêmes coordonnées, donc les deux diagonales du quadrilatère se coupent en leur milieu.'
          texteCorr += '<br>$ABDC$ est donc un parallélogramme.'
          texteCorr += '<br>On calcule maintenant les diagonales de $ABDC$ : $AD$ et $BC$ par exemple.'
          texteCorr += '<br>On sait d\'après le cours, que si $A(x_A;y_A)$ et $D(x_D;y_D)$ sont deux points d\'un repère orthonormé,'
          texteCorr += ' alors on a : $AD=\\sqrt{\\left(x_D-x_A\\right)^{2}+\\left(y_D-y_A\\right)^{2}}.$<br>'
          texteCorr += `On applique la relation à l'énoncé : $AD=\\sqrt{\\left(${xD}-${ecritureParentheseSiNegatif(xA)}\\right)^{2}+\\left(${yD}-${ecritureParentheseSiNegatif(yA)}\\right)^{2}}$<br>`
          texteCorr += `$\\phantom{On applique la relation a l'enonce :        } AD=\\sqrt{${XAD}+${YAD}}$<br>`
          texteCorr += `$\\phantom{On applique la relation a l'enonce :        } AD=\\sqrt{${texNombre(XAD + YAD)}}$<br>`
          facteur = extraireRacineCarree(AD)[0]
          radical = extraireRacineCarree(AD)[1]
          if (radical !== 1) {
            if (facteur !== 1) {
              texteCorr += `$\\phantom{On applique la relation a l'enonce :   } AD=${facteur}\\sqrt{${radical}}$<br>`
            }
          } else {
            texteCorr += `$\\phantom{On applique la relation a l'enonce :   } AD=\\sqrt{${radical}}$<br>`
          }

          texteCorr += `On procède de même pour $BC$: $BC=\\sqrt{\\left(${xC}-${ecritureParentheseSiNegatif(xB)}\\right)^{2}+\\left(${yC}-${ecritureParentheseSiNegatif(yB)}\\right)^{2}}$<br>`
          texteCorr += `$\\phantom{On applique la relation a l'enonce :        } BC=\\sqrt{${XBC}+${YBC}}$<br>`
          texteCorr += `$\\phantom{On applique la relation a l'enonce :        } BC=\\sqrt{${texNombre(XBC + YBC)}}$<br>`
          facteur = extraireRacineCarree(BC)[0]
          radical = extraireRacineCarree(BC)[1]
          if (radical !== 1) {
            if (facteur !== 1) {
              texteCorr += `$\\phantom{On applique la relation a l'enonce :   } BC=${facteur}\\sqrt{${radical}}$<br>`
            }
          } else {
            texteCorr += `$\\phantom{On applique la relation a l'enonce :   } BC=${facteur}$<br>`
          }
          texteCorr += '<br>On observe que $BC=AD$, $ABDC$ est donc bien un rectangle.'
          A = point(xA, yA, 'A')
          B = point(xB, yB, 'B')
          C = point(xC, yC, 'C')
          D = point(xD, yD, 'D')
          P = polygoneAvecNom(A, B, D, C)
          objets.push(P[0], P[1])

          break
        case 5:// carré
          xA = randint(0, 9) * choice([-1, 1])
          yA = randint(0, 9) * choice([-1, 1])
          ux = randint(1, 9) * choice([-1, 1])
          uy = randint(1, 9) * choice([-1, 1])
          xB = xA + ux
          yB = yA + uy
          xC = xA - uy
          yC = yA + ux
          xD = xC + ux
          yD = yC + uy

          xI0 = fractionSimplifiee(xA + xD, 2)[0]
          xI1 = fractionSimplifiee(xA + xD, 2)[1]
          yI0 = fractionSimplifiee(yA + yD, 2)[0]
          yI1 = fractionSimplifiee(yA + yD, 2)[1]
          xJ0 = fractionSimplifiee(xB + xC, 2)[0]
          xJ1 = fractionSimplifiee(xB + xC, 2)[1]
          yJ0 = fractionSimplifiee(yB + yC, 2)[0]
          yJ1 = fractionSimplifiee(yB + yC, 2)[1]
          XAB = (xB - xA) * (xB - xA)
          YAB = (yB - yA) * (yB - yA)
          AB = XAB + YAB
          XAC = (xC - xA) * (xC - xA)
          YAC = (yC - yA) * (yC - yA)
          AC = XAC + YAC
          XAD = (xD - xA) * (xD - xA)
          YAD = (yD - yA) * (yD - yA)
          AD = XAD + YAD
          XBC = (xB - xC) * (xB - xC)
          YBC = (yB - yC) * (yB - yC)
          BC = XBC + YBC
          a = axes(-9, -9, 9, 9, 0.2, 1)

          texte = 'Dans un repère orthonormé (O,I,J), on donne les 4 points suivants :<br>'
          texte += ` $A\\left(${xA};${yA}\\right)$ ; $B\\left(${xB};${yB}\\right).$`
          texte += ` $C\\left(${xC};${yC}\\right)$ ; $D\\left(${xD};${yD}\\right).$`
          texte += '<br>Démontrer que $ABDC$ est un carré.'

          texteCorr = '<br>Pour prouver que $ABDC$ est un carré, il y a pluieurs stratégies :<br>'
          texteCorr += 'Dans cette correction, on propose de procéder par étapes :<br>'
          texteCorr += 'On va prouver d\'abord que $ABDC$ est un parallélogramme en utilisant les milieux des diagonales.<br>'
          texteCorr += 'puis on prouvera qu\'il est un rectangle en comparant ses diagonales.<br>'
          texteCorr += '<br>Enfin, en vérifiant qu\'il a deux côtés consécutifs de même longueur, on aura prouvé qu\'il est un carré. '

          texteCorr += '<br><B>Démonstration :</B><br>'
          texteCorr += '<B>1. On prouve que $ABDC$ est un parallélogramme :</B>'
          texteCorr += '<br>On sait que $ABDC$ est un parallélogramme si et seulement si ses diagonales se coupent en leur milieu.'
          texteCorr += '<br>On cherche donc les coordonnées du milieu de chacune des deux diagonales du quadrilatère, pour prouver qu\'elles sont identiques. :'
          texteCorr += '<br>On sait d\'après le cours, que si $A(x_A;y_A)$ et $D(x_D;y_D)$ sont deux points d\'un repère ,'
          texteCorr += '<br> alors les coordonnées du point $I$ milieu de $[AD]$ sont '
          texteCorr += '$I\\left(\\dfrac{x_A+x_D}{2};\\dfrac{y_A+y_D}{2}\\right)$ <br>'
          texteCorr += 'On applique la relation à l\'énoncé : '
          texteCorr += `$\\begin{cases}x_I=\\dfrac{${xA}+${ecritureParentheseSiNegatif(xD)}}{2} \\\\ y_I=\\dfrac{${yA}+${ecritureParentheseSiNegatif(yD)}}{2}\\end{cases}$`
          texteCorr += `<br>On en déduit :  $\\begin{cases}x_I=\\dfrac{${texNombre(xA + xD)}}{2}\\\\y_I=\\dfrac{${texNombre(yA + yD)}}{2}\\end{cases}$`
          if (xI1 !== 1 && yI1 !== 1) { texteCorr += `  <br>Ce qui donne au final : $ I\\left(\\dfrac{${xI0}}{${xI1}};\\dfrac{${yI0}}{${yI1}};\\right)$` }
          if (xI1 === 1 && yI1 !== 1) { texteCorr += `  <br>Ce qui donne au final : $ I\\left(${xI0};\\dfrac{${yI0}}{${yI1}}\\right)$` }
          if (xI1 !== 1 && yI1 === 1) { texteCorr += `  <br>Ce qui donne au final : $ I\\left(\\dfrac{${xI0}}{${xI1}};${yI0}\\right)$` }
          if (xI1 === 1 && yI1 === 1) { texteCorr += `  <br>Ce qui donne au final : $ I\\left(${xI0};${yI0}\\right)$` }
          texteCorr += '<br> Les coordonnées du point $J$ milieu de $[BC]$ sont '
          texteCorr += '$J\\left(\\dfrac{x_B+x_C}{2};\\dfrac{y_B+y_C}{2}\\right)$ <br>'
          texteCorr += 'On applique la relation à l\'énoncé : '
          texteCorr += `$\\begin{cases}x_J=\\dfrac{${xB}+${ecritureParentheseSiNegatif(xC)}}{2} \\\\ y_J=\\dfrac{${yB}+${ecritureParentheseSiNegatif(yC)}}{2}\\end{cases}$`
          texteCorr += `<br>On en déduit :  $\\begin{cases}x_J=\\dfrac{${texNombre(xB + xC)}}{2}\\\\y_J=\\dfrac{${texNombre(yB + yC)}}{2}\\end{cases}$`
          if (xJ1 !== 1 && yJ1 !== 1) { texteCorr += `  <br>Ce qui donne au final : $ J\\left(\\dfrac{${xJ0}}{${xJ1}};\\dfrac{${yJ0}}{${yJ1}};\\right)$` }
          if (xJ1 === 1 && yJ1 !== 1) { texteCorr += `  <br>Ce qui donne au final : $ J\\left(${xJ0};\\dfrac{${yJ0}}{${yJ1}}\\right)$` }
          if (xJ1 !== 1 && yJ1 === 1) { texteCorr += `  <br>Ce qui donne au final : $ J\\left(\\dfrac{${xJ0}}{${xJ1}};${yJ0}\\right)$` }
          if (xJ1 === 1 && yJ1 === 1) { texteCorr += `  <br>Ce qui donne au final : $ J\\left(${xJ0};${yJ0}\\right)$` }
          texteCorr += '<br>On observe que $I$ et $J$ ont les mêmes coordonnées, donc les deux diagonales du quadrilatère se coupent en leur milieu.'
          texteCorr += '<br>$ABDC$ est donc un parallélogramme.'
          texteCorr += '<br><B>2. On prouve que $ABDC$ est un rectangle :</B>'
          texteCorr += '<br>On calcule maintenant les diagonales de $ABDC$ : $AD$ et $BC$ .'
          texteCorr += '<br>On sait d\'après le cours, que si $A(x_A;y_A)$ et $D(x_D;y_D)$ sont deux points d\'un repère orthonormé,'
          texteCorr += ' alors on a : $AD=\\sqrt{\\left(x_D-x_A\\right)^{2}+\\left(y_D-y_A\\right)^{2}}.$<br>'
          texteCorr += `On applique la relation à l'énoncé : $AD=\\sqrt{\\left(${xD}-${ecritureParentheseSiNegatif(xA)}\\right)^{2}+\\left(${yD}-${ecritureParentheseSiNegatif(yA)}\\right)^{2}}$<br>`
          texteCorr += `$\\phantom{On applique la relation a l'enonce :        } AD=\\sqrt{${XAD}+${YAD}}$<br>`
          texteCorr += `$\\phantom{On applique la relation a l'enonce :        } AD=\\sqrt{${texNombre(XAD + YAD)}}$<br>`
          facteur = extraireRacineCarree(AD)[0]
          radical = extraireRacineCarree(AD)[1]
          if (radical !== 1) {
            if (facteur !== 1) {
              texteCorr += `$\\phantom{On applique la relation a l'enonce :   } AD=${facteur}\\sqrt{${radical}}$<br>`
            }
          } else {
            texteCorr += `$\\phantom{On applique la relation a l'enonce :   } AD=${facteur}$<br>`
          }
          texteCorr += `On procède de même pour $BC$: $BC=\\sqrt{\\left(${xC}-${ecritureParentheseSiNegatif(xB)}\\right)^{2}+\\left(${yC}-${ecritureParentheseSiNegatif(yB)}\\right)^{2}}$<br>`
          texteCorr += `$\\phantom{On applique la relation a l'enonce :        } BC=\\sqrt{${XBC}+${YBC}}$<br>`
          facteur = extraireRacineCarree(BC)[0]
          radical = extraireRacineCarree(BC)[1]
          if (radical !== 1) {
            if (facteur !== 1) {
              texteCorr += `$\\phantom{On applique la relation a l'enonce :   } BC=${facteur}\\sqrt{${radical}}$<br>`
            } else {
              texteCorr += `$\\phantom{On applique la relation a l'enonce :   } BC=\\sqrt{${radical}}$<br>`
            }
          } else {
            texteCorr += `$\\phantom{On applique la relation a l'enonce :   } BC=${facteur}$<br>`
          }
          texteCorr += '<br>On observe que $BC=AD$, $ABDC$ est donc bien un rectangle.'
          texteCorr += '<br><B>3. On prouve que $ABDC$ est un carré :</B>'
          texteCorr += '<br>On calcule maintenant deux côtés consécutilfs de $ABDC$ : $AB$ et $AC$ par exemple.'
          texteCorr += ` <br>$AB=\\sqrt{\\left(${xB}-${ecritureParentheseSiNegatif(xA)}\\right)^{2}+\\left(${yB}-${ecritureParentheseSiNegatif(yA)}\\right)^{2}}$<br>`
          texteCorr += `$AB =\\sqrt{${XAB}+${YAB}}$<br>`
          texteCorr += `$AB =\\sqrt{${texNombre(XAB + YAB)}}$<br>`
          facteur = extraireRacineCarree(AB)[0]
          radical = extraireRacineCarree(AB)[1]
          if (radical !== 1) {
            if (facteur !== 1) {
              texteCorr += `$AB=${facteur}\\sqrt{${radical}}$<br>`
            }
          } else {
            texteCorr += `$AB=${facteur}$<br>`
          }
          texteCorr += `De même : $AC=\\sqrt{\\left(${xC}-${ecritureParentheseSiNegatif(xA)}\\right)^{2}+\\left(${yC}-${ecritureParentheseSiNegatif(yA)}\\right)^{2}}$<br>`
          texteCorr += `$\\phantom{De meme :       } AC=\\sqrt{${XAC}+${YAC}}$<br>`
          texteCorr += `$\\phantom{De meme :       } AC=\\sqrt{${texNombre(XAC + YAC)}}$<br>`
          facteur = extraireRacineCarree(AC)[0]
          radical = extraireRacineCarree(AC)[1]
          if (radical !== 1) {
            if (facteur !== 1) {
              texteCorr += `$\\phantom{De meme :       } AC=${facteur}\\sqrt{${radical}}$<br>`
            }
          } else {
            texteCorr += `$\\phantom{De meme :  } AC=${facteur}$<br>`
          }
          texteCorr += 'On observe que $AC=AB$ donc $ABDC$ est bien un carré.'
          A = point(xA, yA, 'A')
          B = point(xB, yB, 'B')
          C = point(xC, yC, 'C')
          D = point(xD, yD, 'D')
          P = polygoneAvecNom(A, B, D, C)
          objets.push(P[0], P[1])

          break
      }

      XMIN = Math.min(xA, xB, xC, xD, -1) - 1
      YMIN = Math.min(yA, yB, yC, yD, -1) - 1
      XMAX = Math.max(xA, xB, xC, xD, 1) + 1
      YMAX = Math.max(yA, yB, yC, yD, 1) + 1
      objets.push(repere({ xMin: XMIN, yMin: YMIN, xMax: XMAX, yMax: YMAX }))
      texteCorr += '<br>' + mathalea2d({ xmin: XMIN, ymin: YMIN, xmax: XMAX, ymax: YMAX }, objets)
      if (this.questionJamaisPosee(i, xA, yA, xB, yB, typesDeQuestions)) { // Si la question n'a jamais été posée, on en créé une autre
        this.listeQuestions.push(texte)
        this.listeCorrections.push(texteCorr)
        i++
      }
      cpt++
    }
    listeQuestionsToContenu(this)
  }
}