Affichage conditionnelle dans une figure jsxgraph

Accueil Forums Programmation WIMS Documents WIMS Affichage conditionnelle dans une figure jsxgraph

Vous lisez 2 fils de discussion
  • Auteur
    Messages
    • #3152
      declieu69
      Participant
      Up
      0
      Down
      ::

      Bonjour.

      J’essaie de reprendre un document que j’avais fait sur les équations réduites de droites (Niv Seconde) dans lequel j’avais inséré certaines figures geogebra. J’essaie de les remplacer par des figures JSXgraph. Dans ces figures, l’affichage des textes est conditionné aux valeurs des paramètres (coeff-directeur et ordonnées à l’origine). Sous géogebra, l’interface graphique permet d’obtenir un résultat très satisfaisant. Sous Jsxgraph, ça bloque : le code que j’ai tenté est le suivant

      \def{text a=slib(geo2D/jsxgraph jxgbox,500 x 500,
      var brd = JXG.JSXGraph.initBoard('jxgbox', {axis:true,boundingbox: [-8, 8, 8, -8], grid:true});
      var axey=brd.create('line',[0,1,0],{visible:false});
      var D=brd.create('line',[-1,1,0],{visible:false});
      var A=brd.create('glider',[0,1,axey],
      {name : 'A(0,p)',snapToGrid:true,label:{offset: [-10, 0],anchorX:'right',Color:'red'}});
      var B=brd.create('glider',[1,2,D],
      {snapToGrid:true,Color:'black',name:'B(1,\(y_B)=<FONT COLOR="red" >p</FONT>+<FONT COLOR="green" >m</FONT>)'});
      var C=brd.create('point',[function(){return B.X();},function(){return A.Y();}],{visible:false});
      var u=brd.create('line',[A,C],{lastArrow:true,straightFirst:false,straightlast:false,name:'+1',strokeColor:'orange'});
      var v=brd.create('line',[C,B],{lastArrow:true,straightFirst:false,straightlast:false,name:'+1',strokeColor:'green'});
      var d=brd.create('line',[A,B]);
      var m=function(){return (B.Y()-A.Y());};
      var ya=function(){return A.Y();};
      var t1=brd.create('text',[-7,7.2,function(){return 'L\'ordonnée  à l\'origine \(p) vaut '+ ya() +' (ordonnée de A)';}],{color:'red'});
      var t2=brd.create('text',[-7,6.2,function(){return 'Le coefficient directeur \(m) vaut '+m();}],{color:'green'});
      if( ya() < 0)
      	{var t3=brd.create('text',[-7,5.2,function(){return 'L\'équation réduite de la droite est \(y=) '+m()+'\(x-)'+(-ya());}],{color:'green'});}
      else 
      	{var t3=brd.create('text',[-7,4.2,function(){return 'L\'équation réduite de la droite est \(y=) '+(m())+'\(x+)'+ya();}],{color:'green'});}
      var text=brd.create('text',[-7,1,ya]);
      )}

      Le test « if » est toujours faux et c’est toujours la parti « else » qui est affichée. Si je remplace dans le test « ya() » par 1 ou -1, j’ai bien les deux affichages différents qui apparaissent. La dernière ligne du code est écrite pour voir si la fonction ya me donne bien la bonne valeur, ce qui est le cas.

      Si quelqu’un peut me débloquer, merci d’avance.

      Thomas Charon
      Lycée Lumière à Lyon

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

      Hello Thomas,

      Je pense que les questions spécifiques à jsxgraph devraient plutôt être posées sur le google group de jsxgraph en précisant la version utilisée 0.96. En plus les dev sont plus compétents.

      https://groups.google.com/forum/#!forum/jsxgraph

      Sinon ton code fonctionne mais l’évaluation du if s’effectue au chargement de la page dans le navigateur donc il faut créer un événement :

      var sign="+";
      A.on('drag', function(){if(A.Y()<0){sign="";}else{sign="+";};});
      var t3=brd.create('text',[-7,5.2,function(){return 'L\'équation réduite de la droite est \(y=) '+m()+'\(x)'+sign+ya();}],{color:'green'});

      Voili voilou

    • #3158
      declieu69
      Participant
      Up
      0
      Down
      ::

      Merci pour ta réponse qui fonctionne.
      Il y a aussi la fonction setProperty({visible:var}) qui doit me permettre d’y arriver, mais mes essais n’ont pas fonctionnés :(.

      Thomas Charon
      Lycée Lumière à Lyon

Vous lisez 2 fils de discussion
  • Vous devez être connecté pour répondre à ce sujet.