legender: Créer une question demandant de placer des éléments à des...

legender_image.moodleR Documentation

Créer une question demandant de placer des éléments à des positions précises d'une image

Description

Cette fonction permet de créer une question dans laquelle le but est de placer des éléments sur une image.

Usage

legender_image.moodle( texte, titre = "L\u00e9gender...",
                       f.creer_figure,
                       fichier.image,
                       zones, marques,
                       ordre.aleatoire = TRUE, afficher.erreurs = TRUE,
                       commentaire.global = NA, penalite = NA,
                       note.question = NA, idnum = NA,
                       temps,
                       fichier.xml = get( "fichier.xml",
                                           envir = SARP.Moodle.env ),
                       ... )

Arguments

texte

L'énoncé de la question (une chaîne de caractères). Cet énoncé peut contenir n'importe quel caractère (codage en UTF-8) et n'importe quelles balises HTML.

titre

L'intitulé de la question, en HTML.

f.creer_figure

La fonction qui va construire l'image et les zones sur lesquelles déposer les éléments (voyez les détails, ci-dessous).

fichier.image

Le nom du fichier contenant l'image à légender. Ignoré si f.creer_figure est fournie.

zones

Une liste décrivant les zones de la figure. Le format est celui utilisé par f.creer_figure, voyez les détails ci-dessous; les coordonnées doivent cependant être données directement en pixels. Ignoré si f.creer_figure est fournie.

marques

Une data.frame décrivant les marques à placer sur la figure. Le format est celui utilisé par f.creer_figure, voyez les détails ci-dessous. Ignoré si f.creer_figure est fournie.

ordre.aleatoire

Si TRUE, l'ordre des marques est permuté aléatoirement dans le fichier

afficher.erreurs

Si TRUE, en cas de réponse incorrecte à la question, les réponses erronées sont identifiées.

commentaire.global, penalite, note.question, idnum

Options communes à toutes les questions Moodle, voyez debut_question.moodle.

temps

Le temps conseillé pour répondre à la question, en minutes.

fichier.xml

Le fichier correspondant au questionnaire qui contiendra cette question (par défaut, le dernier créé).

...

Arguments additionnels qui seront passés à f.creer_figure.

Details

Ce type de question affiche une image et, en-dessous, des étiquettes textuelles (code HTML possible) à placer sur l'image. Le placement de l'étiquette est défini par son coin supérieur gauche (qui est affiché sous forme de cible quand on la déplace). Les zones où placer les étiquettes sont invisibles et couvrent une surface libre de l'image, qui peut être rectangulaire, circulaire ou définie à l'aide d'un polygone.

Utilisation de la fonction f.creer_figure

Avec cette méthode, la fonction se charge de créer le fichier d'image (au format PNG, dans le dossier temporaire de R) avant d'appeler f.creer_figure. La fonction f.creer_figure peut alors utiliser tous les outils graphiques basiques de R pour créer une figure et les zones à légender sur cette figure. Elle ne doit pas clore la figure (pas d'appel à dev.off() ou à graphics.off.

La fonction f.creer_figure doit renvoyer une liste de deux éléments:

  • un élément nommé Marques qui définit les marques à placer sur la figure;

  • un élément nommé Zones qui définit les zones possibles pour placer ces marques.

L'élément Zones doit être une liste qui contient autant d'éléments que de zones à définir. Chaque élément est lui-même une liste qui doit contenir

  • un élément nommé Type qui définit, sous forme d'une chaîne de caractères, la forme géométrique de la zone. Moodle connaît trois types de forme: rectangulaire (chaîne à utiliser: “Rectangle”), circulaire (“Cercle”) et polygonale (“Polygone”).

  • un élément nommé Coord, qui doit être une data.frame contenant au moins deux colonnes appelées X et Y, et autant de lignes que de coordonnées nécessaires pour définir la zone. Pour une zone rectangulaire, la première ligne définit le coin supérieur, gauche et la seconde ligne le coin inférieur droit. Pour une zone polygonale, chaque ligne définit un sommet du polygone (il n'est pas nécessaire de répéter les coordonnées du premier sommet à la fin). Pour une zone circulaire, une seule ligne est nécessaire, définissant le centre du cercle. Le rayon du cercle doit être donné dans une troisième colonne, nommée Rayon.

Les coordonnées doivent être données en unités “utilisateur”, c'est-à-dire les coordonnées naturelles de l'image (celles des échelles des axes). La conversion en pixels sera faite automatiquement, à l'aide des fonctions grconvertX et grconvertY. En général, les échelles ne sont pas les mêmes pour les deux axes, de ce fait la conversion du rayon d'un cercle ne conduit pas à la même valeur suivant qu'il est considéré parallèle à l'axe des abscisses ou à l'axe des ordonnées (ce qui revient à dire qu'un cercle serait représenté par une ellipse sur la figure). La plus grande de ces deux valeurs est utilisée pour définir le rayon, en pixels, de la zone à créer. Si vous voulez contrôler parfaitement la forme de la zone, vous devez forcer le graphe à avoir les mêmes échelles dans les deux dimensions (option asp = TRUE dans plot).

L'élément Marques doit être une data.frame qui contient autant de lignes que de marques à placer. Cette data.frame doit avoir au moins une colonne nommée “Marque”, qui contient le texte de chaque marque (tout code HTML est possible et sera mis en forme par Moodle). Par défaut, chaque marque ne peut être utilisée qu'une fois. Pour préciser un nombre d'utilisation plus important, la colonne “Nombre” peut être utilisée (y compris avec la valeur +Inf).

Utilisation directe

Il est aussi possible de préciser une image quelconque, grâce à l'option fichier.image. Dans ce cas, les options zones et marques doivent contenir, respectivement, les zones à définir et les marques à placer, en utilisant le format ci-dessus. Seule différence, les coordonnées des points définissant les zones (et le rayon, pour une zone circulaire) doivent être exprimés directement en pixels.

Value

Aucune valeur n'est renvoyée par cette fonction.

Author(s)

Emmanuel Curis emmanuel.curis@parisdescartes.fr

See Also

glisser_deposer.moodle pour une autre façon de demander à placer des éléments sur une image; glisser_textes.moodle pour faire glisser des textes dans un texte à trou.


SARP.moodle documentation built on June 8, 2023, 6:37 a.m.