0Familles de fonctions : paramètres et domainesin(x)paraFcréer un texte avecf(x)=fonction_de_basecode mathespace30boutonChanger f(x)espaceparaFboutonparaFboutontaille-caractère18ptboutoncouleur-fond   boutonchanger fonctionparaGg(x)=a⋅f(b⋅(x-h))+kcode mathparaGcouleur   vraicontenant_casediv case_a_cocherLe domaine de f(x) est restreint entre domaine_restreintcase_a_cocheroption changedebut_dom-10debut_dommodifier domaineet et fin_dom10fin_dommodifier domainecontenant_casetransformscale(1.5)case_a_cocherdisplayinlinecase_a_cochercontenant_casedebut_domcontenant_caseetcontenant_casefin_domcontenant_caseaa = -5510.0130bb = -5510.0130hh = -5500.0130kk = -5500.01ataille-caractère24ptbtaille-caractère24pthtaille-caractère24ptktaille-caractère24ptcontenantdiv figGGBélément dont l'ID estcontenantfauxinitialiser cadre GeoGebra0.2Fairedanssecondesfixercadre_GGB_OKàl'objetaura l'objetpour parentCréer élémenttypetexteInsérer un saut de ligneInsérer un saut de lignePour l'objetstylevaleurPour l'objetstylevaleurPour l'objetstylevaleurPour l'objetstylevaleurCréer glissière+valeurtitreminimummaximumvaleur initialepasInsérerun espace depixelsCréer glissière+valeurtitreminimummaximumvaleur initialepasInsérerun espace depixelsCréer glissière+valeurtitreminimummaximumvaleur initialepasInsérerun espace depixelsCréer glissière+valeurtitreminimummaximumvaleur initialepasInsérer un saut de lignel'objetaura l'objetpour parentl'objetaura l'objetpour parentl'objetaura l'objetpour parentl'objetaura l'objetpour parentPour l'objetstylevaleurPour l'objetstylevaleursi on tape 'retour' dansfaireCréer une entréede contenu initialCréer un textede contenusi on tape 'retour' dansfaireCréer une entréede contenu initialsi l'état dechange faireCréer une case à cocheraffichantavec cocheCréer élémenttypetextefixerdomaine_restreintàFinaliser les expressions mathématiquesPour l'objetstylevaleurCréer un titrecontenantsi clic surfairePour l'objetstylevaleurPour l'objetstylevaleurl'objetaura l'objetpour parentl'objetaura l'objetpour parentCréer un boutonaffichantInsérerun espace depixelsCréer un titrecontenantfixerfonction_de_baseàCréer un titrecontenantCentrer les objets dans une page web de largeurpixelspouractions initiales sifairesinonfigGGBLe chargement du cadrede typeGeoGebraest terminéfonctionfonctionGGBavec :fonction_de_basefigGGBa=1figGGBb=1figGGBh=0figGGBk=0figGGBg(x)=a*f(b*(x-h))+kfigGGBSetColor(f,0,0,0)figGGBSetColor(g,1,0,0)figGGBP=Point(f)figGGBQ=(x(P)/b+h,g(x(P)/b+h))figGGBSetColor(P,0,0,0)figGGBSetColor(Q,1,0,0)figGGBvraifixercadre_GGB_OKàExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreExécuter la commande GeoGebradans le cadreinitialiser cadre GeoGebra0.2Fairedanssecondespourinitialiser cadre GeoGebra retourcadre_GGB_OKafigGGBavaleur debfigGGBbvaleur dehfigGGBhvaleur dekfigGGBkvaleur deDonner à la variable GeoGebradu cadrela valeurDonner à la variable GeoGebradu cadrela valeurDonner à la variable GeoGebradu cadrela valeurDonner à la variable GeoGebradu cadrela valeursifairepouractions en boucle domaine_restreintpasfonctionfonctionGGBavec :fonction_de_basefigGGBExécuter la commande GeoGebradans le cadrefixerdomaine_restreintàpouroption change retourpourfonctionGGBavec : fonctionretoursifairesinondomaine_restreintf(x)=If[@1<x && x<@2,@3]créer une liste avecdebut_domvaleur defin_domvaleur defonctionsubstituer dansles valeursfixerfonction_pour_GeoGebraàcréer un texte avecf(x)=fonctionfixerfonction_pour_GeoGebraàfonction_pour_GeoGebrafonctionfonctionGGBavec :fonction_de_basefigGGBExécuter la commande GeoGebradans le cadrepourmodifier domaine retourinvite pour untexteavec un messageNouvelle valeur de f(x)sifairesinontemplongueur de0=quitter la fonction (en retournant)tempfixerfonction_de_baseàparaFcréer un texte avecf(x)=fonction_de_basecode mathespaceparaFboutonparaFfonctionfonctionGGBavec :fonction_de_basefigGGBExécuter la commande GeoGebradans le cadrel'objetaura l'objetpour parentl'objetaura l'objetpour parentFinaliser les expressions mathématiquesFixe le contenu deàfixertempàpourchanger fonction retour

