exercices/PE/PEG21.js

import Exercice from '../Exercice.js'
import { choice, listeQuestionsToContenu, texteGras } from '../../modules/outils.js'
import { cercle, droite, longueur, milieu, point, pointAdistance, pointIntersectionLC } from '../../modules/2d.js'
import Alea2iep from '../../modules/Alea2iep.js'
export const titre = 'Tracer une racine au compas et à la règle non graduée à l\'aide du théorème de la hauteur'

export const dateDePublication = '1/11/2021'

/**
 * @author Rémi Angot
 * Référence PEG21
*/
export const uuid = '838fb'
export const ref = 'PEG21'
export default function RacineCarrAvecTheoremeHauteur () {
  Exercice.call(this)
  this.typeExercice = 'IEP'
  this.nbQuestions = 1
  this.nbQuestionsModifiable = false

  this.nouvelleVersion = function (numeroExercice) {
    const couplesPossibles = [[1, 5], [2, 3], [1, 7], [2, 4], [2, 5], [3, 4], [3, 5]]
    const couple = choice(couplesPossibles)
    const a = couple[0]
    const b = couple[1]
    const r = a * b
    const distance = 1
    const anim = new Alea2iep()
    const u1 = point(1, 5)
    const u2 = point(u1.x + distance, u1.y)
    const u1y1 = point(u1.x, u1.y - 0.1)
    const u1y2 = point(u1.x, u1.y + 0.1)
    const u2y1 = point(u2.x, u2.y - 0.1)
    const u2y2 = point(u2.x, u2.y + 0.1)
    anim.traitRapide(u1, u2)
    anim.traitRapide(u1y1, u1y2)
    anim.traitRapide(u2y1, u2y2)
    anim.regleMasquerGraduations()
    anim.textePosition('u', u1.x + 0.4, u1.y + 0.8)
    const A = point(3, 0, 'A')
    const B = point(A.x + a + b, 0, 'B')
    const H = point(A.x + a, 0, 'H')
    const h = point(H.x, H.y + 1)
    const maHauteur = droite(H, h)
    const monCercle = cercle(milieu(A, B), longueur(A, B) / 2)
    const C = pointIntersectionLC(maHauteur, monCercle)
    C.nom = 'C'
    anim.regleDroite(A, B)
    anim.regleMasquer()
    anim.pointCreer(A)
    anim.compasEcarter2Points(u1, u2)
    const Ax = [A]
    for (let i = 1; i <= a + b; i++) {
      Ax.push(pointAdistance(A, distance * i, 0))
      anim.compasTracerArcCentrePoint(Ax[i - 1], Ax[i])
    }
    anim.pointCreer(H)
    anim.pointCreer(B)
    anim.mediatriceAuCompas(Ax[a - 1], Ax[a + 1], { coderFigure: false, longueur1: 5, longueur2: -5 })
    anim.crayonMasquer()
    if ((a + b) % 2 === 0) {
      anim.compasEcarter2Points(Ax[(a + b) / 2], B)
    } else {
      anim.epaisseur = 1
      anim.mediatriceAuCompas(A, B, { coderFigure: false })
      anim.epaisseur = 2
      anim.compasEcarter2Points(milieu(A, B), B)
    }
    anim.compasTracerArc2Angles(0, 180)
    anim.compasMasquer()
    anim.pointsCreer(C)
    anim.regleSegment(H, C, { couleur: 'red', epaisseur: 3 })
    anim.regleMasquer()
    anim.crayonMasquer()
    const texte = `En utilisant le théorème de la hauteur, tracer un segment de longueur $\\sqrt{${r}}u$ avec le compas et une règle non graduée.`
    let texteCorr = texteGras('Programme de construction :')
    texteCorr += `<br>$${r}=${a}\\times ${b}$`
    texteCorr += `<br>On place 3 points $A$, $H$ et $B$ alignés tels que $AH = ${a}u$ et $BH = ${b}u$.`
    texteCorr += '<br>On trace la perpendiculaire à $(AB)$ passant par $H$ (pour cela on choisit 2 points $M$ et $N$ sur $[AB]$ tels que $H$ soit le milieu de $[MN]$ puis on trace la médiatrice de $[MN]$).'
    if ((a + b) % 2 === 0) {
      texteCorr += `<br> $AB = ${a + b}u$, il est facile de trouver le milieu de $[AB]$.`
    } else {
      texteCorr += `<br> $AB = ${a + b}u$, il faut tracer la médiatrice de $[AB]$ pour trouver son milieu.`
    }
    texteCorr += '<br>On trace un demi-cercle de diamètre $[AB]$.'
    texteCorr += '<br>On place le point $C$ à l\'intersection du cercle et de la perpendiculaire à $(AB)$ passant par $H$.'
    texteCorr += '<br><br>' + texteGras('Justification :')
    texteCorr += '<br> Le triangle $ABC$ est inscrit dans un cercle de diamètre $[AB]$, il est donc rectangle en $C$.'
    texteCorr += '<br> Les droites $(CH)$ et $(AB)$ sont perpendiculaires en $H$ donc $H$ est le pied de la hauteur relative à l\'hypoténuse du triangle $ABC$.'
    texteCorr += `<br> D'après le théorème de la hauteur, on a : $CH = \\sqrt{AH \\times HB}= \\sqrt{${a}u \\times ${b}u}=\\sqrt{${r}}u$.`
    texteCorr += anim.html(numeroExercice)

    this.listeQuestions = [texte]
    this.listeCorrections = [texteCorr]
    listeQuestionsToContenu(this)
  }
}