• Aucun résultat trouvé

Modalit´es ProjetDessinvectoriel Universit´eParisDiderotProgrammationOrient´eeObjetL2/L3Ann´ee2014-2015

N/A
N/A
Protected

Academic year: 2022

Partager "Modalit´es ProjetDessinvectoriel Universit´eParisDiderotProgrammationOrient´eeObjetL2/L3Ann´ee2014-2015"

Copied!
4
0
0

Texte intégral

(1)

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

(2)

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.

1

Atten-

1. L’intersection de deux droitesa1x1+b1y1= 1 eta2x2+b2y2= 1 est b2−b1

a1b2−a2b1

, a2−a1

b1a2−b2a1

.

2

(3)

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).

2

Comme 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.

3

(4)

– Suppression (***). Il pourra aussi ˆ etre possible de supprimer une figure tout en g´ erant les d´ ependances.

3.2 Objets semi-contrˆ olables (****)

Jusqu’ici on n’a d´ efini que des figures ou bien li´ ees (d´ efinies ` a partir d’autres fi- gures) ou bien contrˆ olables (d´ efinies de fa¸ con absolue). Il peut ˆ etre int´ eressant d’avoir des figures semi-contrˆ olables (par exemple un point qui glisse sur une droite), avec un param` etre li´ e que l’on ne g` ere pas directement (ˆ etre sur la droite) et un autre absolu qui est modifiable (la position sur la droite).

La difficult´ e arrive lorsque le param` etre li´ e change. En effet, dans le cas du point sur la droite on se rend compte que la droite ayant boug´ e on ne sait plus o` u est notre point. Le point doit rester sur la droite, libre ` a vous d’interpr´ eter comment sa position (le param` etre absolu) est red´ efinie en fonction des param` etres de la droite (et ce pour chaque type de droite...).

Vous pourrez d´ efinir ainsi : – un point sur une droite, – une parall` ele ` a une droite, – une perpendiculaire ` a une droite, – un point sur un cercle,

– une tangente ` a un cercle,

– une intersection entre deux cercles/triangles.

3.3 Interface

– Am´ elioration du zoom/d´ ezoom (*). Dans le projet minimal, le (d´ e)zoom

´

etait centr´ e sur l’origine. Il est pr´ ef´ erable, pour l’utilisateur du logiciel de dessin vectorial, que le (d´ e)zoom soit centr´ e sur la souris. Vous pouvez impl´ ementer cela.

– Sauvegarde (***). Comme dit pr´ ec´ edemment, on peut impl´ ementer une fa¸con de sauvegarder le dessin en cours (il faut alors utiliser l’API ad´ equate).

4 Pour aller plus loin

Certains TD/TP distribu´ es au long du semestre (ordinaires ou optionnels) proposeront probablement des impl´ ementations d’objets plus avanc´ es pouvant s’int´ egrer ` a votre projet (fractales, courbes de B´ ezier, intersection de courbes...).

Cela d´ ependra ´ evidement du nombre d’´ el` eves choisissant ce projet.

4

Références

Documents relatifs

A vous d’inventer les codes que vous pouvez associer ` ` a chaque bouton pour que votre calculatrice fonctionne comme une calculatrice “normale” : il faudra notamment d´ ecider ce

Modifiez vos classes pour qu’on puisse trouver le propri´ etaire d’un bˆ atiment, le locataire de l’appartement num´ ero n d’un immeuble, les diff´ erents biens immobiliers

Cette interface contiendra la m´ethode Figure deformation(double coeffH, double coeffV) o`u coeffH est le coefficient de d´eformation horizontale, et o`u coeffV est celui

Un joueur lui saura son num´ero (pour simplifier l’affichage) ainsi que le num´ero de la case o`u il est, et contiendra entre autres une m´ethode boolean joueUnTour() qui

Langue et terminolgie économique.

Denition 10.2.3 Sei G eine abelshe topologishe Gruppe. Die Menge aller Äqui- valenzklassen von Cauhyfolgen heiÿt Vervollständigung von G und ist mit G b.. A -Moduln...) sind und

• Les ardinalités de l'assoiation entre les ensembles d'entités Numéro et Artile sont 1:N-1:M, ar un artile peut apparaître dans plusieurs numéros et un numéro ontient

Après avoir résolu les inéquations nécessaires, établir le tableau de signe des expressions suivantes :