exercices/can/1e/can1G04.js

import Exercice from '../../Exercice.js'
import { mathalea2d } from '../../../modules/2dGeneralites.js'
import { randint, choice, texNombre, choisitLettresDifferentes } from '../../../modules/outils.js'
import {
  point, labelPoint, afficheLongueurSegment, afficheMesureAngle, pointAdistance, segment
} from '../../../modules/2d.js'
import Decimal from 'decimal.js'
import FractionX from '../../../modules/FractionEtendue.js'
export const titre = 'Calculer un produit scalaire à l’aide de normes et d’un angle '
export const interactifReady = true
export const interactifType = 'mathLive'
export const dateDePublication = '26/06/2022'
/**
 * Modèle d'exercice très simple pour la course aux nombres
 * @author Gilles Mora
 * Référence can1G04
 *
*/
export const uuid = 'df08a'
export const ref = 'can1G04'
export default function ProduitScalaireNormesAngles () {
  Exercice.call(this) // Héritage de la classe Exercice()
  this.typeExercice = 'simple' // Cette ligne est très importante pour faire faire un exercice simple !
  this.formatChampTexte = 'largeur15 inline'
  this.nbQuestions = 1
  this.tailleDiaporama = 2
  // Dans un exercice simple, ne pas mettre de this.listeQuestions = [] ni de this.consigne

  this.nouvelleVersion = function () {
    const choix = choice([true, false])
    const nom = choisitLettresDifferentes(3, 'O', true)
    const A = point(0, 0, nom[0], 'below')
    const a = randint(4, 8)//
    const B = pointAdistance(A, a, 0, nom[1], 'below')
    const b = randint(4, 8)//
    const d = (new Decimal(a * b)).div(2)
    const f1 = new FractionX(a * b, 2)
    const Angle = [[60, '$\\dfrac{\\pi}{3}$', '\\dfrac{\\pi}{3}'], [30, '$\\dfrac{\\pi}{6}$', '\\dfrac{\\pi}{6}'],
      [45, '$\\dfrac{\\pi}{4}$', '\\dfrac{\\pi}{4}'],
      [120, '$\\dfrac{2\\pi}{3}$', '\\dfrac{2\\pi}{3}'],
      [135, '$\\dfrac{3\\pi}{4}$', '\\dfrac{3\\pi}{4}'],
      [150, '$\\dfrac{5\\pi}{6}$', '\\dfrac{5\\pi}{6}']
    ]
    const angle = choice(Angle)
    const C = pointAdistance(A, b, angle[0], nom[2], 'above')
    const vAB = segment(A, B, 'blue', '->')
    vAB.epaisseur = 2
    const a1 = afficheLongueurSegment(B, A, 'black', 0.5, '')
    const a2 = afficheLongueurSegment(A, C, 'black', 0.5, '')
    const vAC = segment(A, C, 'red', '->')
    vAC.epaisseur = 2

    const a3 = choix ? afficheMesureAngle(B, A, C, 'black', 1.5, `${angle[1]}`) : afficheMesureAngle(B, A, C, 'black', 1.5, `${angle[0]}°`)
    const objets = []
    const xmin = Math.min(A.x, B.x, C.x) - 1
    const ymin = Math.min(A.y, B.y, C.y) - 1.5
    const xmax = Math.max(A.x, B.x, C.x) + 1
    const ymax = Math.max(A.y, B.y, C.y) + 1.5

    objets.push(vAB, vAC, labelPoint(A, B, C), a1, a2, a3)

    this.question = `Calculer $\\overrightarrow{${nom[0]}${nom[1]}}\\cdot\\overrightarrow{${nom[0]}${nom[2]}}$.<br>
    
    `
    this.question += mathalea2d({ xmin: xmin, ymin: ymin, xmax: xmax, ymax: ymax, pixelsParCm: 15, mainlevee: false, amplitude: 0.3, scale: 0.5, style: 'margin: auto' }, objets)
    if (angle[0] === 30) {
      this.correction = `
    $\\begin{aligned}
    \\overrightarrow{${nom[0]}${nom[1]}}\\cdot\\overrightarrow{${nom[0]}${nom[2]}}&=${nom[0]}${nom[1]}\\times ${nom[0]}${nom[2]}\\times \\cos(\\widehat{${nom[2]}${nom[0]}${nom[1]}})\\\\
    &=${choix ? `${a}\\times ${b}\\times \\cos\\left(${angle[2]}\\right)` : `${a}\\times ${b}\\times \\cos(${angle[0]}°)`}\\\\
             &=\\dfrac{${a * b}\\sqrt{3}}{2}\\\\
             &=${texNombre(d, 1)}\\sqrt{3}
             \\end{aligned}$



   `
      this.reponse = [`${d}\\sqrt{3}`, `${f1.texFraction}\\times\\sqrt{3}`]
    }

    if (angle[0] === 45) {
      this.correction = `
      $\\begin{aligned}
      \\overrightarrow{${nom[0]}${nom[1]}}\\cdot\\overrightarrow{${nom[0]}${nom[2]}}&=${nom[0]}${nom[1]}\\times ${nom[0]}${nom[2]}\\times \\cos(\\widehat{${nom[2]}${nom[0]}${nom[1]}})\\\\
      &=${choix ? `${a}\\times ${b}\\times \\cos\\left(${angle[2]}\\right)` : `${a}\\times ${b}\\times \\cos(${angle[0]}°)`}\\\\
               &=\\dfrac{${a * b}\\times\\sqrt{2}}{2}\\\\
               &=${texNombre(d, 1)}\\sqrt{2}
               \\end{aligned}$



     `
      this.reponse = [`${d}\\sqrt{2}`, `${f1.texFraction}\\times\\sqrt{2}`]
    }

    if (angle[0] === 60) {
      this.correction = `
      $\\begin{aligned}
      \\overrightarrow{${nom[0]}${nom[1]}}\\cdot\\overrightarrow{${nom[0]}${nom[2]}}&=${nom[0]}${nom[1]}\\times ${nom[0]}${nom[2]}\\times \\cos(\\widehat{${nom[2]}${nom[0]}${nom[1]}})\\\\
               &=${choix ? `${a}\\times ${b}\\times \\cos\\left(${angle[2]}\\right)` : `${a}\\times ${b}\\times \\cos(${angle[0]}°)`}\\\\
               &=${a * b}\\times\\dfrac{1}{2}\\\\
               &=${texNombre(d, 1)}
               \\end{aligned}$



     `
      this.reponse = [`${d}`, `${f1.texFraction}`]
    }

    if (angle[0] === 120) {
      this.correction = `
    $\\begin{aligned}
    \\overrightarrow{${nom[0]}${nom[1]}}\\cdot\\overrightarrow{${nom[0]}${nom[2]}}&=${nom[0]}${nom[1]}\\times ${nom[0]}${nom[2]}\\times \\cos(\\widehat{${nom[2]}${nom[0]}${nom[1]}})\\\\
    &=${choix ? `${a}\\times ${b}\\times \\cos\\left(${angle[2]}\\right)` : `${a}\\times ${b}\\times \\cos(${angle[0]}°)`}\\\\
             &=${a * b}\\times\\dfrac{-1}{2}\\\\
             &=${texNombre(-d, 1)}
             \\end{aligned}$



   `
      this.reponse = [`${-d}`, `${f1.oppose().texFraction}`]
    }

    if (angle[0] === 135) {
      this.correction = `
  $\\begin{aligned}
  \\overrightarrow{${nom[0]}${nom[1]}}\\cdot\\overrightarrow{${nom[0]}${nom[2]}}&=${nom[0]}${nom[1]}\\times ${nom[0]}${nom[2]}\\times \\cos(\\widehat{${nom[2]}${nom[0]}${nom[1]}})\\\\
  &=${choix ? `${a}\\times ${b}\\times \\cos\\left(${angle[2]}\\right)` : `${a}\\times ${b}\\times \\cos(${angle[0]}°)`}\\\\
           &=${a * b}\\times\\dfrac{-\\sqrt{2}}{2}\\\\
           &=${texNombre(-d, 1)}\\sqrt{2}
           \\end{aligned}$



 `
      this.reponse = [`${-d}\\sqrt{2}`, `${f1.oppose().texFraction}\\times\\sqrt{2}`]
    }

    if (angle[0] === 150) {
      this.correction = `
    $\\begin{aligned}
    \\overrightarrow{${nom[0]}${nom[1]}}\\cdot\\overrightarrow{${nom[0]}${nom[2]}}&=${nom[0]}${nom[1]}\\times ${nom[0]}${nom[2]}\\times \\cos(\\widehat{${nom[2]}${nom[0]}${nom[1]}})\\\\
    &=${choix ? `${a}\\times ${b}\\times \\cos\\left(${angle[2]}\\right)` : `${a}\\times ${b}\\times \\cos(${angle[0]}°)`}\\\\
             &=${a * b}\\times\\dfrac{-\\sqrt{3}}{2}\\\\
             &=${texNombre(-d, 1)}\\sqrt{3}
             \\end{aligned}$



   `
      this.reponse = [`${-d}\\sqrt{3}`, `${f1.oppose().texFraction}\\times\\sqrt{3}`]
    }
    this.canEnonce = this.question
    this.canReponseACompleter = ''
  }
}