~ / M1 / TLI / tds / 2-curve-editing /
© 2009—2011 - Renaud Blanch
Le but de ce TD est d'utiliser les machines à états pour mettre en œuvre des interactions graphiques sophistiquées. Il va s'agir de permettre le dessin de courbes en reproduisant l'interaction qu'offre un logiciel professionnel d'édition de dessin vectoriel: Illustrator d'Adobe.
Créez une application qui ouvre une fenêtre dans laquelle vous allez pouvoir dessiner. Faites en sorte que chaque clic gauche de la souris dessine un petit carré à l'endroit où se situe le curseur de la souris. Ajoutez un menu “Édition” avec une entrée “Remise à zéro” qui efface l'aire de travail.
Faites en sorte que les points soient reliés entre-eux par une ligne brisée, celle-ci s'achevant (et une nouvelle ligne pouvant alors commencer au prochain clic) lorsque l'utilisateur appuie sur la touche ESC. Faites en sorte que les points d'une ligne existante soient éditables, c'est-à-dire qu'on puisse les déplacer par un glissement lorsque la souris se situe dans le carré qui symbolise le point.
Transformez l'interaction pour que lorsqu'un point est donné par un glisser (et non un simple clic), ce dernier spécifie la tangente à utiliser pour dessiner une courbe et non un segment de droite. La documentation d'Illustrator sur le dessin de courbe avec l'outil crayon explique l'interaction attendue.
Faites en sorte qu'on puisse éditer les tangentes avec l'interaction suivante : un clic sur un point le sélectionne et affiche sa tangente avec une poignée à chaque extrémité. Le déplacement de ces poignées doit modifier interactivement la courbure du morceau de courbe concerné.
Le point d'entrée dans la documentation de Java est la classe Graphics2D qui permet le dessin. Elle permet en particulier de dessiner des Shapes, dont des Line2D, CubicCurve2D et QuadCurve2D.
mise à jour : 28 mars 2011