Affichage conditionnelle dans une figure jsxgraph

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

Ce sujet a 2 réponses, 2 participants et a été mis à jour par  declieu69, il y a 2 ans.

  • Auteur
    Messages
  • #3152

    declieu69
    Participant

    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
    Participant

    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

    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 devez être connecté pour répondre à ce sujet.