Vous êtes sur la page 1sur 2

POO : Projet de Fin de Module

Problème du triangle optimal

Partie A:

1. Définir une classe ​Point qui modélise un point dans un espace à 2 dimensions (on
supposera que les coordonnées sont représentées sous forme de réel). En plus des accesseurs
cette classe doit fournir une méthode ​distance telle que, si ​p et ​q ​sont des instances de
Point :

p.distance(q) -> retourne la distance qui sépare les points p et q.

p.distance() -> retourne la distance de p par rapport à l'origine.

NB:​ Math.sqrt(double d) retourne la valeur de la racine carrée de d.

2. Définir une classe ​Polygone qui modélise un polygone dans un espace à 2 dimensions. Le
nombre de côtés du polygone est donné en paramètre de construction et ne pourra pas être
changé par la suite, par contre les points définissant les extrémités du polygone pourront
être manipulés. Pour cela la classe doit fournir les méthodes:

- ​int nbrCotes()​ , retourne le nombre de côtés du polygone.

- ​Point getPoint(int n)​ , retourne le point numéro ​n ​(si le polygone contient N points on
numérote les points de 0 à (N-1)).

- ​void changePoint(int n, Point p) ​et​ void changePoint(int n, int x, int y) ​ pour


changer la valeur d'un point.

​Remarque​: on fera attention de NE PAS définir un attribut nbrCotes dans la classe Polygone!

3. Ajouter à la classe Polygone la méthode ​périmètre ​qui calcule et retourne la valeur du


périmètre du polygone.
4. Ecrire un programme qui instancie un polygone à 6 côtés. Puis qui modifie les coordonnées
d'un des points extrémités choisi au hasard. Les nouvelles coordonnées de ce point doivent
chacune être tirées aléatoirement dans l'intervalle [0;300]. L'opération est répétée avec un
autre point jusqu'à ce que le périmètre du polygone atteigne (ou dépasse) la valeur 600.
NB: La fonction ​Math.random() retourne une valeur décimale aléatoire comprise dans
l'intervalle [0;1[ .
5. Ecrire une classe ​Triangle telle qu'il soit possible de créer un triangle à partir de 3 Point, et
que l'on puisse à tout moment changer la position d'un des sommets du triangle. On créera
un constructeur ​Triangle(Point p0, Point p1, Point p2).
6. Ajouter à la classe ​Triangle la méthode ​superficie ​qui calcule et retourne la valeur ​de la
superficie ​d’un Triangle.
7. Donner le Diagramme de Classe.

Master MASI 2019-2020 1


Partie B:​ Dessin avec Swing Or JavaFx
Site de référence : ​https://koor.fr/Java/TutorialSwing/first_application.wp
Vous êtes Invité à utiliser votre imagination et à proposer une interface utilisateur qui permet de
tracer les triangles, zoomer, tracer l'enveloppe convexe et enfin le triangle à surface minimale.

Partie C :​ Calcul de l'enveloppe convexe


En algorithmique géométrique, le ​calcul de l'enveloppe convexe est un problème algorithmique.
Il consiste, étant donné un ensemble de points, à calculer leur ​enveloppe convexe​.

1. Ecrire une méthode ​PointAuHasard qui génère un ensemble de n points du plan (on
prendra n = 20). Dans la plage [0,100]*[0,100]
2. Ecrire une méthode ​AnglePolaireInferieur qui prend en entrée trois points du plan p0, p1 et
p2 (donnés par leurs coordonnées) et qui renvoie Vrai si p2 est strictement à droite de la droite
(p0p1) orientée de p0 à p1 et Faux sinon.
3. Listes des algorithmes a implementer :
a. La ​marche de Jarvis : ​https://fr.wikipedia.org/wiki/Marche_de_Jarvis Ecrire
une méthode ​Jarvis​, codant le parcours de ​Jarvis​, qui prend en entrée un ensemble Q
de n points du plan numérotés de 0 à n − 1, donnés par leur coordonnées, et qui
retourne une liste ​envconv contenant la liste cyclique des indices des points formant
les sommets de l’enveloppe convexe de Q. On commencera et terminera cette liste par le
point d’ordonnée minimum. Une telle liste peut être codée par un tableau de taille n + 1,
contenant les indices des sommets de l’enveloppe convexe et complétée par les valeurs
-1.
b. L'​algorithme de Chan : ​https://fr.wikipedia.org/wiki/Algorithme_de_Chan

La réalisation d’une simulation serait un plus.

Partie D:​ le probleme du triangle a surface minimale


Le but de cette partie est d’élaborer un algorithme qui permet de déterminer le triangle à
surface minimale qui contient l'enveloppe convexe englobant l’ensemble des triangles.

Master MASI 2019-2020 2

Vous aimerez peut-être aussi