Licence d'Informatique

340 - Informatique Graphique


Devoir 2 - à réaliser individuellement ou en binôme et à rendre le 12 juin 1996

Loi de Fitts

En 1954, Paul Fitts a mis au point un modèle permettant de calculer le temps nécessaire à un opérateur pour déplacer un dispositif de pointage placé à une distance D d'une cible de largeur L. Sa formule est :

T = C1 + C2 log2(2D / L)

où T est le temps en secondes et C1 et C2 sont deux constantes qui dépendent du dispositif, D la distance à la cible et L la largeur de la cible (voir schéma ci-dessous).

L'objectif de ce devoir est de vérifier cette loi en menant à bien une expérience qui doit utiliser un programme pour l'acquisition de données expérimentales et leur analyse/visualisation. Ce programme doit proposer des cibles de différentes largeurs à différentes distances de la position du pointeur et recueillir dans un fichier la distance, la largeur et le temps mis par l'opérateur pour cliquer dans la cible.

Mode opératoire

Le choix des largeurs de cible et de distances doit être aléatoire, utilisant la fonction rand() de UNIX, qui retourne à chaque appel une valeur pseudo-aléatoire comprise entre 0 et RAND_MAX (RAND_MAX vaut en général 32767). Si la position calculée avec rand() sort de l'écran, une autre position doit être calculée.

Par exemple, pour obtenir un nombre aléatoire entre a et b, on peut utiliser l'expression suivante (attention, l'ordre des opérations est important) :

rand() * (b-a) / RAND_MAX + a
 

Une expérience est constituée de n séries de p essais. Plusieurs essais sont faits à la suite, entre 10 et 30 suivant la décision de l'opérateur, qui peut interrompre une série en utilisant la touche espace. Le programme affiche un rectangle au milieu de l'écran et attend que l'opérateur clique dessus. Il affiche alors un cible placée aléatoirement et enregistre le temps requis pour que l'opérateur clique dessus. Si l'opérateur clique à côté, l'essai est mémorisé mais marqué comme erroné. À la fin de la série, le programme propose à l'opérateur de sauvegarder les données ou de les oublier. Une série est sauvegardée dans un fichier sous un format précis afin de faciliter le traitement.

Pour procéder à l'expérience, il est essentiel de supprimer les corrections d'accélération appliquées au pointeur par le système de fenêtrage. Dans le système X, la commande shell suivante supprime cette correction :

xset m 1 1

Format du fichier

Le nom du fichier doit commencer par votre nom de login UNIX, suivi d'un nombre de quatre chiffres, et avoir le suffixe .fits. Par exemple, le premier fichier sauvegardé chez moi s'appellerait jdf0001.fits. Ce fichier commence par une première ligne indiquant la date (au format UNIX), une ligne contenant le nom de l'opérateur et une ligne contenant le nom du serveur X utilisé (la variable $DISPLAY ou le hostname) et une ligne vide pour signaler la fin de l'en-tête. Les lignes suivantes décrivent les expériences avec 5 colonnes : la position du centre de la cible par rapport au milieu de l'écran sous la forme de deux nombres dx et dy en pixels, la largeur de la cible, le temps en milli-secondes et 0 si aucune erreur ne s'est produite ou 1 en cas d'erreur.

Par exemple, le fichier jdf0001.fits pourrait contenir les lignes suivantes :

Wed May 22 15:18:00 1996
Jean-Daniel Fekete
pcx110.lri.fr
 
-30 -50 120 200 0
30 213 120 98 0
...
340 531 32 121 1
...

Travail à réaliser

Le travail à réaliser est le suivant :

Le code source de la bibliothèque Raster et de la fonction time_milli seront donnés au cours des TD.

Le travail peut être fait en binôme. Un dossier doit être rendu. Les sources des programmes et les données expérimentales doivent être envoyés par courrier électronique à l'adresse jdf@lri.fr. Chaque message ne contiendra qu'un fichier dont le nom sera indiqué dans le sujet du message.

Le travail doit être rendu le mercredi 12 juin au début du TD. Les messages doivent être arrivés avant le TD.


Jean-Daniel Fekete et Michel Beaudouin-Lafon