Remplacement des réponses analysées automatiquement type coord

Accueil Forums Programmation WIMS Programmation d’exercices OEF Remplacement des réponses analysées automatiquement type coord

Vous lisez 15 fils de discussion
  • Auteur
    Messages
    • #1877
      declieu69
      Participant
      Up
      0
      Down
      ::

      Bonjour.

      Je souhaite faire un exercice utilisant le type coord pour déterminer si un point est sur une droite. Je voulais donc récupérer les coordonnées de la réponse puis calculer la distance du point cliqué à la droite. Dans le cas du type numeric, il est indiqué dans la documentation qu’il suffisait d’utiliser une variable non utilisée, mais come ici le type coord utilise deux arguments et deux variables pour réponses, je ne suis pas sûr de ce qu’il faut faire. J’ai tenté le morceau de code suivant :

      
      \answer{}{\graphique1;point,\x1,\y1}{type=coord}
      \real{x1=(\x1+260)/100}
      \real{y1=(\y1+260)/100}
      \real{d1=abs(\a*\x1+\b*\y1+\c)/sqrt(\a^2+\b^2)}
      \condition{ condition à cacher }{ \d1<0,1  }{ option=hide }{ weight=1 }
       

      mais cela ne marche pas.

      Merci pour votre aide.

      Thomas Charon
      Lycée Lumière à Lyon

    • #1878
      bernadette
      Maître des clés
      Up
      0
      Down
      ::

      Ce n’est en effet pas possible dans l’état actuel. Ce que tu peux faire, c’est
      mettre une zone « rectangle » autour de la droite en pixels. J’ai fait un cas simple
      car vertical ! Si ensuite tu veux réanalyser la réponse, utilise \reply1
      (mais fais attention, il y a des parenthèses) :

      \text{dessin=draw(200,200
      vline 100,100,black)}
      \statement{\embed{r1, 200x200}}
      \answer{}{\dessin;rectangle,98,0,102,200 }{type=coord}
      \feedback{1=1}{\reply1 \result1}
      \text{rep=wims(declosing \reply1)}
    • #1879
      declieu69
      Participant
      Up
      0
      Down
      ::

      Merci Bernadette.
      Effectivement, ça marche !
      Le soucis par contre, c’est qu’en fait, je veux bien sûr que les élèves trouvent deux points distincts qui soient sur la droite. Du coup, que puis-je faire pour utiliser une condition supplémentaire afin de vérifier que les deux points « cliqués » ne sont pas les mêmes.
      En fait j’aimerai faire le même exercice que celui-ci http://portail.lyc-auguste-et-louis-lumiere.ac-lyon.fr/wims/wims.cgi?module=devel/tcharon/H3~geometry~affine.fr qui est un module que tu as fait sur les fonctions affines et pour lequel j’ai juste modifié l’énoncé pour utiliser le vocabulaire de droites mais j’aurais voulu en plus ajouter le cas « x=k ».
      Si les modifs de l’énoncé de ton module sont très simples à faire, la modification des données me semblaient plus compliquées.
      Du coup, je suis parti sur mon propre exo. Reste à savoir s’il peut aboutir, c’est à dire si je peux vérifier que mon deuxième point est distinct du premier.

      • Cette réponse a été modifiée le il y a 10 années et 2 mois par declieu69.

      Thomas Charon
      Lycée Lumière à Lyon

    • #1881
      bernadette
      Maître des clés
      Up
      0
      Down
      ::

      De toute façon, avec le type coord tu es obligé de faire cela en deux étapes.
      Rien ne t’empêche de rajouter des conditions à l’analyse faite par wims.
      (une fois récupéré reply1 et reply2, il suffit de tester que les deux points sont
      distincts).

      Sinon, tu peux peut-être utiliser le type jsxgraphcurve en faisant directement
      tracer la droite en question.

      Bernadette

    • #1899
      declieu69
      Participant
      Up
      0
      Down
      ::

      Merci pour ta réponse.
      Je me suis remis au travail ce week-end et j’ai donc opté pour la récupération de reply1 et reply2 (j’ai un peu galéré car le type coord donne un couple entre parenthèses et pas une liste de deux items. Heureusement Paul Byache ma donnait une solution.
      Par contre, j’aurais aimé à ma deuxième étape faire apparaître le premier point cliqué. Etant donné que lors de l’analyse de la réponse de l’étape 1, le graphique qui m’intéresse est affiché avec le point cliqué, est-il possible de récupérer le graphique « analyse de la réponse 1 », pour pouvoir cliquer dessus à l’étape 2 ?
      Je mets un lien sur l’exo concerné si ça peut aider à comprendre la situation (j’ai enlevé les options noanalyzeprint pour faire apparaitre le graphique qui m’interesse, mais à terme, je les remettrai).

      D’autres part, j’ai fait un petit module concernant les équations de droites qui inclus les droites « verticales » (peu utilisées dans les exos existants). Plutôt que de publier le module, je pense qu’il serait mieux de l’incorporer à un module existant pour éviter de les multiplier. Est-ce possible ? Si oui, comment procède-t-on ?

      Cordialement

      Thomas Charon
      Lycée Lumière à Lyon

    • #1907
      bernadette
      Maître des clés
      Up
      0
      Down
      ::

      Ben, normalement, on envoie le module à l’auteur. C’est moi ici ?
      Si l’auteur ne répond pas, on envoie à qualite@wimsedu.info
      avec un petit mot d’explication.

      Merci beaucoup pour la contribution.

      Pour la question récupération de l’analyse de réponse,
      je pense que c’est un des trucs que j’ai fait récemment et que cela sera accessible avec la variable \reply_1 etc …
      Mais il faudra attendre la 4.07b …

      Envoie moi le source, je vérifierai que cela fonctionne sur ma version de développement, ce qui me fera un bon test de débogage !
      Mais je ne suis pas sûre que cela soit exactement ce que tu veux.
      Tu peux aussi refaire le dessin en rajoutant les boules (mets juste un point de couleur) avec les coordonnées que tu as dans \reply1

      Bernadette

      Bernadette

      Bernadette

      • #2608
        declieu69
        Participant
        Up
        0
        Down
        ::

        Bonjour.

        Comme j’attaque les équations réduites de droites avec les secondes, j’ai repris mon module.
        Il est, me semble-t-il, presque publiable mais je bute toujours sur le deuxième graphique à afficher lorsque je veux plcer deux points d’une droite dont on connait l’équation réduite.

        J’ai créé le texte du second graphique dans la partie avant « statement » et le point n’est pas celui surlequel on a cliqué à la première étape, mais situé à l’origine du repère, ce qui paraît logique puisque l’image est créée est stockée avant l’analyse du statement.
        J’ai essayé à tout hasard après le statement (sans grande conviction) et bien sûr cela n’a pas marché. Du coup, je ne vois pas trop comment m’y prendre. Est-ce que l’utilisation d’un \nextstep au lieu de \steps pourrait résoudre mon problème ? Sinon, que faire ?

        Cordialement

        Thomas Charon

        PS : Désolé Fabien, je viens de découvrir ton message. Si tu le souhaites, je peux t’envoyer une copie de ce module, en attendant que je demande à le publier …

        Thomas Charon

        Thomas Charon
        Lycée Lumière à Lyon

    • #1978
      Fabien Sommier
      Participant
      Up
      0
      Down
      ::

      Bonjour,
      A peu près au moment moment j’ai eu aussi envie d’adapter le travail de Bernadette sur les fonctions affines, en version équations de droites.
      Pas eu le temps de faire un travail propre là dessus (dans l’urgence j’ai dupliqué et modifié ce dont j’avais besoin) ; Thomas, où en es-tu sur ce sujet ? Ca m’intéresse 🙂
      Merci,
      Fabien.

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

      Bonjour,

      Si tu veux un coup de main, publie ton code et explique précisément tes attentes. La différence entre \nextstep et \steps est la suivante :

      • Dans le premier cas tu ne connais pas le nombre d’étapes et il peut évoluer selon l’analyse des variables
      • Avec \steps ton exercice évolue de manière déterministe.

      @+

    • #2610
      declieu69
      Participant
      Up
      0
      Down
      ::

      Bonjour.

      En fait l’exercice est le suivant : http://194.199.75.183/wims/wims.cgi?module=local/geometry/eqdroite.fr&cmd=new&exo=exo2.

      Le fichier source (trop long pour être copié) est disponible à l’adresse suivante : https://www.dropbox.com/s/hocu2wxq4tjog8c/exowims_trac%C3%A9_droite.txt?dl=0

      Je souhaite en fait qu’à la seconde étape, le premier point cliqué apparaisse. Actuellement, ça ne marche pas : c’est l’origine qui apparait car la figure créée pour la seconde étape (variable « graphique2 ») n’est pas « reconstruite » entre la première étape et la seconde, du coup les variables qui récupèrent les coordonnées du premier point (Xsol1 et Ysol1) sont encore vides lors de la construction de la figure, ce qui fait apparaitre l’origine !

      J’avais compris l’utilisation première de \nextstep qui permet de modifier la variable où sont entrées les réponses évaluées entre chaque étape. Du coup, je me demandais si cela permettait aussi d’évaluer d’autres variables aux étapes intermédiaires (quelque chose du type \nextstep{\mat_rep,\graphique2} et après le statement, faire évaluer graphique2 lorsque \step=2) ?

      Merci pour votre aide

      Cordialement

      Thomas Charon
      Lycée Lumière à Lyon

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

      Bonjour,

      Le code proposé devrait fonctionner. La variable graphique2 n’est pas rechargée dans le \answer alors qu’on affiche très facilement le graphique à la deuxième étape en ajoutant : <img src="\graphique2" />

      J’ai testé avec jsxgraphcurve et c’est le même constat l’image ne recharge pas même en utilisant le nexstep.

      Par conséquent je te propose 2 solutions. Une facile mais qui ne correspond pas vraiment à ce que tu veux et une plus difficile qui te permettra de configurer l’exo aux petits oignons
      facile

      \title{WimsAnalysejsxgraphDroite}
      \language{fr}
      \range{-5..5}
      \computeanswer{no}
      \format{html}
      \precision{10000}
      
      \real{a=randint(-5..5)}
      \real{b=randint(-5..5)}
      
      \function{f=\a x+ \b}
      \function{f=pari(\f)}
      
      \real{yA=evalue(\f,x=5)}
      \real{yB=evalue(\f,x=-5)}
      \real{yApixel=600/2-\yA*600/16-2}
      \real{yBpixel=600/2-\yB*600/16-2}
      
      \text{point=slib(graphpaper/millimetre 10,8,5,4,1,2,[255,255,255],[190,190,190],,,)}
      \text{urlpoint = draw(0,0
      \point)}
      
      \statement{
      Tracer la droite (d) d'équation : \(y=\f)
      \embed{reply1, 800 x 600}
      }
      \answer{}{\urlpoint;line,4,\yBpixel,804,\yApixel}{type=jsxgraphcurve}{option= precision=2 color1=blue color2=green}

      difficile

      \title{Exemple de jsxgraph}
      \precision{100}
      
      \text{ nstep=reply1 }
      \nextstep{\nstep}  
      
      \text{a=randint(1..5), randint(1..5)}
      \text{b=randint(1..5), randint(1..5)}
      \text{script= var brd1 = JXG.JSXGraph.initBoard('jsxbox', {
       axis:true,boundingbox: [-6, 6, 6, -6], grid:true});
      ;}
      
      \text{script1= var brd2 = JXG.JSXGraph.initBoard('jsxbox', {
       axis:true,boundingbox: [-6, 6, 6, -6], grid:true});
      ;}
      
      \statement{Mettre le point A en (\a).
      Mettre le point C sur la droite AB.
      \if{\step=1}{ \embed{r1,400x400
      jsxbox
      \script
      }}
      \if{\step=2}{\embed{r2,400x400
      jsxbox
      \script1
      }}
      \reply1
      }
      
      \text{script1= var brd2 = JXG.JSXGraph.initBoard('jsxbox', {
       axis:true,boundingbox: [-6, 6, 6, -6], grid:true});
      brd2.create('point',[\c]);
      ;
      }
      
      \answer{}{\c}{type=jsxgraph}{option= freepoint nonstop noanalyzeprint}
      \answer{}{\e}{type=jsxgraph}{option= freepoint}
      
      \matrix{rep=\reply1}
      \real{test=abs(\rep[1;1]-1)}
      \condition{premier sur la droite d'équation x=1}{ \test < 0.1}
      \text{nstep = (\step = 2)?reply2}
      
      

      Un lien vers les différentes commandes de jsxgraph:
      http://jsxgraph.uni-bayreuth.de/distrib/jsxgraph_refcard.pdf

      @+

      • Cette réponse a été modifiée le il y a 9 années et 2 mois par Julien.
      • Cette réponse a été modifiée le il y a 9 années et 2 mois par Julien.
      • Cette réponse a été modifiée le il y a 9 années et 2 mois par Julien.
      • Cette réponse a été modifiée le il y a 9 années et 2 mois par Julien.
    • #2630
      declieu69
      Participant
      Up
      0
      Down
      ::

      Bonsoir.

      Merci pour ta réponse et le lien pour le memo sur jsxgraph. Je crois que je vais m’y plonger un peu plus pour pouvoir me passer de geogebra et surtout de java qui pose de plus en plus de problème avec ses mises à jour.

      La première solution marche très bien et a été facile à mettre en place.

      Par contre pour la seconde, je n’ai pas tout compris (l’exercice ne fonction d’ailleurs pas : la réponse est dans une variable \c qui n’est pas définie …). Je vais regarder cela plus attentivement ce soir.

      Merci encore.

      PS : as-tu un lien un peu plus complet sur l’utilisation du type jsxgraphcurve ?

      Thomas Charon
      Lycée Lumière à Lyon

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

      Hello,

      Le second exercice est juste un brouillon qui m’a permis de valider l’utilisation de jsxgraph pour faire exactement le même exo avec les étapes. La question aurait du être « Mettre le point A sur la droite d’équation x=1. » pour avoir un truc qui fonctionne mais ce n’était pas le but. Je pensais que le code parlait de lui même.

      L’ensemble de la doc sur jsxgraphcurve est présent en suivant le lien : http://wimsauto.di.u-psud.fr/wims/wims.cgi?session=WH5D8FEAA4_help.1&+lang=fr&+module=adm%2Fcreatexo&+cmd=help&+special_parm=all et en faisant une recherche texte sur jsxgraphcurve et javacurve. Les 2 types de questions ont un fonctionnement identique.

      Si tu as des questions précises sur jsxgraphcurve, je devrais pouvoir répondre.

      @+

      • Cette réponse a été modifiée le il y a 9 années et 2 mois par Julien.
    • #2641
      bernadette
      Maître des clés
      Up
      0
      Down
      ::

      Dans le code de Julien, je ne comprends pas pourquoi tu écris
      draw(0,0
      etc)
      la première ligne est la taille de l’image, cela transforme peut-être avec des valeurs par défaut, mais cela n’est documenté nulle part, et je pense qu’il vaut mieux mettre une valeur vraie. A moins qu’il n’y ait une autre raison.

    • #2642
      bernadette
      Maître des clés
      Up
      0
      Down
      ::

      Il n’est en effet pas possible de mettre dans les champs de
      \answer{}{} …
      autre chose que des quantités précalculées. On ne peut donc pas utiliser la réponse de l’élève dans les champs de answer.
      L’astuce avec le type jsxgraph et cela est peut-être possible ailleurs
      est que tout le champ peut être dans une variable pas encore défini
      et qu’on reporte le dessin dans le champ \embed{}. En faisant cela, je n’avais pas eu conscience que cela permet de passer à travers la restriction du départ !
      Cela n’a pas été prévu pour le type coord où le champ ne peut pas être une indéterminée. Et je ne suis pas sûre que j’ai envie de refaire le hack de jsxgraph pour le type coord, car il n’est pas très stable !

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

      Hello Bernadette,

      La commande draw était buggée à l’époque et la taille de l’image était imposée dans par le embed. Je crois que tu as débuggé mais le copier coller à été plus fort que moi.

      @+

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

      Bonjour,

      Pour que le type jsxgraphcurve fonctionne correctement, j’ai commis les fichiers /anstype/jsxgraphcurve.input et anstype/jsxgraphcurve sur https://sourcesup.renater.fr/scm/websvn.php/?root=wimsmodules&group_id=410&public=1

      A priori cela n’impacte pas les versions précédentes.

      Les modifications suivantes sont à faire dans l’activité :
      \if{\step=2}{Placer un <b>second point</b> de la droite sur le graphique <br>\embed{reply2,520×520
      \graphique2}}

      \answer{}{\graphique1;polygon,\X1,\Y1,\X2,\Y2,\X3,\Y3,\X4,\Y4}{type=coord}{option=analyzeprint}{weight=1}
      \answer{}{embed;points,100,200}{type=jsxgraphcurve}{option=analyzeprint}{weight=3}

      • Cette réponse a été modifiée le il y a 9 années et 2 mois par Julien.
Vous lisez 15 fils de discussion
  • Vous devez être connecté pour répondre à ce sujet.