Partie VI – Objets graphiques
TD1
A effectuer en dehors du cours
Cette partie vise à définir des classes pour des objets graphiques. La plupart des bibliothèques d’interfaces graphiques sont écrites dans des langages orientés objets, qui sont particulièrement adaptés pour. Dans cette partie, nous définissons les classes de points, de segment et de droite dans le plan.
Question n°1
En vous inspirant du code fourni, écrivez, compilez et mettez au point en C++
Une classe Point
, comprenant une abscisse entière et une ordonnée entière et donnant un accès à ces champs.
Une classe Segment
constituée de deux extrémités sous la forme de Point
. Un segment est construit à l’aide de deux points et doit fournir les méthodes suivantes
une méthode pour tester si un point appartient au segment.
une méthode qui teste l’intersection du segment avec un autre segment. Cette méthode retourne vrai s’il existe une l’intersection ainsi que le point d’intersection faux, dans le cas contraire.
Une classe Droite constituée d’un Point et d’un vecteur indiquant la direction, vecteur également constitué d’une partie abscisse et d’une partie ordonnée et doit fournir les méthodes suivantes
un constructeur à partir d’un segment,
un constructeur à partir d’un point et d’un angle
un constructeur à partir de deux points
une méthode qui teste l’intersection de la droite avec une autre droite. Cette méthode retourne vrai s’il existe une l’intersection ainsi que le point d’intersection faux, dans le cas contraire.
une méthode qui teste l’intersection de la droite avec un segment. Cette méthode retourne vrai s’il existe une l’intersection ainsi le point d’intersection faux, dans le cas contraire.
Question n° 2
Ajouter à toutes ces classes des méthodes d’affichage pour le déboguage que l’on appellera print
.
Question n° 3
A la classe Droite
Ajouter une méthode rotate90() effectuant une rotation de 90 degrés à une droite.
Ajouter une méthode move(int x, int y) effectuant une translation à une droite.
Question n° 4
Tester votre classe sur le code suivant :
#include <iostream>
int main() {
Droite d1(Point(0,0), Point(4, 2));
Droite d2(d1);
d1.print();
std::cout << std::endl;
d2.print();
std::cout << std::endl;
d1.rotate90();
d1.print();
std::cout << std::endl;
d2.print();
return 0;
}