Universit´ e Paris Diderot Programmation Orient´ ee Objet
L2/L3 Ann´ ee 2014-2015
Projet Dessin vectoriel
Le but de ce projet est de d´ evelopper un logiciel de dessin vectoriel comme Geogebra, Inkscape, Karbon, Illustrator... dont le principe est de d´ ecomposer les dessins en figures g´ eom´ etriques simples dont on ne stocke que les param` etres.
Cela permet d’avoir des images dont la pr´ ecision est virtuellement infinie (on peut zoomer autant que l’on veut sans avoir de d´ efauts) et qui prennent tr` es peu de place en m´ emoire.
Modalit´ es
Le projet est ` a faire au plus en binˆ ome. Les soutenances se feront ` a deux, mais la note pourra ˆ etre individualis´ ee si le travail a ´ et´ e trop in´ egalement r´ eparti.
Naturellement chacun doit ˆ etre capable de r´ epondre ` a toutes les questions. Si vous faites le projet seul, vous serez not´ e sur le mˆ eme bar` eme que si vous ´ etiez en binˆ ome.
Ce projet est intrins` equement plus difficile que l’autre qui vous est propos´ e, et demande de travailler un peu plus l’interface graphique. Pour que vous puissiez fournir un travail adapt´ e ` a votre aisance en Java, nous vous proposons plusieurs
“niveaux” : un projet minimal, qui ´ equivaut en difficult´ e ` a l’int´ egrit´ e de l’autre projet, et de possibles extensions, plus ou moins difficiles. De plus ce projet im- pose de devoir utiliser quelques formules math´ ematiques simples (que l’on peut connaˆıtre ou retrouver sur internet). Ces difficult´ es suppl´ ementaires seront bien
´ evidemment prises en compte dans la note.
Notez bien qu’on s’attend ` a ce qu’il soit fait usage de concepts vus en cours (h´ eritage, interfaces...) : la conception objet repr´ esente une part importante de la note.
En guise de rapport, vous fournirez une liste des fonctionnalit´ es que vous avez effectivement impl´ ement´ ees, et si elles fonctionnent ou non, ainsi qu’un diagramme des classes utilis´ ees. Un rapport d´ etaill´ e dans lequel on expliquerait comment les fonctionnalit´ es sont impl´ ement´ ees n’est pas demand´ e.
Vous devez fournir une javadoc et votre code devra ˆ etre soigneusement com- ment´ e et indent´ e.
La date pour rendre le projet sera fix´ ee ult´ erieurement.
Il nous faudra pouvoir tester le projet durant les soutenances, il est donc pr´ ef´ erable qu’il fonctionne sur les machines du script si vous ˆ etes en L2 ou sur celles de l’ufr si vous ˆ etes en L3. Ceci mˆ eme si vous avez pr´ evu d’apporter un portable pour l’occasion car il peu tomber en panne au mauvais moment.
1
Conseils pour r´ ealiser le projet
1. Lisez bien l’int´ egralit´ e du sujet. Prenez le temps de r´ efl´ echir ` a ce que vous allez impl´ ementer et ` a la conception du projet avant de coder.
2. R´ efl´ echissez aussi ` a la mani` ere de r´ epartir le travail entre les deux personnes du binˆ ome. Faites des points r´ eguliers entre vous.
3. Enfin, pensez ` a faire des sauvegardes fr´ equentes, sur au moins deux supports diff´ erents et en particulier sauvez les versions testables de votre projet mˆ eme s’il reste des corrections ` a y apporter.
1 Interface graphique : consignes g´ en´ erales
L’ex´ ecution du projet devra ouvrir une interface dans laquelle on pourra des- siner en utilisant les outils impl´ ement´ es.
Chacun des types de figure impl´ ement´ es devra ˆ etre cr´ e´ e ` a partir de votre inter- face (via des boutons, raccourcis clavier ou autre) avec une couleur. N´ eanmoins, une composante impl´ ement´ ee mais pas ajout´ ee ` a l’interface graphique sera prise en compte dans les points de conception.
On doit pouvoir s´ electionner les figures s´ epar´ ement, et les d´ eplacer lorsque c’est possible.
Lorsqu’une figure est modifi´ ee, toute ses d´ ependances doivent ˆ etre modifi´ ees dynamiquement.
Il doit ˆ etre possible de zoomer ou d´ ezoomer sur l’origine autant que l’on veut.
Les efforts sur la fluidit´ e de l’animation seront pris en compte. ´ Evitez par exemple (et autant que possible) de calculer des positions inutiles (hors de l’´ ecran ou trop pr´ ecises), surtout pour les options avanc´ ees. ´ Evitez aussi de recalculer des positions s’il est ´ evident qu’elles n’ont pas ´ et´ e chang´ ees.
Il n’est pas demand´ e dans le projet minimal d’offrir une option pour sauvegar- der le dessin, car cela va au-del` a du cadre du cours (il s’agit d’apprendre ` a utiliser l’API ad´ equate). C’est n´ eanmoins une extension possible (niveau de difficult´ e :
***), et un petit bonus sera accord´ e aux groupes l’impl´ emantant.
2 Projet minimal
On doit pouvoir dessiner ` a main lev´ ee des points, des droites et des segments qui seront stock´ es avec des coordonn´ ees absolues.
Ces figures, stock´ ees en coordonn´ ees absolues, seront contrˆ olables, c’est ` a dire qu’on doit pouvoir les attraper et les bouger depuis l’interface.
Il faut pouvoir construire un point comme intersection de deux droites.
1Atten-
1. L’intersection de deux droitesa1x1+b1y1= 1 eta2x2+b2y2= 1 est b2−b1
a1b2−a2b1
, a2−a1
b1a2−b2a1
.
2
tion, ce point ne doit pas ˆ etre repr´ esent´ e en interne avec des coordonn´ ees absolues, mais restera la donn´ ee d’une intersection : en particulier, si on d´ eplace l’une des droites avec lesquelles il est construit, lui aussi doit bouger. Remarquez que cela veut dire qu’il ne pourra pas ˆ etre boug´ e directement.
Une option doit ˆ etre disponible pour s´ electionner un certain nombre de points et cr´ eer un nouveau point isobarycentre (centre de gravit´ e).
2Comme pour l’inter- section de deux droites, le barycentre doit rester li´ e aux objets (ici des points) ` a partir desquels il a ´ et´ e cr´ e´ e.
Enfin, un segment (resp. une droite) doit pouvoir ˆ etre cr´ e´ e(e) entre deux points.
Encore une fois celui-ci (resp. celle-ci) doit rester li´ e(e) aux points ` a partir desquels on l’a d´ efini(e).
Le programme ne doit pas crasher et une situation impossible (par exemple point d´ efini ` a l’intersection de droites parall` eles) devra annuler l’op´ eration en cours.
3 Extensions sugg´ er´ ees
Libre ` a vous de choisir dans cette liste les extensions au projet minimal que vous souhaitez impl´ ementer.
3.1 Au-del` a des points, des droites, et des segments
– Triangles (*). On peut impl´ ementer la possibilit´ e de faire des triangles (remplis). Ceux-ci pourront ˆ etre construits avec des coordonn´ ees absolues (et donc ˆ etre contrˆ olables), mais aussi ` a partir de trois points ou de trois droites.
– Cercles (*). De mˆ eme on peut vouloir construire des cercles, d´ efinis en absolu, mais aussi avec le centre et un point sur le bord, ou encore avec 3 points sur le bord.
– Couleurs (**). On peut impl´ ementer un moyen de changer la couleur des objets. Pour les cercles et les triangles, on pourra diff´ erencier bordure et int´ erieur, l’int´ erieur pouvant ˆ etre transparent, d’une couleur pleine, ou avoir un d´ egrad´ e axial (autour d’un point) ou central (autour d’une droite). Vous pourrez aussi impl´ ementer un moyen de choisir les superpositions (droite qui passe devant ou derri` ere un triangle...).
– Groupes (***). Il pourra ˆ etre possible de grouper des objets contrˆ olables pour tous les d´ eplacer simultan´ ement, tourner ou encore r´ etr´ ecir/agrandir cette partie du dessin.
2. Les cordonn´ees (x, y) de l’isobarycentre denpoints (x1, y1)...(xn, yn) sont
x1+· · ·+xn
n , y1+· · ·+yn
n
. En particulier l’isobarycentre de deux points est leur milieu.