exercices/can/4e/can4P05.js

import { courbeSpline, droiteParPointEtPente, point, repere } from '../../../modules/2d.js'
import { splineCatmullRom } from '../../../modules/fonctionsMaths.js'
import { choice, randint } from '../../../modules/outils.js'
import Exercice from '../../Exercice.js'
import { mathalea2d } from '../../../modules/2dGeneralites.js'
export const interactifReady = true
export const interactifType = 'mathLive'
export const titre = 'Reconnaître sur un graphique une situation de proportionnalité ou de non proportionnalité'
export const dateDePublication = '23/01/2021' // La date de publication initiale au format 'jj/mm/aaaa' pour affichage temporaire d'un tag
export const dateDeModifImportante = '23/01/2021' // Une date de modification importante au format 'jj/mm/aaaa' pour affichage temporaire d'un tag
/**
 * @author Guillaume Valmont
 */
export const uuid = '8171f'
export const ref = 'can4P05'
export default function ImageSpline () {
  Exercice.call(this)
  this.typeExercice = 'simple'
  this.nbQuestions = 1
  this.formatChampTexte = 'largeur15 inline'
  this.nouvelleVersion = function () {
    const r = repere({ xMin: -7, xMax: 7, yMin: -6, yMax: 6 })
    let c
    const type = choice(['lineaire', 'affine', 'autre'])
    switch (type) {
      case 'lineaire':
        {
          const pente = (randint(-15, 15, 0)) / 5
          const OrdX0 = 0
          c = droiteParPointEtPente(point(0, OrdX0), pente, '', 'blue')
          this.reponse = 'oui'
          this.correction = 'C\'est une droite qui passe par l\'origine.<br>Ce graphique représente donc une situation de proportionnalité.'
        }
        break
      case 'affine':
        {
          const pente = (randint(-15, 15, 0)) / 5
          this.lineaire = false
          const OrdX0 = randint(-1 + pente, 1 + pente, [pente, 0])
          c = droiteParPointEtPente(point(0, OrdX0), pente, '', 'blue')
          this.reponse = 'non'
          this.correction = 'C\'est bien une droite mais elle ne passe pas par l\'origine.<br>Ce graphique ne représente donc pas une situation de proportionnalité.'
        }
        break
      default:
        {
          const Y = []
          for (let x = -1; x <= 1; x++) {
            Y[x + 1] = randint(-4, 4)
          }
          const f = splineCatmullRom({ tabY: Y, x0: -6, step: 6 })
          c = courbeSpline(f, { repere: r, step: 0.1, color: 'blue', xMin: -6, xMax: 6, traceNoeuds: false })
          this.reponse = 'non'
          this.correction = 'Ce n\'est pas une droite.<br>Ce graphique ne représente donc pas une situation de proportionnalité.'
        }
        break
    }
    this.question = `Ce graphique représente-t-il une situation de proportionnalité ?<br>
    
    ${mathalea2d({ xmin: -7, xmax: 7, ymin: -6, ymax: 6, pixelsParCm: 17, style: 'margin: auto', scale: 0.6 }, r, c)}`
    this.canEnonce = this.question// 'Compléter'
    this.canReponseACompleter = ''
  }
}