Type jsxgraph et objet 'glider'

Accueil Forums Programmation WIMS Programmation d’exercices OEF Type jsxgraph et objet 'glider'

Étiqueté : 

Vous lisez 3 fils de discussion
  • Auteur
    Messages
    • #2896
      declieu69
      Participant
      Up
      0
      Down
      ::

      Bonjour.

      Je commence à me plonger dans l’utilisation de jsxgraph et je n’ai pas réussi à utiliser le type ‘glider’ (point sur un objet) pour donner une réponse.
      Cela vient peut être de la syntaxe qui est du type
      brd.create('glider', [x,y,objet],{name:'M'});.
      J’ai tenté jxgbox_rep1=brd.create('glider', [jxgbox_var1,cercle,{name:'M'}); dans la création de la figure et dans la 4ème ligne du \embed, j’ai mis jxgbox_var1=[1,0] mais le point M n’est pas créé. Cela me parait normal puisque la syntaxe n’est certainement pas respectée à cause de la présence des crochets dans la définition de jxgbox_var1 alors que ceux-ci ne devraient pas être présents lors de la définition du type ‘glider’ (j’ai bon ?)
      Existe-t-il une astuce qui permettrait d’utiliser le type glider ?

      Cordialement.

      • Ce sujet a été modifié le il y a 8 années et 11 mois par declieu69.

      Thomas Charon
      Lycée Lumière à Lyon

    • #2899
      Julien
      Modérateur
      Up
      1
      Down
      ::

      Hello,

      Le bout de code suivant devrait répondre à tes attentes. Tu pourrais aussi faire en sorte que la correction s’anime lorsque les réponses sont erronées en réinjectant du javascript à la correction à l’aide de la commande moveto (<=de mémoire).

      L’exemple si dessous donne la bonne place du point en vert mais on pourrait corriger en déplaçant le point voir plus si affinité.

      feedback{1=1}{
      <script>
      point=brd.create('point',[\a*0.5+0.5,2],{name:'Correction',Color:'green',fixed:'true'});
      </script>}

      Actuellement je m’amuse à effectuer des types de réponses qui auront des corrections animées mais il me manque du temps de libre pour finaliser.

      voili voilou

      \title{WimsAnalyseJsxgraphGlider}
      \language{fr}
      \range{-5..5}
      \author{Julien LYOTARD}
      \email{Julien.lyotard@ac-dijon.fr}
      \computeanswer{no}
      \format{html}
      \precision{10000}
      
      \css{<style type="text/css">
      .jsxx {
      border: 10px solid #393b40;
      margin: 2px;
      padding: 2px;
      background-color: #e6ebff;
      border-radius: 4px;
      text-align:justify;
      }
      </style>}
      
      Définition de la fonction
      \rational{a=random(-1,1)*randint(1..3)/randint(1..4)}
      \rational{b=randint(-4..4)/randint(1..2)}
      \rational{c= randint(-3..3)}
      \function{f=random(\a*x^2+\b*x+\c,\a*x^3+\b*x^2+\c*x)}
      Vire les coefficients nuls et les fractions a/b
      \function{f = pari(\f)}
      \function{fjs=wims(replace internal ^2 by *x in \f)}
      \function{fjs=wims(replace internal ^3 by *x*x in \fjs)}
      Calcul de la tangente
      \rational{x0 = randint(-3..3)/2}
      \real{y0 = evalue(\f,x=\x0)}
      \function{fp = diff(\f,x)}
      \function{fp=wims(replace internal ^2 by *x in \fp)}
      \real{p0 = evalue(\fp,x=\x0)}
      Repérage
      \real{xmin = -2.5}
      \real{xmax = 2.5}
      \text{A=slib(function/bounds \f, x,\xmin,\xmax)}
      \integer{ymin = \A[1]-1}
      \integer{ymax = \A[2]+1}
      \integer{ytext= \A[2]-2}
      
      \text{script= var brd = JXG.JSXGraph.initBoard('jxgbox', {axis:false, boundingbox: [-3,\ymax,3,\ymin]});
      xaxis = brd.create('axis', [[0, 0], [1, 0]], {ticks: { ticksDistance: 1, insertTicks: false}});
      yaxis = brd.create('axis', [[0, 0], [0, 1]],{ ticks: { ticksDistance: 1, insertTicks: false}});
      /*definition du repere au dessus*/
      /*definition de la fonction et la derive*/
      var ff = function(x) { return \fjs; };
      var ffp=function(x) { return \fp;};
      /*trace de la fonction*/
      var fct= brd.create('functiongraph', [function(x){return ff(x);},-3,3],{strokeColor:'blue'});
      /*trace de la tangente*/
      jxgbox_rep1=brd.create('glider',jxgbox_var1,{name:'Bouge moi', strokeColor:'black',highlightFillOpacity:0});
      var ptan=brd.create('point',[function(){ return jxgbox_rep1.X()+1;},function(){ return jxgbox_rep1.Y()+ ffp(jxgbox_rep1.X());}],{visible:false});
      var tan=brd.create('line',[jxgbox_rep1,ptan],{strokeColor:'red'});
      var txt = brd.create('text', [0.5,\ytext,function(){
      return '<b>Abscisse du point "Bouge moi" : </b>'+ jxgbox_rep1.X().toFixed(2)
      +'<br /><b>Nombre dérivé =</b>'+((ptan.Y()-jxgbox_rep1.Y())/(ptan.X()-jxgbox_rep1.X())).toFixed(2)
      +'<br /><b>Équation de la tangente :</b><br /> y='+ ((ptan.Y()-jxgbox_rep1.Y())/(ptan.X()-jxgbox_rep1.X())).toFixed(2)+'x'
      +(-((ptan.Y()-jxgbox_rep1.Y())/(ptan.X()-jxgbox_rep1.X()))*ptan.X()+ptan.Y()).toFixed(2);
      }],{cssClass:'jsxx',fontSize:14});
      }
      
      \statement{
      Soit la fonction \(f) définie sur l'intervalle [\xmin,\xmax] par \(f(x)=\f)
      <div class="wimscenter">
      \embed{r3,900x500
      jxgbox
      \script
      jxgbox_var1=[0,0,fct]
      }
      </div>
      
      On note \(f') la fonction dérivée de la fonction \(f).<br />
      Calculer \(f'(x)) : \(f'(x)=)\embed{reply1,20}<br />
      <br />
      Déterminer la valeur de la dérivée pour \(x_0 = \x0) : \(f'(\x0))= \embed{reply2,10}<br />
      <br />
      Vérifier avec le graphique la valeur de la dérivée.<br /> }
      
      \answer{Dérivée de la fonction \(f) :}{\fp}{type=formal}
      \answer{Valeur de la dérivée en \(x_0 = \x0) :}{\p0}{type=numeric}
      \answer{}{\x0,\y0}{type=jsxgraph}{option=precision=10}
      matrix{rep=}
      real{test=abs(\rep[1;1]-\x0)}
      real{test1=abs(\rep[1;2]-\y0)}
      condition{Le point "Bouge moi" est bien placé. La valeur de son abcisse est de \(\x0)}{ \test < 0.1} 
    • #2914
      declieu69
      Participant
      Up
      0
      Down
      ::

      Merci, ça marche impec.
      Par contre pour le feedback, je ne suis pas sur d’avoir bien compris : tu proposes d’utiliser directement les commandes javascript de jsxgraph sans passer par la bibliothèque wims ? mais :

      • est-ce possible quand on crée un exo avec createxo (ce que je fait actuellement)?
      • Si je le fais dans un module oef, faut-il renseigner l’entête avec les deux fichiers spécifiques pour l’utilisation de jsxgraph ou cela est-ce fait systématiquement ?
      • Cette réponse a été modifiée le il y a 8 années et 11 mois par declieu69.
      • Cette réponse a été modifiée le il y a 8 années et 11 mois par declieu69.
      • Cette réponse a été modifiée le il y a 8 années et 11 mois par declieu69.
      • Cette réponse a été modifiée le il y a 8 années et 11 mois par declieu69.

      Thomas Charon
      Lycée Lumière à Lyon

    • #2919
      Julien
      Modérateur
      Up
      0
      Down
      ::

      Hello,

      Est-ce possible quand on crée un exo avec createxo (ce que je fait actuellement)? Oui sans aucun souci.
      Si tu le fais dans un module pas de problème non plus contrairement à la réponse que je t’avais faites sur le post ci-dessous où il fallait importer les anstype dans ton module.

      http://wimsedu.info/?topic=remplacement-des-reponses-analysees-automatiquement-type-coord

      Un exemple d’utilisation de feedback. Il est loin d’être parfait car il s’execute quelque soit la réponse de l’élève mais pour modifier c’est très classique.

      \title{WimsAnalyseJsxgraphCurseur}
      \language{fr}
      \range{-5..5}
      \author{Julien Lyotard}
      \email{Julien.Lyotard@ac-dijon.fr}
      \computeanswer{no}
      \format{html}
      \precision{10000}
      
      Définition de la fonction
      \integer{a=randint(1..5)}
      \function{f=\a*x^2}
      \function{f = pari(\f)}
      
      Repérage
      \real{xmin = -4}
      \real{xmax = 4}
      \integer{ymin = -2}
      \integer{ymax = 10}
      \integer{ytext= 8}
      
      \text{script= var brd = JXG.JSXGraph.initBoard('jxgbox', {axis:false, boundingbox: [\xmin,\ymax,\xmax,\ymin]});
      xaxis = brd.create('axis', [[0, 0], [1, 0]], {ticks: { ticksDistance: 1, insertTicks: false}});
      yaxis = brd.create('axis', [[0, 0], [0, 1]],{ ticks: { ticksDistance: 1, insertTicks: false}});
      /*definition du repere au dessus*/
      /*curseur*/
      jxgbox_rep1= brd.createElement('slider', [[1,2],[3,2],[1,2,5]],{name:'a',strokeColor:'black',fillColor:'red',snapWidth:1});
      /*definition de la fonction*/
      var ff = function(x) { return jxgbox_rep1.Value()*x*x; };
      /*trace de la fonction*/
      var fct= brd.create('functiongraph', [function(x){return ff(x);},-4,4],{strokeColor:'blue'});
      var txt = brd.create('text', [0.5,\ytext,function(){
      return 'y='+ jxgbox_rep1.Value().toFixed(0)+'x²'}],{cssClass:'jsxx',fontSize:14});
      }
      \statement{
      
      Tracer la courbe d'équation : \(y=\a x^2)
      <div class="wimscenter">
      \embed{reply1,800x600
      jxgbox
      \script
      jxgbox_var1=2}
      </div>
      }
      \answer{}{\a}{type=jsxgraph}{option=precision=5}
      \integer{aaa=}
      \condition{Le curseur est bien placé donc le tracé de la courbe est correct}{\aaa-\a=0}
      \feedback{1=1}{ <script> point=brd.create('point',[\a*0.5+0.5,2],{name:'Correction',Color:'green',fixed:'true'}); </script>}
      • Cette réponse a été modifiée le il y a 8 années et 11 mois par Julien.
      • Cette réponse a été modifiée le il y a 8 années et 11 mois par Julien.
Vous lisez 3 fils de discussion
  • Vous devez être connecté pour répondre à ce sujet.