Toutes mes réponses sur les forums
-
AuteurMessages
-
Julien
Modérateur::Le points importants sont les suivants :
init=1 pour afficher l’applet d’initialisation
feedbackscript=Correction permet d’appeler une fonction javascript Correction
Si vous souhaitez que la correction apparaissent tout le temps on peut simplifier :
\feedback{1=1}{<script type="text/javascript"> function Correction(){ggbApplet0.evalCommand("commande de ggb"); </script>}
Une partie des commandes Géogébra sont dans la doc de la slib + un lien vers la totalité des commandes de ggb.
Voili voilou
Julien
Modérateur::Bonjour,
J’ai répondu sur votre boîte mail académique.
Je fais un copier coller :
Pour l’onglet d’initialisation la doc se trouve dans la documentation sur la bibliothèque de scripts liée à ggb.
init= par défaut 0 absence de bouton d’initialisation.
Si le paramètre est à 1, l’initialisation fonctionne quelque soit la figure. Par contre elle ne prend pas en compte l’initialisation du script effectué dans ggb par l’intermédiaire de ggbOnInit.
Si le paramètre est à 2, l’initialisation prend en compte uniquement les commandes tapées en mode texte dans la slib ou le anstype. Par contre on gagne en rapidité d’exécution.Pour obtenir l’onglet correction, la doc se trouve dans la documentation sur le type de réponse lié à ggb.
feedbackscript : Sa valeur est le nom d’une fonction javascript qui doit être définie en javascript correct dans le champ \feedback. Lors de l’analyse de la réponse, un bouton permet de lancer son exécution. Par défaut le nom du bouton est Correction.
namebutton : Sa valeur définit le nom du bouton.Le fichier oef suivant fait tourner l’applet assiette cassée réalisé par Daniel Mentrard. La correction est déjà réalisée.
\title{Assiette Cassée} \precision{10000} \integer{bb=randint(100..170)} integer{bb=-10} \real{aa=random(6.2..8)} integer{aa=-4} \integer{aaa=\aa*100} \real{aaaa=\aaa/100} \matrix{mm=} \text{appletoption=showMenuBar=false init=1 showToolBar=true customToolBar=0|2|15|3|4|8|5|38|36|40|6 file=assiettecasse11.ggb enableRightClick=true showToolBarHelp=false enableLabelDrags=false enableShiftDragZoom=true width=800 height=600 aa=\aa bb=\bb} \statement{ <div class="encadre"> <p class="problematique">Comment déterminer le rayon de l'assiette ?</p> <div class="enonce"> Au cours d'une soirée, Mélanie casse quelques assiettes de sa meilleur amie. Pour réparer le préjudice, elle souhaite racheter des assiettes. Afin que les nouvelles assiettes se fondent dans l'ancien service, elle souhaite connaître le rayon de celle-ci. <br /><i>Pour résoudre la problématique, la construction devra utiliser uniquement les points existants donc vous ne devez pas avoir de point bleu qui apparaissent.</i> <div class="wimscenter"> \embed{reply1, \appletoption} </div> <div class="question"> Le rayon des assiettes est de : \embed{reply2,4} cm </div> </div>} \answer{}{f,=LineBisector[A,B],La médiatrice du segment [AB] est construite; f,=LineBisector[B,C],La médiatrice du segment [BC] est construite; f,=LineBisector[A,C],La médiatrice du segment [AC] est construite;}{type=geogebra}{option=extra=yes precision=3 max=200 output=noobjet feedbackscript=Correction scenario=@:1:2@:1:3@:2:3@:1:2:3@} \answer{Rayon de l'assiette}{\aaaa}{type=numeric}{option=comma} \matrix{mm=\sc_reply1} \feedback{\mm[1;1] notin 1 or \sc_reply2!=1}{ <script type="text/javascript"> function Correction(){ggbApplet0.evalCommand("zz=LineBisector[A,B]"); ggbApplet0.evalCommand("zzz=LineBisector[A,C]"); ggbApplet0.evalCommand("zzzz=LineBisector[B,C]"); ggbApplet0.evalCommand("A_1=Intersect[zz,zzz]"); ggbApplet0.evalCommand("SetColor[zz,green]"); ggbApplet0.evalCommand("SetColor[zzz,green]"); ggbApplet0.evalCommand("SetColor[zzzz,green]"); ggbApplet0.evalCommand("SetColor[A_1,green]"); ggbApplet0.evalCommand("SetLineThickness[zz,7]"); ggbApplet0.evalCommand("SetLineThickness[zzz,7]"); ggbApplet0.evalCommand("SetLineThickness[zzzz,7]"); ggbApplet0.evalCommand("SetPointSize[A_1,7]"); ggbApplet0.evalCommand("ShowLabel[A_1,false]"); ggbApplet0.evalCommand("distanceAA_1=Distance[A, A_1]"); ggbApplet0.evalCommand('TexteAA_1=Name[A]+Name[A_1]+"="+distanceAA_1+"cm"'); ggbApplet0.evalCommand("SetColor[TexteAA_1,green]");} </script>}
Voili voilou
-
Cette réponse a été modifiée le il y a 8 années et 9 mois par
Julien.
Julien
ModérateurJulien
ModérateurJulien
ModérateurJulien
Modérateur::Bonjour,
Le cnrs propose la mise en place d’un serveur Wims à travers le collectif mathrice. Je pense que c’est l’alternative la plus intéressante.http://plm-doc.math.cnrs.fr/doc/spip.php?article69
voili voilou
Julien
Modérateur::Bonjour,
En modifiant le code oef comme ci-dessous, tu rajoutes bien 20 px en abscisse donc compatible avec une bordure de 20.
\text{ptc=} \text{ptccc=} \for{jj=1 to \n}{ \text{ptc=slib(draw/convpixel \x[\jj],\y[\jj],200,200,\xmin,\xmax,\ymin,\ymax,,pixels)} \integer{mm=\ptc[1]+20} \text{ptccc=\ptccc,\mm,\ptc[2]} } \text{ptc=wims(nonempty items \ptccc)}
voili voilou
Julien
Modérateur::Hi,
This link can possibly help you.
http://wimsedu.info/wiki/doku.php?id=installation:reinstaller_le_serveur
Julien
Modérateur::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
Julien
ModérateurJulien
Modérateur::Pour réaliser la tangente, cela sera plus simple d’utiliser le code suivant :
\title{lignes libres} \css{<style type="text/css"> .jxgbox {margin-left:auto;margin-right:auto;} .jsxgraph_button {text-align:center;} </style>} \text{dessin=draw(200,200 hline 100,100,black vline 100,100,black hline 100,150,black vline 150,100,black )} \statement{ Ecrire 10 : \embed{reply1} <br /> Tracer n'importe quelle ligne : \embed{r2,200x200 \dessin line } } \answer{}{10}{type=numeric} \answer{}{\rep}{type=jsxgraphcurve}{weight=0}
Julien
Modérateur::Tu as une librairie pour utiliser jsxgraph :
\title{test} \text{A=slib(geo2D/jsxgraph jsxbox,1000 x 500,var brd = JXG.JSXGraph.initBoard('jsxbox', {axis:false, boundingbox: [-10,20,30,-1]}); 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}});)} \statement{\A}
Le code pour jouer avec une image est dispo ici :
Julien
Modérateur::Bonjour,
Un petit exemple pour récupérer des variables :
\title{test} \steps{r1 r2} \statement{ \if{\step=1}{ Question permettant d'entrer les données : \embed{reply1}} \if{\step=2}{ Question analysée avec la variable libre : \embed{reply2}} } #data est une variable non usitée au préalable \answer{}{\data}{type=number}{option=noanalyzeprint} \answer{}{\dataanalyse}{type=number}{option=noanalyzeprint} \integer{Operation=3*\data} L'option hide est utile pour cacher l'analyse \condition{la bonne réponse est de \Operation € }{\dataanalyse=\Operation}{option=hide}
-
Cette réponse a été modifiée le il y a 9 années et 8 mois par
Julien.
Julien
Modérateur::Bonjour,
J’ai ce bout de code qui traîne. Après tu peux aller regarder dans les modèles QCM à la suite et passer en mode brut. Tu trouveras du code plus élaborer.
voili voilou
\title{Titre de l'exo} \language{fr} \author{} \email{} #4 pour 4 questions à la suite dans le désordre \text{n=shuffle(4)} #autant de ligne que de quetions en adpatant reply\n[_____] \matrix{\STEP=reply\n[1] reply\n[2] reply\n[3] reply\n[4]} \steps{\STEP} #tu peux ajouter des questions en rajoutant des lignes \matrix{qr=Question1 ????, reponse1 Question2 avec une virgule \(,) <= Une erreur classique ????, reponse2 Question3 ????, reponse3 Question4 ????, reponse4 } \statement{ \n <br /> \for{aa=1 to 4}{ \if{\step=\aa}{ \qr[\n[\step];1] \embed{reply\n[\step],10} } } } #Il faut autant de ligne que de questions en adaptant \qr[____;2] \answer{}{\qr[1;2]}{type=nocase}{option=nonstop} \answer{}{\qr[2;2]}{type=nocase}{option=nonstop} \answer{}{\qr[3;2]}{type=nocase}{option=nonstop} \answer{}{\qr[4;2]}{type=nocase}{option=nonstop}
Julien
ModérateurJulien
ModérateurJulien
Modérateur16 septembre 2015 à 10:11 en réponse à : jsxgraph et exercices à étapes : rafraîchissement de la figure #3085Julien
Modérateur::Bonjour,
Merci de poster un code qui fonctionne afin qu’on puisse se concentrer sur le problème…
\title{richard} \css{<style type="text/css"> .jxgbox {margin-left:auto;margin-right:auto;} .jsxgraph_button {text-align:center;} </style>} \computeanswer{no} \format{html} \precision{1000} \range{-5..5} \integer{angleincident=30} \integer{rayon=300} \integer{xpix=2*\rayon*1.2} \integer{ypix=2*\rayon*1.2} \real{xmin=-1.2} \real{xmax=1.2} \real{ysize=1} \real{ymin=-0.2} \real{ymax=1.2} %%% dessin du rapporteur \text{rapporteur=linewidth 1 frect 0,0,\xpix,\ypix/2,lightgray } \for{i=90 to 180 step 10}{ \real{ang=floor((\i*3.14/180)*1000)/1000} \text{rapporteur=\rapporteur line \xpix/2+\rayon*cos(\ang), \ypix/2-\rayon*sin(\ang), \xpix/2+\rayon*1.1*cos(\ang),\ypix/2-\rayon*1.1*sin(\ang), black} } \for{i=90 to 180 step 30}{ \text{rapporteur=\rapporteur text black, \xpix/2+\rayon*1.1*cos(\i*3.14/180),\ypix/2-\rayon*1.1*sin(\i*3.14/180),large, \i} } \text{rapporteur=\rapporteur line \xpix/2-0.1*\rayon, \ypix/2, \xpix/2+0.1*\rayon, \ypix/2, black line \xpix/2, \ypix/2-0.1*\rayon, \xpix/2, \ypix/2+0.1*\rayon, black } \text{dessin= draw( \xpix,\ypix \rapporteur ) } %%% fin du dessin \text{choix=oui,non} \text{reponse=2} \matrix{nstep = r1} \nextstep{\nstep} \integer{ok=0} \real{ecart1=} \real{angle=} \real{longueur=} \real{coss=} \statement{ \if{\ok=0}{ <p>1. <b>Tracer un trait passant par le centre et la graduation 120. (\angle)</b></p> \embed{r1,\xpix x \ypix \dessin sline} } \if{\ok=1}{ <p>1. Le trait a été tracé correctement.</p> <p>2. <b>cliquez sur NON.</b></p> \embed{r2,1}\embed{r2,2} } reply1=\reply1 <br /> angle=\angle <br /> ecart1=\ecart1 <br /> ok=\ok <br /> angleincidence=\angleincidence <br /> longueur =\longueur <br />rep=\rep<br />coss=\coss } \answer{}{\jstest}{type=jsxgraphcurve} {option=color1=blue color2=blue precision=8} \answer{}{\reponse;\choix}{type=click} {option=noanalyzeprint} \matrix{rep=\reply1} \real{longueur=sqrt((\rep[4]-\rep[2])*(\rep[4]-\rep[2])+(\rep[3]-\rep[1])*(\rep[3]-\rep[1]))} \real{coss=(\rep[3]-\rep[1])/\longueur} \if{\coss=0}{\real{angle=90}}{\real{angle=atan((\rep[4]-\rep[2])/(\rep[3]-\rep[1]))/3.14159*180}} \if{\angle<0}{\real{angle=180+(\angle)}} \real{ecart1=abs(\angle+\angleincident-90)} \condition{Votre tracé s'écarte de la valeur attendue de \ecart1 deg}{\ecart1<1} \if{\ok=1}{\text{nstep =}} \if{\ok=0}{ \if{\ecart1<1} { \text{nstep = r2} \integer{ok=1} } {\text{nstep = r1}} }
A priori ton exo fonctionne sur une version plus ancienne de Wims « WIMS-4.07c compilé le 2014-06-25. »
Bernadette, des modif ont eu lieu dans le module oef qui pourrait impacter ou pas ??
-
Cette réponse a été modifiée le il y a 9 années et 8 mois par
Julien.
Julien
Modérateur::Bonjour,
Le code suivant fonctionne.
++
\title{test} \text{a=randint(1..5), randint(1..5)} \text{b=randint(1..5), randint(1..5)} \text{script=var board = JXG.JSXGraph.initBoard('jxgbox',{boundingbox: [-20, 20, 20, -20],axis:true}); org = board.create('point', [0,0], {style:10,visible:true,fixed:true,name:' '}); jxgbox_rep1= board.create('point',jxgbox_var1,{style:5,color:'blue',name:'A'}); jxgbox_rep2= board.create('point',jxgbox_var2,{style:5,color:'blue',name:'B'}); var aaa=function(){return (jxgbox_rep1.X()+jxgbox_rep2.X())}; var bbb=function(){return (jxgbox_rep1.Y()+jxgbox_rep2.Y())}; xy=board.create('point',[aaa,bbb],{style:7,color:'green',name:'A+B'}); ax=board.create('arrow',[org,jxgbox_rep1],{strokeColor:'blue'}); ay=board.create('arrow',[org,jxgbox_rep2],{strokeColor:'blue'}); axy=board.create('arrow',[org,xy],{strokeColor:'red'}); ax2=board.create('arrow',[jxgbox_rep1,xy],{strokeColor:'blue',strokeWidth:1,dash:1}); ay2=board.create('arrow',[jxgbox_rep2,xy],{strokeColor:'blue',strokeWidth:1,dash:1}); } \statement{ Mettre le point A en (\a). Mettre le point B en (\b). \embed{r1,400x400 jxgbox \script jxgbox_var1=[1,2] ;jxgbox_var2=[-2,-3] } } \answer{}{\a;\b}{type=jsxgraph}{option=precision=10}
Julien
Modérateur::Merci pour les précisions.
Avec un peu de retard je te confirme que l’option precision est exprimée en pixel.
C’est le bout de code suivant qui ne fonctionne pas dans javacurve.line et ses acolytes.
!if NaN isin $ra$rb$rc or $rm<$precision 10 : reply$i= 11 : test=NaN 12 : !exit
Le test NaN isin $ra$rb$rc est incorrect.
Le code suivant fonctionne mais les autres options sont buggées.
\title{ Droite} \precision{100} \text{dessin=draw(800,300 hline 400,150,black vline 400,150,black hline 600,75,black vline 600,75,black text black,400,150,large,O text black,600,75,large,A ) } \statement{ Tracer la droite passant par 0 et par A. \embed{r1,800x300} reply= \reply1 } \answer{}{\dessin;points,\reponselibre}{type=jsxgraphcurve} \condition{analyse qui fonctionne}{1=1}
Voili voilou
-
Cette réponse a été modifiée le il y a 8 années et 9 mois par
-
AuteurMessages