var canevas, a, b, h, k, cadre_GGB_OK, paraF, paraG, case_a_cocher, debut_dom, fin_dom, fonction_de_base, bouton, fonction_pour_GeoGebra, domaine_restreint, x, fonction, temp, contenant, et, contenant_case, espace;

/**
 * Fonction exécutée une fois, au départ
 */
function actions_initiales() {
  centrerPageExecution(0);
  createElement("h1",'Familles de fonctions : paramètres et domaine');
  fonction_de_base = 'sin(x)';
  paraF=createElement("h1",(codeMath((String('f(x)=') + String(fonction_de_base)))));
  espace=createSpan("").style("display","inline-block").style("width","30px");
  bouton=createButton('Changer f(x)');
  assignerParentPrudent("espace",espace,"paraF",paraF);
  assignerParentPrudent("bouton",bouton,"paraF",paraF);
  stylerObjetPrudent("bouton",bouton,'taille-caractère','18pt');
  stylerObjetPrudent("bouton",bouton,'couleur-fond','#c0c0c0');
  siClicPrudent("bouton",bouton,"changer_fonction",changer_fonction);
  paraG=createElement("h1",(codeMath('g(x)=a⋅f(b⋅(x-h))+k')));
  stylerObjetPrudent("paraG",paraG,'couleur','#cc0000');
  refreshMathJax();domaine_restreint = true;
  contenant_case=createElement('div','');
  case_a_cocher=createCheckbox('Le domaine de f(x) est restreint entre ',domaine_restreint);
  siChangementPrudent("case_a_cocher",case_a_cocher,"option_change",option_change);
  debut_dom=createInput('-10');
  siRetourPrudent("debut_dom",debut_dom,"modifier_domaine",modifier_domaine);
  et=createSpan(' et ');
  fin_dom=createInput('10');
  siRetourPrudent("fin_dom",fin_dom,"modifier_domaine",modifier_domaine);
  stylerObjetPrudent("contenant_case",contenant_case,'transform','scale(1.5)');
  stylerObjetPrudent("case_a_cocher",case_a_cocher,'display','inline');
  assignerParentPrudent("case_a_cocher",case_a_cocher,"contenant_case",contenant_case);
  assignerParentPrudent("debut_dom",debut_dom,"contenant_case",contenant_case);
  assignerParentPrudent("et",et,"contenant_case",contenant_case);
  assignerParentPrudent("fin_dom",fin_dom,"contenant_case",contenant_case);
  createSpan("<br>");
  a=nouvelleGlissiereValeur('a = ',-5,5,1,0.01);
  createSpan("").style("display","inline-block").style("width","30px");
  b=nouvelleGlissiereValeur('b = ',-5,5,1,0.01);
  createSpan("").style("display","inline-block").style("width","30px");
  h=nouvelleGlissiereValeur('h = ',-5,5,0,0.01);
  createSpan("").style("display","inline-block").style("width","30px");
  k=nouvelleGlissiereValeur('k = ',-5,5,0,0.01);
  stylerObjetPrudent("a",a,'taille-caractère','24pt');
  stylerObjetPrudent("b",b,'taille-caractère','24pt');
  stylerObjetPrudent("h",h,'taille-caractère','24pt');
  stylerObjetPrudent("k",k,'taille-caractère','24pt');
  createSpan("<br>");
  createSpan("<br>");
  contenant=createElement('div','');
  assignerParentPrudent("(select('#'+'figGGB'))",(select('#'+'figGGB')),"contenant",contenant);
  cadre_GGB_OK = false;
  faireDelaiPrudent("initialiser_cadre_GeoGebra",initialiser_cadre_GeoGebra,0.2);
}

