User Tools

Site Tools


in204:tds:sujets:td1:part4_std

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;
}
in204/tds/sujets/td1/part4_std.txt · Last modified: 2022/11/18 10:50 (external edit)