Fall 2007, Interface Homme Machine, Java, RICM2, Polytech'Grenoble



Home Research Publications Teaching Personal

But des TDs

Les séances se déroulent en 4x3h. A la fin de l'ensemble des séances, un petit outil de dessin vectoriel devra être implémenté. On s'inspirera notamment du logiciel Xfig par exemple en en implémentant quelques fonctions simples (tracé de cercles, lignes, sélection, déplacement, destruction, ...).
L'ensemble de l'interface graphique sera implémenté en Java en utilisant la librairie graphique Swing.

Sujet

Le cahier des charges à suivre lors du mini-projet, ainsi que les critères d'évaluation.
[pdf ]


Déroulement des séances

Les séances s'étalent sur quatre fois 3h. Une séance à lieu chaque semaine en alternant groupe 1 et 2. Chaque séance à lieu le lundi de 14h à 17h en salle F108 de l'UFR-IMA.
Planning (provisoire)
Date Groupe Cours Réalisés Remarques, Cas particuliers
22 Octobre Groupe 2Fait
25 Octobre Groupe 1Fait(spécial, séance le jeudi de 8h à 11h en salle F108)
5 Novembre Groupe 1Fait
12 Novembre Groupe 2Fait
19 Novembre Groupe 1AnnuléGrêve étudiants, Blocage UFR
26 Novembre Groupe 2AnnuléGrêve étudiants, Blocage UFR
3 Décembre Groupe 1Fait
5 Décembre Groupe 1Fait(spécial, rattrapage grève, mercredi 8-11h, salle F208)
10 Décembre Groupe 2Fait
12 Décembre Groupe 2Fait(spécial, rattrapage grève, mercredi 8-11h, salle F108)

Groupes

Voici les groupes formés. Le travail se réalisant normalement en binôme (trinômes acceptés).

Groupe 1
Numéro Groupe Date Rendu
1 Vagnet Jérémy
Marois Paul
rendu 10/12/2007 [ok]
2 Yegdjong Elias
Boukercha Lofti
rendu 10/12/2007 [ok]
3 Bolliet Romain
Gineste Florent
rendu 12/12/2007 [ok]
4 Desestreit Romain
Sturbaut Cedric
rendu 12/12/2007 [ok]
5 Archelas Michael
EAP Clément
rendu 12/12/2007 [ok]
6 Delay Benoit
Touvat Fabien
rendu 12/12/2007 [ok]
7 Collin Clément
La Rizza Frédéric
rendu 12/12/2007 [ok]
8 Favre Robin
Plantin Ludovic
rendu 12/12/2007 [ok]
9 Bodinier Vincent
Jacquart Matthieu
rendu 12/12/2007 [ok]
10 Ligier Alexandre
Gilbert Jean-Pierre
rendu 20/12/2007 [retard 8j]
11 Laribi Nahla rendu [retard 1j]

Groupe 2
Numéro Groupe Date Rendu
1 Zaida Khalid
Yucelir Akin
Sidotman Samy
rendu 19/12/2007 [ok]
2 Salihi Dardan
Mouelhi Seif Eddine
Ben Salah Weil
retard
3 Brun Yann
Clavier Thomas
rendu 20/12/2007 [retard 1j]
4 Colbrant Audrey
Nouguier Elodie
Yang Yang
rendu 18/12/2007 [ok]
5 Bauduin David
Francone Jérémie
rendu 19/12/2007 [ok]
6 Seneque Frédéric
Zhao Xu
Benameur El Youbi Zineb
rendu 18/12/2007 [ok]
7 Peigneux Juliette
Gabi Lydia
Burlet Thomas
rendu 18/12/2007 [ok]
8 Gorgo Gael
Ablancourt Murielle
rendu 20/12/2007 [retard 1j]

Critères d'évaluations

Les critères d'évaluations sont rappelés ici (déjà écrit dans le sujet). N'hésitez pas à vous bien vérifier votre interface de dessin avant de la rendre. Une seule note sera attribuée par binôme. Le projet minimal demandé est noté sur 16 points. Au delà, un certain nombre d'améliorations souvent longue à mettre en place pourront rapporter des suppléments. Cependant, il est très fortement conseillé d'avoir une interface fini et fonctionnelle avant de passer à la mise en place des améliorations.

Respect des consignes de codage

(4 points)

Respect des consignes fonctionnelles

(5 points)

Respect des consignes IHM

(5 points)

Avancement régulier du projet

(2 points)

Amélioration du projet minimal

(4 points)

Rendu

Chaque binôme rendra leur projet une semaine après la fin du dernier cours de son groupe. En clair, les binômes du Chaque binôme devra avoir rendu son projet sous la forme: Nom1_Nom2.zip ou Nom1_Nom2.tar.gz. L'archive contiendra: L'archive devra être envoyé à l'adresse suivante: damien.rohmer[at]imag.fr
Un mail de confirmation vous sera renvoyé une fois l'archive reçu. Si cet accusé de réception ne vous est pas envoyé, vous devrez considérer que le mail n'a pas été réceptionné et donc réitérer l'opération.



Tips

Pour quelques personnes ayant des difficultés, voici quelques petits points concernant le projet.

Tracé du cercle

Java vous propose de tracer des ellipses en spécifiant le point supérieur gauche ainsi que la longueur et la largeur de votre ellipse.
Il vous est cependant demandé de tracer un cercle en ayant connaissance de son centre (premier clic) et de son rayon (donné par le second point).
Au premier clic, vous possédez donc l'information (xc,yc). Lors du drag and drop, le second point vous informe du rayon du cercle (r=||x-x_c|| en notation vectorielle). Il est donc alors assez simple d'afficher votre ellipse avec les paramètres suivant: draw_ellipse(x_c-r , y_c-r , 2 r , 2 r)

Sélection d'une forme

Pour sélectionner une forme, il est important de définir un critère de proximité d'une forme. Pour cela, on utilisera tout simplement une fonction de distance associé à une forme donnée. Ainsi, un clic sélectionnera une forme si la souris est suffisamment proche de votre objet.
Une idée consiste à définir une méthode général type: "is_close(x,y)" sur un Element_Graphic et d'en définir une implémentation pour chaque forme.

Ainsi pour un cercle D (centre x_c,y_c et de rayon r), on défini une région "proche" de celui-ci par l'ensemble P = {x appartenant au cercle de centre (x_c,y_c) et de rayon compris entre [r+epsilon,r-epsilon]}, où epsilon designe votre tolérance.

De même pour une droite, il conviendra de savoir calculer la distance d'un point à un segment (pensez à la perpendiculaire, et donc à l'idée de projection ...).

Affichage d'une icône sur un bouton

Les JButton de java sont tout à fait capable d'être affiché par une icône de n'importe quel format usuel.

ex.
JButton button1=new JButton();
ImageIcon icon1 = new ImageIcon("my_wonderful_picture.png");
button1.setIcon(icon1);

Changer l'épaisseur du trait

Pour modifier des propriété avancé de l'interface graphique, l'utilisation de l'API Graphics2D peut être d'une grande aide (y penser également dans le cas de scaling, rotation, ...).

ex.

import java.awt.*;
import java.awt.geom.*;

public void paint(Graphics g)
Graphics2D g2 = (Graphics2D)g;
g2.setStroke(new BasicStroke(5));

vous permettra d'afficher des traits 5x plus épais.

Contact enseignant permanent