Académique Documents
Professionnel Documents
Culture Documents
eric lecolinet
telecom-paristech
www.enst.fr/~elc
INTERACTION HOMME-MACHINE
! IHM (HCI)
- Conception
- Implémentation
interfaces homme-machine - Evaluation
partie 1 • de systèmes interactifs
• destinés à des humains
eric lecolinet
get / enst THE PEBKAC PROBLEM...
www.enst.fr/~elc
IHM Conséquences
THE PEBKAC PROBLEM
! Conception, implémentation, évaluation Problem
! Pluridisciplinarité
– de systèmes interactifs Exists – Ingénierie
Between
– destinés à des humains • informatique, génie logiciel, électronique ...
Keyboard
And
– Facteurs humains
Chair
• ergonomie, psychologie cognitive, sociologie ...
– Design
• design industriel, arts graphiques, typographie
Page 3 IHM > Introduction - Eric Lecolinet - ENST Paris Page 4 IHM > Introduction - Eric Lecolinet - ENST Paris
Enjeux (1) Le cas du Mont Saint Odile
Page 5 IHM > Introduction - Eric Lecolinet - ENST Paris Page 6 IHM > Introduction - Eric Lecolinet - ENST Paris
! 1. Les IHMs sont omniprésentes et incontournables ! La science, la technique s’adaptent à l’utilisateur ...
– élément de productivité essentiel ... – et non l’inverse !
– informatiser au lieu d’automatiser
! 2. Le coût de développement des IHMs est très élevé
– souvent 50% (ou plus) du code / du travail total !
Page 7 IHM > Introduction - Eric Lecolinet - ENST Paris Page 8 IHM > Introduction - Eric Lecolinet - ENST Paris
Méthode classique « en cascade » Conception itérative
conception
analyse
analyse implémentation
conception
évaluation
implémentation
utilisateurs
tests
– réalisation rapide de prototypes ou de « mock ups »
– approche empirique (essais-erreurs): aspect chaotique de la conception...
utilisateurs
Page 9 IHM > Introduction - Eric Lecolinet - ENST Paris Page 10 IHM > Introduction - Eric Lecolinet - ENST Paris
– Dix, Hartson
Page 11 IHM > Introduction - Eric Lecolinet - ENST Paris Page 12 IHM > Introduction - Eric Lecolinet - ENST Paris
Conception participative Styles d’interaction
! Utilisateurs
– experts du domaine
concerné
– prennent un rôle actif
dans la conception
! Importance des
facteurs humains ! Conversationnel
– Faire « entrer l’humain – langage de commande (e.g. Shell Unix)
dans la boucle » – dialogue imposé par système
=> utilisateurs « experts »
Page 13 IHM > Introduction - Eric Lecolinet - ENST Paris Page 14 IHM > Introduction - Eric Lecolinet - ENST Paris
! Manipulation directe
! Menus, formulaires – dialogue contrôlé par l’utilisateur
– dialogue contrôlé par le système – métaphores
– interaction limitée • « métaphore du bureau »
– contrôle a posteriori – représentation permanente
– exemple: Web 1.0
– apprentissage exploratoire
• opérations rapides, incrémentales, réversibles
Page 15 IHM > Introduction - Eric Lecolinet - ENST Paris Page 16 IHM > Introduction - Eric Lecolinet - ENST Paris
Nouvelles techniques d’interaction Un peu d’histoire ...
Page 17 IHM > Introduction - Eric Lecolinet - ENST Paris Page 18 IHM > Introduction - Eric Lecolinet - ENST Paris
Page 19 IHM > Introduction - Eric Lecolinet - ENST Paris Page 20 IHM > Introduction - Eric Lecolinet - ENST Paris
Un peu d’histoire ... Un peu d’histoire ...
Page 21 IHM > Introduction - Eric Lecolinet - ENST Paris Page 22 IHM > Introduction - Eric Lecolinet - ENST Paris
Page 23 IHM > Introduction - Eric Lecolinet - ENST Paris Page 24 IHM > Introduction - Eric Lecolinet - ENST Paris
Un peu d’histoire ... Un peu d’histoire ...
Page 25 IHM > Introduction - Eric Lecolinet - ENST Paris Page 26 IHM > Introduction - Eric Lecolinet - ENST Paris
Page 27 IHM > Introduction - Eric Lecolinet - ENST Paris Page 28 IHM > Introduction - Eric Lecolinet - ENST Paris
Un peu d’histoire ... Modèle WIMP, métaphore du bureau
Quoi de neuf ?
! 1990: World Wide Web (CERN)
– modèle d’hypertexte
en réseau
– article refusé à la
prestigieuse conférence
« ACM Hypertext » !
! Mac OS X (2002) versus Xerox Star (1981) ?
! Quoi de neuf ? Nouveaux besoins, évolutions futures ?
Page 29 IHM > Introduction - Eric Lecolinet - ENST Paris Page 30 IHM > Introduction - Eric Lecolinet - ENST Paris
Eric Lecolinet
www.enst.fr/~elc
ENST / INFRES
! Exemple de feedback
Page 1 IHM > ArchiLog- Eric Lecolinet - ENST Paris Page 2 IHM > ArchiLog- Eric Lecolinet - ENST Paris
! Problème
– spécifier de manière non ambiguë le comportement
– en particulier pour travail en équipe !
– génération de code éventuelle avec certains systèmes
! PPS
– Color ( Black, White, Red )
– Input ( .MouseDown, .MouseMove, .MouseUp ) // noter le point
– .MouseUp, Shift -> !DoMultipleSelect, InSelectMode
Page 3 IHM > ArchiLog- Eric Lecolinet - ENST Paris Page 4 IHM > ArchiLog- Eric Lecolinet - ENST Paris
UAN Principe de séparation
! Principe de base de conception des IHMs
Page 5 IHM > ArchiLog- Eric Lecolinet - ENST Paris Page 6 IHM > ArchiLog- Eric Lecolinet - ENST Paris
utilisateurs
! Conception participative
– les utilisateurs prennent un rôle actif dans la conception
Page 7 IHM > ArchiLog- Eric Lecolinet - ENST Paris Page 8 IHM > ArchiLog- Eric Lecolinet - ENST Paris
Modèle Langage Modèle de Seeheim
! 3 composantes :
– Lexicale: vocabulaire d’entités d’entrée-sortie
• ex: primitives et objets graphiques de base, sons ...
Page 9 IHM > ArchiLog- Eric Lecolinet - ENST Paris Page 10 IHM > ArchiLog- Eric Lecolinet - ENST Paris
Page 11 IHM > ArchiLog- Eric Lecolinet - ENST Paris Page 12 IHM > ArchiLog- Eric Lecolinet - ENST Paris
Communication par envoi de messages Caractéristiques et réalisation
! Réalisation
– langage objets, généralement « statiques » : Java, C++, C#
! Message = couple
– parfois plus « dynamiques » : Objective-C (MacOSX)
– sélecteur =
opérateur du destinataire – voire même en C (X-Window)
– données =
paramètres de cet ! Envoi de message
opérateur
– se réduit généralement à de l’appel de méthode
! Encapsulation : ! Caractéristiques
séparation entre: – organisation modulaire (souvent hiérarchique)
– spécifications externes – gestion décentralisée
(filtre ou port d’entrée) – réutilisabilité :
– implémentation interne • héritage, composition, décoration
• peu de classes, beaucoup d’instances
Page 13 IHM > ArchiLog- Eric Lecolinet - ENST Paris Page 14 IHM > ArchiLog- Eric Lecolinet - ENST Paris
Widgets
Page 15 IHM > ArchiLog- Eric Lecolinet - ENST Paris Page 16 IHM > ArchiLog- Eric Lecolinet - ENST Paris
Modèles homogènes / hétérogènes Modèle PAC
(Joelle Coutaz, IMAG)
! Modèle multi-agents = modèle général : ! Modèle homogène multi-agents
– pas d’indication sur la manière d’organiser un système interactif
! Objets interactifs multi-facettes
! Modèles homogènes
– GUI = graphe de noeuds multi-facettes (ou multi-composantes)
– modèle PAC ! Structuration PAC
– toolkits Motif, Qt, Gtk ... – Présentation
– Contrôle
– Abstraction
! Modèles hétérogènes
– GUI = graphe de noeuds spécialisés
– modèle MVC
– toolkits Swing, Amulet, Ubit...
Page 17 IHM > ArchiLog- Eric Lecolinet - ENST Paris Page 18 IHM > ArchiLog- Eric Lecolinet - ENST Paris
! Note
– il existe des variantes de MVC
(voir plus loin) source: enode.com
source: enode.com
Page 19 IHM > ArchiLog- Eric Lecolinet - ENST Paris Page 20 IHM > ArchiLog- Eric Lecolinet - ENST Paris
MVC et Swing MVC et Swing
Page 21 IHM > ArchiLog- Eric Lecolinet - ENST Paris Page 22 IHM > ArchiLog- Eric Lecolinet - ENST Paris
! Grammaires
– langages de description de syntaxe (ex: UAN vu précédemment)
– production automatique de code avec certains systèmes
Leave / B Enter / C
source: Sun
Page 25 IHM > ArchiLog- Eric Lecolinet - ENST Paris Page 26 IHM > ArchiLog- Eric Lecolinet - ENST Paris
Page 27 IHM > ArchiLog- Eric Lecolinet - ENST Paris Page 28 IHM > ArchiLog- Eric Lecolinet - ENST Paris
Outils interactifs Outils interactifs
! Avantages
– prototypage
– utilisables par des
non informaticiens
! Inconvénients
– gèrent essentiellement
la présentation statique
(....)
Page 29 IHM > ArchiLog- Eric Lecolinet - ENST Paris Page 30 IHM > ArchiLog- Eric Lecolinet - ENST Paris
source: P.Baudisch
Page 31 IHM > ArchiLog- Eric Lecolinet - ENST Paris Page 32 IHM > ArchiLog- Eric Lecolinet - ENST Paris
Programmation événementielle
Eric Lecolinet
www.enst.fr/~elc
ENST / INFRES
Page 1 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris Page 2 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris
– application “esclave”
de l’utilisateur
– dialogue multi-fils,
programmation
non modale
! Evénement (ou « message »)
– envoyé à l’application ciblée
– à chaque action élémentaire de l’utilisateur
Page 3 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris Page 4 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris
Exemples d’événements Types d’événements
! Niveau Desktop :
– chaque application = processus / thread indépendant
! Niveau Application :
– dispatching par boucle de gestion des événements
Page 7 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris Page 8 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris
Boucle de gestion des événements Protocole non embarqué
! Boucle infinie qui ! Principe
– récupère les événements – le programmeur écrit cette boucle!
– appelle les fonctions du programme – (au moins en partie...)
while (True) {
event = GetNextEvent()
switch(event->type) {
case EVENT_E1 sur window_W1: // pseudo-code
foo_E1_W1();
break;
case EVENT_E2 sur window-W2:
! Deux stratégies foo_E2_W2();
– protocole non embarqué (technique de base) break;
– protocole embarqué (tous les toolkits récents) ......
Page 9 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris Page 10 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris
Press-inside / A Release / E
Page 11 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris Page 12 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris
Protocole embarqué Protocole embarqué
! Principe ! Utilisation
– boucle de gestion des événements prédéfinie – implémenter les listeners ou les callbacks
– contrôle du dialogue embarqué dans les objets graphiques – les associer aux widgets
– appelés automatiquement quand la condition se produit
! Détection des événements
– via des fonctions de callback
– ou des listeners
Page 13 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris Page 14 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris
int main() {
Widget boite, bouton;
……
bouton = XmCreatePushButton(boite, ”bouton”, NULL, 0); // créer un bouton
XtManageChild(bouton); // le rendre visible
! 1. Optimisation de l’affichage
// y associer un callback (appelé quand on « active » le bouton)
XtAddCallback(bouton, XmNactivateCallback, MaFonction, NULL);
– souvent réalisé au retour dans la boucle (pour minimiser les réaffichages)
……
! 2. Traitement séquentiel des événements
XtAppMainLoop(app); // lancer la boucle de gestion des événements
– dialogue multi-fils simulé par la boucle de gestion des événements
// rien n’est exécuté après cette ligne ! – conséquence ?
Page 15 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris Page 16 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris
Pièges et limitations Pièges et limitations
Page 17 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris Page 18 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris
! Evénements ad-hoc
– le NF envoie des événements « clients » à la GUI
– exemple: ClientMessage de X-Window
Page 19 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris Page 20 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris
« Widgets » et « Controls » POO (Programmation Orientée Objet)
! Toolkits graphiques
! Objet graphique interactif
– cas d!école de la POO
– néologisme : widget = window object / window gadget
– historiquement : langage Smalltalk
! Réutilisation
– nombreux objets semblables : enrichissement progressif par héritage
! Modularité
– surtout si Protocole Embarqué
Page 21 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris Page 22 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris
Page 23 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris Page 24 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris
Arbre d’instanciation Conclusions sur les Toolkits
! Chaque objet « contient » ses enfants ! Avantages
• clipping : enfants (graphiquement) inclus dans parents – Portabilité informatique (matérielle, logicielle)
• superposition : enfants au dessus des parents – Souplesse d’utilisation
– Extensibilité, flexibilité
– Intégration de critères ergonomiques
! Inconvénients
– apprentissage
– effort de développement important
– pas d’indication sur l’architecture logicielle
– seul développeur = programmeur
Page 25 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris Page 26 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris
! Fonctionnement réseau
– {afficher sur / contrôler depuis} une machine locale
– une application qui s'exécute sur une machine distante
– XProtocol : protocole inter-clients normalisé
Page 27 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris Page 28 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris
Protocole X Window Manager
! Gestionnaire de fenêtres
– client X11 (ne fait pas partie du serveur X)
! Fonctionnalités
– décoration des fenêtres
– déplacements
– retaillage
– iconification
! Serveur X = boucle infinie :
– menus
– détecte les actions graphiques (clic souris, touche clavier ...)
– ....
– envoie les événénement correspondants aux clients
Page 29 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris Page 30 Programmation événementielle et interfaces graphiques - Eric Lecolinet - ENST Paris
3 4
FSM notation FSM notation
!! Circles represent states !! Transitions represented as arcs
–! arrow for start state –! Labeled with a “symbol”
–! double circles for “final states” "! for us an event (can vary)
–! Also optionally labeled with an action
"! notion of final state is a little off for user interfaces (don’t ever
end) Mouse_Down / Draw_Line()
"! but still use this for completed actions
"! generally reset to the start state
A B
5 6
11 12
Guards on transitions FSM are a good way
to do control flow in event driven systems
!! Sometimes also use “guards”
–! predicate (bool expr) before event !! Can do (formal or informal) analysis
–! adds extra conditions required to fire –! are all possible inputs (e.g. errors) handled from each state
–! typical notation: pred: event / action –! what are next legal inputs
"! can use to enable / disable
"! e.g. button.enabled: press-inside / A
–! Note:
FSM augmented with guards is Turing complete
13 14
return state;
15 16
Implementing FSMs Move / B
Table driven implementation
fsm_transition(state, evt) Press / A Release / C
!! Very stylized code
switch (state)
case 1: 0 1 2 !! Can be replaced with fixed code + table that represents FSM
switch (evt.kind) –! only have to write the fixed code once
case MouseMove: // trans event –! can have a tool that generates table from something else
19
Toolkits Graphiques 2D Principaux toolkits 2D
Caractéristiques
multi-plateformes (X-Window à la base)
écrit en C
base de l'environnement GNOME (projet GNU)
URLs
http://www.gtk.org/
http://www.gnome.org/
Voir: http://www.infres.enst.fr/~elc/vihm/doc/Motif.pdf
/* When the button receives the "clicked" signal, it will call the
* function hello() passing it NULL as its argument
*/
Qt (Troll Tech) Ilog Views
Caractéristiques Caractéristiques
multi-plateformes multi-plateformes
écrit en C++ écrit en C++
base de l'environnement KDE produit commercial "haut de gamme" avec environnement de
développement
URLs nombreux composants spécialisés (graphes, cartes, etc.)
http://www.troll.no/products/qt animation et graphique structuré interactif
http://www.kde.org/ variables actives et contraintes
Caractéristiques
multi-plateformes
basé sur langage de script Tcl (ou Python)
idéal pour prototypage
produit commercial mais version gratuite
URL
http://www.tcl.tk
http://www.mapfree.com/sbf/tcl/book/select/Html/11.1.html
Tcl/Tk: exemples UIML
Caractéristiques
langage déclaratif (DTD de XML)
label .example -text "Hellow Orld"
pack .example interfaces multi-supports (PC, PDA, téléphone) => plasticité
spécifie la présentation et actions simples
apparence spécifieé par feuilles de style (même principe que HTML, etc)
rendu implémenté via des widgets Java ou autre (pages HTML...)
proc quit {} {
global Entry URL
destroy .entry .edit_button .quit_button
unset Entry http://www.uiml.org
}
<commandset id="maincommands">
<command id="menu-file-close:command" oncommand="closeWindow();"/>
</commandset>
<toolbox id="main-toolbox">
<menubar id="menu">
<menu id="menu-file" label="&menu-file:label;" accesskey="&menu-file:accesskey;">
<menupopup id="menu-file-popup">
<menuitem
id = "menu-file-close"
key = "menu-file-close:key"
label = "&menu-file-close:label;"
command = "menu-file-close:command"
accesskey = "&menu-file-close:accesskey;"/>
</menupopup>
</menu>
</menubar>
</toolbox>
</window>
xulnote.js
xcontent.rdf
xulnote.css
xulnote.dtd
Introduction à Qt 4 Liens utiles
hello->show();
return app->exec();
}
Remarques
attention aux -> et aux *
les pointeurs ne sont pas des références !
parent passé en argument ou 0 (NULL) pour "top-level" widgets
texte HTML simplifié (selon version de Qt)
objets créés dans la pile -> détruits en fin de fonction ! QObject::connect(&quitBtn, SIGNAL(clicked()), &app, SLOT(quit()));
notation pointée box.show();
Qt3: il faudrait aussi: app.setMainWidget(&hello); return app.exec();
}
Signaux et Slots Philosophie
Propriétés Remarques
Dans le fichier header (.h, .hh) Dans le fichier source de l'implémentation (.cpp, .cc)
class BankAccount : public QObject { void BankAccount::setBalance(int newBalance) {
Q_OBJECT if ( newBalance != curBalance ) {
private: curBalance = newBalance;
int curBalance; emit balanceChanged(curBalance);
}
public: }
BankAccount() { curBalance = 0; }
int getBalance() const { return curBalance; } mot-clé emit pour précompilateur
Connexion Compilation
BankAccount x, y;
Meta Object Compiler (MOC)
connect( &x, SIGNAL(balanceChanged(int)), &y, SLOT(setBalance(int)) );
pré-processeur C++
x.setBalance( 2450 ); génère du code supplémentaire
x est mis à 2450 tables de signaux /slots
le signal balanceChanged() est émis permet aussi de récupérer le nom de la classe et de faire des test
il est reçu par le slot setBalance() de y d'héritage
Utilisation de qmake
dans le répertoire contenant les fichiers sources faire:
QStyle
QMenuBar* menubar = menuBar(); // menuBar() est une methode de QMainWindow
QToolBar
Et aussi: QWizard, QFontDialog, etc.
QToolBar* toolbar = addToolBar( tr("File") );
toolbar->addAction(newAct);
QToolTip
Central widget
QTextEdit* text = new QTextEdit( this );
setCentralWidget( text );
Utilisation d'un dialogue modal Layout
if ( dialog.exec() == QDialog::Accepted ) {
....
}
QIcon
}
glCallList( object ); OpenGL (suite)
void Box3D::resizeGL( int w, int h )
{ #include <qapplication.h>
glViewport( 0, 0, w, h ); #include <qslider.h>
glMatrixMode( GL_PROJECTION ); #include <qvbox.h>
glLoadIdentity(); #include "box3d.h"
glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 15.0 );
glMatrixMode( GL_MODELVIEW ); void create_slider( QWidget *parent, Box3D *box3d, const char *slot )
} {
QSlider *slider = new QSlider( 0, 360, 60, 0, QSlider::Horizontal, parent );
GLuint Box3D::makeObject() slider->setTickmarks( QSlider::Below );
{ QObject::connect( slider, SIGNAL(valueChanged(int)), box3d, slot );
GLuint list = glGenLists( 1 ); }
glNewList( list, GL_COMPILE );
qglColor( yellow ); int main( int argc, char **argv )
glLineWidth( 2.0 ); {
QApplication::setColorSpec( QApplication::CustomColor );
glBegin( GL_LINE_LOOP ); QApplication app( argc, argv );
glVertex3f( +1.5, +1.0, +0.8 ); if ( !QGLFormat::hasOpenGL() )
glVertex3f( +1.5, +1.0, -0.8 ); qFatal( "This system has no OpenGL support" );
/* ... */
glEnd(); QVBox *parent = new QVBox;
parent->setCaption( "OpenGL Box" );
glEndList(); parent->setMargin( 11 );
return list; parent->setSpacing( 6 );
}
Box3D *box3d = new Box3D( parent );
create_slider( parent, box3d, SLOT(setRotationX(int)) );
create_slider( parent, box3d, SLOT(setRotationY(int)) );
create_slider( parent, box3d, SLOT(setRotationZ(int)) );
Graphique Stratégies de réaffichage
Eric Lecolinet
Ecole Nationale Supérieure des Télécommunications
(ENST/INFRES) Problèmes
http://www.infres.enst.fr/~elc -> cours -> vihm 1) rafraichissement du "dessin"
Attention QPainter
repaint() : ajoute une zone à réafficher modèle graphique évolué (rotations, indépendance / pilote ...)
paint() : réaffiche équivalent de Graphics de Java
Swing : redéfinir paintComponent() / AWT : redéfinir paint() exemples de méthodes :
painter.setPen( QPen(red, 2, DashLine) );
Divers
painter.drawRect( 25, 15, 120, 60 );
taille des bords: Insets
opacité des widgets: setOpaque() -> plus rapide
appeler revalidate() dans certains cas (chgt. de taille)
double buffering par défaut (voir plus loin)
Dessin avec Qt Dessin interactif avec Qt
Flicking Principe
double buffering si le toolkit le permet (e.g. Swing, Qt4) affichage en mode XOR
pointeurs ou recopie de zones mémoire vidéo très efficace pour déplacements interactifs
alternative :
Afficher 2 fois pour effacer
dessiner dans une image, un "pixmap", un "buffer"
1er affichage: pixel = bg ^ fg
puis afficher cette zone en bloc à l'écran
2eme affichage: pixel = (bg ^ fg) ^ fg = bg
Lattence
ne réafficher que la sous-partie concernée
triple buffering
Manipulation logique des pixels (suite) Couches indépendantes (layers)
Problèmes Physiques
couleurs aléatoires "slicing", "overlays": chaque plan utilise une partie des 24 bits
très efficace pour déplacements interactifs pointeur souris
Primitives graphiques
Clip : masque
fill(Shape)
— défini par une Shape
— setClip() — dessine l!intérieur de n!importe quelle primitive géométrique
— en fonction de setPaint()
Font : police de caractères
— pour convertir les chaînes de caractères en glyphs drawString(...)
— setFont() — dessine du texte
— en fonction de setFont() et setPaint() (couleur et motif)
Rendering hints : préférences de rendu
— compromis qualité / rapidité (dépendent de la plateforme)
— exemple : anti-aliasing
— setRenderingHints()
Fonctions de dessin (2) Exemples
// draw RoundRectangle2D.Double
g2.setStroke(dashed);
g2.draw(new RoundRectangle2D.Double(x, y, rectWidth, rectHeight,
10, 10));
// draw Arc2D.Double
g2.setStroke(wideStroke);
g2.draw(new Arc2D.Double(x, y, rectWidth, rectHeight,
90, 135, Arc2D.OPEN));
polygon.closePath();
g2.draw(polygon);
Clipping Composition
Source-over (SRC_OVER) If pixels in the object being rendered (the source) have the Exemple
same location as previously rendered pixels (the destination), the source pixels are
rendered over the destination pixels. — teste si la souris est dans le rectangle quand on appuie sur le bouton de la souris
Source-in (SRC_IN) If pixels in the source and the destination overlap, only the source pixels — met à jour la position du rectangle
in the overlapping area are rendered.
Source-out (SRC_OUT) If pixels in the source and the destination overlap, only the source public void mousePressed(MouseEvent e) {
pixels outside of the overlapping area are rendered. The pixels in the overlapping area are
cleared. last_x = rect.x - e.getX();
last_y = rect.y - e.getY();
Destination-over (DST_OVER) If pixels in the source and the destination overlap, only the
source pixels outside of the overlapping area are rendered. The pixels in the overlapping
area are not changed. if (rect.contains(e.getX(), e.getY()))
updateLocation(e);
Destination-in (DST_IN) If pixels in the source and the destination overlap, the alpha from the
source is applied to the destination pixels in the overlapping area. If the alpha = 1.0, the
}
pixels in the overlapping area are unchanged; if the alpha is 0.0, pixels in the overlapping ...
area are cleared.
public void updateLocation(MouseEvent e) {
Destination-out (DST_OUT) If pixels in the source and the destination overlap, the alpha from
the source is applied to the destination pixels in the overlapping area. If the alpha = 1.0, the
rect.setLocation(last_x + e.getX(), last_y + e.getY());
pixels in the overlapping area are cleared; if the alpha is 0.0, the pixels in the overlapping ...
area are unchanged.
repaint();
Clear (CLEAR) If the pixels in the source and the destination overlap, the pixels in the }
overlapping area are cleared.
Interaction (2)
Contains() et intersects()
— méthodes de Shape applicables à n!importe quelle forme (y compris un GeneralPath)
— éventuelle imprécision si formes complexes (cf. doc. de Shape)
...
public void updateLocation(MouseEvent e) {
rect.setLocation(last_x + e.getX(),
last_y + e.getY());
...
repaint();
}
Perception et GUIs Moniteurs CRT
Eric Lecolinet
Ecole Nationale Supérieure des Télécommunications
(ENST/INFRES)
http://www.infres.enst.fr/~elc -> cours -> vihm
[premier transparent]
[transparents sur un seul fichier]
[index]
(source: S. Hudson)
Avantages / Inconvénients:
+ : stabilité de l'image
Colormap: cas des pseudo-couleurs l'intensité des pixels ne décroit pas entre 2 balayages
- : temps de mise à jour
matrices "actives" et "passives"
- : moins lumineux que les CRT
Autres techniques d'affichage Perception de la couleur
Plasma Rétine
cônes : couleurs, 3 types (sensibilité R, V ou B)
Vidéo-projecteurs
bâtonets : niveaux de gris, large spectre
LCD ou micro miroirs
Direct retinal displays
University of Washington
Exemple Rétine
rouge saturé : apparaît rouge 7 millions de cônes
non saturé : apparaît rose 75 à 150 millions de batonets
démo GIMP
10 fois plus sensible aux variations de V que de H !
-> fortes répercussions sur GUIs
H versus V Dépendance / longueur d'onde (1)
Focus d'attention
changement continu du point de focus
Défauts de perception Correction Gamma
➔ 1. Guidage
➔ 2. Charge de Travail
➔ 3. Contrôle Explicite
➔ 4. Adaptabilité
➔ 5. Gestion des Erreurs
➔ 6. Homogénéité / Cohérence
➔ 7. Signifiance des Codes et Dénominations
➔ 8. Compatibilité
➔ Annexe: Présentation et Guides de Style
Eric Lecolinet / ENST Java AWT / Swing Page 2-1 3 Eric Lecolinet / ENST Java AWT / Swing Page 2-1 5
Eric Lecolinet / ENST Java AWT / Swing Page 2-1 4 Eric Lecolinet / ENST Java AWT / Swing Page 2-1 6
1.4 Lisibilité 2.2 Densité informationnelle
❏ Caractéristiques de présentation adéquates ❏ Eviter mémorisation de procédures ou d’informations
☞ couleur, contraste, dimension, espacement du texte trop longues ou trop complexes
❏ Exemples ❏ Exemples
☞ curseur facilement repérable, labels capitalisés ☞ écran zen: n’afficher que ce qui est nécessaire
☞ préférer qq. lignes longues à bcp. de lignes courtes ☞ éviter d’avoir à se rappeler des données antérieures
☞ lignes d’au moins 50 caractères, éviter césures ☞ calculer tout ce qui peut l’être
Eric Lecolinet / ENST Java AWT / Swing Page 2-1 7 Eric Lecolinet / ENST Java AWT / Swing Page 2-1 9
Eric Lecolinet / ENST Java AWT / Swing Page 2-1 8 Eric Lecolinet / ENST Java AWT / Swing Page 2-2 0
3.2 Contrôle utilisateur
4.2 Prise en compte de l’expérience
❏ L’U doit “avoir la main” et contrôler le déroulement
☞ Novices:
❏ Exemples ✔ transactions très guidées, menus cascadés
☞ bouton d’interruption, retour arrière (Undo)
☞ éviter de déplacer le curseur sans contrôle de l’U ☞ Experts:
. ✔ raccourcis clavier, menus contextuels
✔ inhiber guidage automatique, messages + concis
Eric Lecolinet / ENST Java AWT / Swing Page 2-2 1 Eric Lecolinet / ENST Java AWT / Swing Page 2-2 3
Eric Lecolinet / ENST Java AWT / Swing Page 2-2 2 Eric Lecolinet / ENST Java AWT / Swing Page 2-2 4
5.2 Qualité des messages 7. Codes et dénominations
❏ Pertinence, facilité de lecture, exactitude
Adéquation objets affichés / référents
❏ Exemples
☞ titres informants et distincts
☞ activation touche non valide
✔ aucune action ou message ad hoc ☞ regles d’abréviation explicites
☞ messages brefs, termes spécifiques, éviter l’humour ! ☞ codes et noms significatifs
✔ exple: M et F plutôt que 1 et 2
5.3 Correction
❏ Pouvoir corriger :
☞ en cours de saisie
☞ juste la partie erronée (ne pas avoir à tout retaper)
Eric Lecolinet / ENST Java AWT / Swing Page 2-2 5 Eric Lecolinet / ENST Java AWT / Swing Page 2-2 7
Eric Lecolinet / ENST Java AWT / Swing Page 2-2 6 Eric Lecolinet / ENST Java AWT / Swing Page 2-2 8
Guides de Style Retours Visuels
Menu Bar
Tool Bar ❏ Pour indiquer à tout moment
☞ l’état courant de l’application
Command ☞ ce que l’utilisateur peut / doit faire
Area
❏ Respecter les normes
☞ facilite le transfert des connaissances syntaxiques
Status Line
Eric Lecolinet / ENST Java AWT / Swing Page 2-2 9 Eric Lecolinet / ENST Java AWT / Swing Page 2-3 1
❏ MenuBar:
☞ File
☞ Edit Penser aux :
☞ View - Mnémoniques l’encadrement
☞ Help indique le focus
- Accélérateurs
❏ File :
☞ New Aspects visuels d’un Bouton
☞ Open ...
☞ Save
☞ Save As ...
☞ Exit
Status Line de Netscape
❏ Edit :
☞ Undo
☞ Cut
☞ Copy
☞ Paste
☞ Clear
☞ Delete
Eric Lecolinet / ENST Java AWT / Swing Page 2-3 0 Eric Lecolinet / ENST Java AWT / Swing Page 2-3 2
Focus clavier et navigation Modèle des Entrées
Focus clavier: Multimodalité des entrées
❏ Détermine: ❏ Utilisation
✔ quelle fenêtre ☞ de la souris (ou autre pointeur)
✔ quel composant de cette fenêtre ☞ ou du clavier
reçoit les entrées clavier ❏ Suivant:
☞ le matériel
☞ le type d’action et les préférences de l’utilisateur.
❏ Focus implicite
☞ lieu où se trouve le pointeur
Equivalents clavier
❏ Focus explicite ☞ fonctionnement en l’absence de souris
☞ dans le dernier composant cliqué ☞ accès plus rapide à certaines fonctions
☞ simplification de l’interaction
Eric Lecolinet / ENST Java AWT / Swing Page 2-3 3 Eric Lecolinet / ENST Java AWT / Swing Page 2-3 5
Navigation
RC texte
❏ Détermine le passage d’une fenêtre ou d’un composant à un autre RC liste
DClic liste
RC Filter
SP Filter
RC liste
DClic liste
RC Ok
SP Ok
ESC
Eric Lecolinet / ENST Java AWT / Swing Page 2-3 4 Eric Lecolinet / ENST Java AWT / Swing Page 2-3 6
Première partie :
Visualisation de l’information
!! Mieux exploiter les facultés perceptives et cognitives !! Perception d’abord globale puis locale
–! perception pré-attentive, Gestalt... –! Gestalt, Focus/contexte
–! « Overview first, zoom and filter, then details on demand »
!! Aides graphiques externes
–! Vue globale puis zoom et filtrage puis détails à la demande
–! amplifier la cognition via la perception
–! utiliser la vision pour penser (« Using Vision to Think »)
Exemples : papier pour multiplication, schémas, diagrammes, etc. !! Emergence de structures ou comportements
–! représentations graphiques spécifiques
« The power of the unaided mind is highly overrated. Without external aids, memory, •! dimension spatiale
thought, and reasoning are all constrained. But human intelligence is highly flexible –! bouclage entre formes visuelles et contrôle interactif
and adaptive, superb at inventing procedures and objects that overcome its own
•! dimension temporelle
limits. The real powers come from devising external aids that enhance cognitive
abilities. How have we increased memory, thought, and reasoning? By the
inventions of external aids: It is things that make us smart. » !! Conséquence
Norman, 1993 –! visualisation / interaction intrinsèquement liées
Page 3 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 4 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Données > représentations Caractéristiques
!! Modèle de référence !! Structures de données
–! de correspondance des données vers les représentations visuelles –! 1D, 2D, 3D, nD, temporelles
–! arbres, réseaux, documents
–! spécifiques
!! Types de variables
–! nominales, ordinales, quantitatives
!! Types d’interaction
–! filtrage, sélection/détails, navigation, linking/brushing...
!! Types de tâches
–! globaliser, chercher, mettre en relation....
!! Types de représentations
–! ...
Page 5 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 6 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Page 7 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 8 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Focus+Context Focus+Context
!! Intégration des détails à la vue globale
–! évite les discontinuités, réduit l’encombrement spatial ...
TableLens
Rao & Card 94
!! Mantra:
–! Overview first : représentation graphique de données numériques
–! zoom and filter : tri selon critère (colonnes)
–! then details on demand : représentation textuelle (lignes de focus)
Page 9 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 10 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
!! Avantage
Spence, Apperley –! continuité spatiale de la représentation
!! Exemple
–! Sarkar et Brown
•! G(x) = (d+1) x / (d x+1)
•! d: facteur de distorsion
Page 11 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 12 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Fish eyes Fish eyes
!! Exemples : !! Vitesse
–! Vernier, Nigay
Moosburg –! carte, colline, cylindre, pyramide, sphère
Schafer
!! Types de distorsions
–! cf. Carpendale, Leung et Apperley ...
Transformation linéaire/non linéaire
contrainte à un domaine spatial
Keahey, Robertson, 1996
Page 13 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 14 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
!! Géométrie hyperbolique
–! géometrie non euclidienne
(« 5e postulat » non vérifié)
–! mapping entre l’espace hyperbolique
et l’espace euclidien
(modèles de Poincaré ou de Klein)
Page 15 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 16 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Métaphores 3D Perspective Wall
!! Approche !! Structures et types de données
–! gradualité du niveau de détail obtenue « naturellement » via l’effet de –! 1D, ordonnées
perspective de la vision conique –! données temporelles (Daassi, Nigay)
–! peuvent être vues comme des représentations focus+contexte –! extension 2D (Robert, ENST)
–! souvent en pseudo 3D
!! Exemple :
Perspective Wall
Mackinlay et al 91
!! Visualisation
–! représentation pseudo 3D !! Facultés perceptives
d’un plan incliné
–! importance de la mémoire spatiale
(et du geste)
!! Interaction –! => Arts de mémoire
–! considérablement simplifiée
(mapping y / z)
!! Résultats
–! évaluation de Czerwinski
Robertson, Czerwinski, et al (Interact’99) Robertson, Czerwinski, et al
Page 19 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 20 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Texte et documents Web Book, Web Forager
!! Exemple: Document Lens !! Web Book
–! métaphore du livre
!! Approche –! feuilletage
–! métaphore 3D
–! pages disposées selon une grille !! Web Forager
–! focus sur une page –! métaphore « réaliste » du bureau
–! distorsion “pyramidale” –! workspace hiérarchique:
–! greeking •! focus
•! mémoire intermédiaire
!! Critique •! étagères
–! faible lisibilité du texte en –! animation
perspective
Robertson & Mackinlay 93 !! Question
–! efficacité par rapport à une
métaphore « abstraite » ?
Card, Robertson, York
Page 21 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 22 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Robertson et al. 91
!! Problèmes typiques de la 3D
–! occlusion
–! interaction non triviale
avec une souris 2D
Page 25 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 26 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Page 27 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 28 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Zoom sémantique Pie, Marking et Control Menus
!! Mise en oeuvre
!! Pie menus
–! ne pas calculer indépendamment le zoom et le pan –! D. Hopkins
•! zoom => accroissement exponentiel
•! zoom centré pour éviter perte du focus
–! une solution: space/scale diagrams (Furnas, Bederson)
•! combinaison Pan+Zoom = chemin dans cet espace
!! Toolkits
Pad++ / Jazz / Picolo (Bederson et al.)
•! PhotoMesa, DateLens
!! Marking Menus
Zomit (Pook, Lecolinet) –! Kurtenbach, Buxton
•! bibliothèque virtuelle
•! bases de données biogénétiques
•! client Java en ligne :
http://www.enst.fr/~elc/
Page 29 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 30 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Pook, Lecolinet,
Page 31 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 32 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Transparence Transparence
!! Approche !! Exemples(suite)
–! multiplexage en profondeur Vues contextuelles de Zomit
(Pook, Lecolinet)
vidéo
!! Exemples
Palettes transparentes (Harrison et al 95)
!! Problèmes
Translucent patches (Kramer 94)
–! séparabilité des couches
Macroscope (Lieberman)
–! importance du mouvement
Page 33 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 34 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Page 35 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 36 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Compléments Arbres
!! Structure / Connexions
!! Structures visuelles –! outliner, finder
–! hyperbolic browser
–! arbres
–! ConeTrees
–! 1D, 2D, 3D, nD, temporelles
–! spécifiques
!! Références
Page 37 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 38 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Arbres Arbres
!! Imbrication : TreeMaps !! Imbrication : TreeMaps
–! Principe: (B. Shneiderman, U. Maryland)
–! MillionViz (JD. Fekete)
Page 39 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 40 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Arbres 1D
!! Divers !! Lignes temporelles, documents textuels, contrôles
–! Perspective Wall (Mackinlay), Fisheye Menus (Bederson)
–! SeeSoft (Eick) : line oriented software statistics
Page 41 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 42 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Temporel 2D
–! Time Tube : évolution d'un site Web !! Diagrammes, données géographiques, topographies abstraites
(7000 noeuds)
–! Lifestreams
–! Timelines : ligne temporelle dans l'espace 3D
Page 43 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 44 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
2D 3D
!! Diagrammes, données géographiques, topographies abstraites !! Données physiques :
–! cartes sémantiques intrinsèquement 3D
!! Composition 2D
+ dimension supplémentaire
méta-moteur de recherche Kartoo sur le Web : www.kartoo.com Xerox PARC Lab Toronto Stock Exchange (Visible Decisions)
Page 45 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 46 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
3D 3D
!! Composition 2D
!! Perspective, métaphores 3D
+ dimension supplémentaire
Task
Gallery
ThemeScape Harmony
Page 47 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 48 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
nD nD
Page 49 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 50 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Page 51 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 52 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Exemples de toolkits Exemples de toolkits
!! Tulip !! VTK
–! D. Auber (Labri)
Page 53 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST Page 54 Nouvelles techniques de visualisation et d’interaction - Eric Lecolinet - ENST
Quelques références
Livres, articles, tutoriels
•! Readings in Information Visualization, Card, Mackinlay, Shneiderman
•! The display of quantitative data, Tufte
•! Sémiologie graphique, Bertin
•! Information Visualization: Perception for Design, Colin Ware
•! Graph Visualization and Navigation in Information Visualization : A Survey,
Herman, Melançon, Marshall, IEEE trans on visualization and computer graphics
•! Visualisation interactive d’information, M.Hascoët, M.Beaudouin-Lafon, revue I3
(en ligne sur le Web)
Web
•! Google en entrant les noms indiqués sur les transparents de ces cours ...
www.infres.enst.fr/~elc -> zomit
•! otal.umd.edu./Olive
•! people.cs.vt.edu/~north/infoviz/
•! graphics.stanford.edu/courses/cs348c-96-fall/resources.html
•! www.sims.berkeley.edu/courses/is247/s98/lectures.html
•! www.limsi.fr/Individu/jacquemi/IRI-TR/menu-visu.html
#$Papier Anoto %
Page 3 Techniques d’interaction avancées - Eric Lecolinet - ENST Page 4 Techniques d’interaction avancées - Eric Lecolinet - ENST
écran augmenté interfaces tangibles
Marqueurs de
Réalité Augmentée
(RA)
!! ARToolkit
et dérivés
!! MagicCube
MagicLand
Notification Collage
.
Sweep and Point & Shoot
Page 5 Techniques d’interaction avancées - Eric Lecolinet - ENST Page 6 Techniques d’interaction avancées - Eric Lecolinet - ENST
Phidgets (U.Toronto)
HapticPen
Logitech IFeel
Page 9 Techniques d’interaction avancées - Eric Lecolinet - ENST Page 10 Techniques d’interaction avancées - Eric Lecolinet - ENST
#$"$'
NanoTouch
&$DateLens et LaunchTile " (U. Maryland)
(Microsoft
"$ FishView et Spiralist "' Research)
(Télécom ParisTech / ALU)
#$'
Clavier projeté
(Lumio)
# Summary Thumbnails
Handheld projector + Pen"
(Microsoft Research) (DGP U.Toronto / MERL)"
14 14
Page 13 Techniques d’interaction avancées - Eric Lecolinet - ENST Page 14 Techniques d’interaction avancées - Eric Lecolinet - ENST
Deux cas:
KidPad
!! à distance
!! dans un même lieu
interaction bi-manuelle
(single display groupware)
Page 15 Techniques d’interaction avancées - Eric Lecolinet - ENST Page 16 Techniques d’interaction avancées - Eric Lecolinet - ENST
Multi-Touch groupware: multi-surfaces
En entrée
!! contrôle à distance multi-surfaces
!! PointRight
En sortie
!! réplication graphique
!! Ubit, Campus
FTIR ! "
Frustrated Total Internal Reflexion
Jeff Han (NIU / Perceptive Pixels)
#$Stantum "
JazzMutant
PointRight SpotLight
Page 17 Techniques d’interaction avancées - Eric Lecolinet - ENST Page 18 Techniques d’interaction avancées - Eric Lecolinet - ENST
Espace immersif
communication
gestuelle
Appli partagée
« in-visible » urban information