/**
 * Décrire cette fonction…
 */
function initialiser_cadre_GeoGebra() {
  if (retournerSiCadreCharge('figGGB',"GEOGEBRA")) {
    executerCommandeGeoGebraF((fonctionGGB(fonction_de_base)),'figGGB');
    executerCommandeGeoGebraF('a=1','figGGB');
    executerCommandeGeoGebraF('b=1','figGGB');
    executerCommandeGeoGebraF('h=0','figGGB');
    executerCommandeGeoGebraF('k=0','figGGB');
    executerCommandeGeoGebraF('g(x)=a*f(b*(x-h))+k','figGGB');
    executerCommandeGeoGebraF('SetColor(f,0,0,0)','figGGB');
    executerCommandeGeoGebraF('SetColor(g,1,0,0)','figGGB');
    executerCommandeGeoGebraF('P=Point(f)','figGGB');
    executerCommandeGeoGebraF('Q=(x(P)/b+h,g(x(P)/b+h))','figGGB');
    executerCommandeGeoGebraF('SetColor(P,0,0,0)','figGGB');
    executerCommandeGeoGebraF('SetColor(Q,1,0,0)','figGGB');
    cadre_GGB_OK = true;
  } else {
    faireDelaiPrudent("initialiser_cadre_GeoGebra",initialiser_cadre_GeoGebra,0.2);
  }
}

/**
 * Fonction exécutée périodiquement, de façon répétée
 */
function actions_en_boucle() {
  if (cadre_GGB_OK) {
    fixerValeurVariableGeoGebraF('a',(valeurPrudent("a",a)),'figGGB');
    fixerValeurVariableGeoGebraF('b',(valeurPrudent("b",b)),'figGGB');
    fixerValeurVariableGeoGebraF('h',(valeurPrudent("h",h)),'figGGB');
    fixerValeurVariableGeoGebraF('k',(valeurPrudent("k",k)),'figGGB');
  }
}

/**
 * Décrire cette fonction…
 */
function option_change() {
  domaine_restreint = !domaine_restreint;
  executerCommandeGeoGebraF((fonctionGGB(fonction_de_base)),'figGGB');
}

/**
 * Décrire cette fonction…
 */
function fonctionGGB(fonction) {
  if (domaine_restreint) {
    fonction_pour_GeoGebra = substitution('f(x)=If[@1<x && x<@2,@3]',[valeurPrudent("debut_dom",debut_dom), valeurPrudent("fin_dom",fin_dom), fonction]);
  } else {
    fonction_pour_GeoGebra = String('f(x)=') + String(fonction);
  }
  return fonction_pour_GeoGebra;
}

/**
 * Décrire cette fonction…
 */
function modifier_domaine() {
  executerCommandeGeoGebraF((fonctionGGB(fonction_de_base)),'figGGB');
}

/**
 * Décrire cette fonction…
 */
function changer_fonction() {
  temp = window.prompt('Nouvelle valeur de f(x)');
  if (temp.length == 0) {
    return ;
  } else {
    fonction_de_base = temp;
  }
  fixeContenuPrudent("paraF",paraF,(codeMath((String('f(x)=') + String(fonction_de_base)))));
  refreshMathJax();assignerParentPrudent("espace",espace,"paraF",paraF);
  assignerParentPrudent("bouton",bouton,"paraF",paraF);
  executerCommandeGeoGebraF((fonctionGGB(fonction_de_base)),'figGGB');
}
Exécuter