La présentation de ce site est conforme aux standards actuels ; sa présentation est optimale avec un navigateur récent.

Programmation graphique et C++ (In3PrGraC++)

uk English version 

Professeurs : Bernard Frank; Grégory Seront;

Nombre d'heures : 48

Période :Semestre 1

Type de cours : cours magistral

Objectifs :

C++

Etude des concepts fondamentaux de la Programmation Orientée Objet, mettant en évidence les similitudes et les différences entre Java et C++.

Principes de Programmation Graphique

Les informaticiens peuvent être concernés par les domaines d'application suivants :

1. Visualiser des données commerciales, scientifiques, système en 2 dimensions (2D) et en 3 dimensions (3D).

2. Réaliser une présentation graphique d'un produit ou d'un site; un mode d'emploi, un didacticiel, un jeu, un manuel utilisateur illustrés graphiquement et interactifs.

3. Le domaine des outils assistés par ordinateur : dessin assité par ordinateur (DAO), conception assitée par ordinateur (CAO), fabrication assitée par ordinateur (FAO).

De nombreux logiciels (grand public ou spécialisés) existent pour le domaine 1.  Le domaine 3 est en dehors du créneau de nos gradués en informatique.

Le cours vise donc le domaine du point 2.

Au terme de l'enseignement proposé, l'étudiant maitrisera les principes de base indispensables pour définir des modèles graphiques en 3 dimensions, les animer, et permettre à l'utilisateur d'interagir avec l'image apparaissant à l'écran.

Compétences :


Prérequis :

C++

Connaissance des langages C et Java.

Principes de Programmation Graphique

  • Algorithmique
  • Calcul numérique
  • Langage C
  • Structures de données

Contenu du cours :

C++

Ch 1: Introduction:

- Pourquoi le C++?

- Principales différences Java/C++

- La compilation séparée

- La gestion de la mémoire

- Fonctions et surdéfinition des opérateurs

Ch 2. La couche Objet

- Notions de classe, d'objets

- Encapsulation

- Héritage simple

- Polymorphisme (mécanisme des fonctions virtuelles)

- Classes abstraites

- Héritage multiple

Ch. 3 La programmation générique

- Patrons de classe

- Instanciations des classes génériques

- Définition des classes génériques

Ch. 4 Gestion des exceptions

- Définition des exceptions

- Gestions des exceptions

- Exceptions standards

Ch. 5 Introduction à la librairie standard C++

- Les conteneurs et itérateurs

- Algorithmes standards

- Accès fichiers

Principes de Programmation Graphique

Le cours introduit les sujets suivants :

-Description d'une scène 2D ou 3D faisant appel à des objets graphiques structurés

-Manipulation d'une scène et restitution à l'écran : transformations géométriques, techniques de projection

-Habillage d'une scène : lumière et matière et/ou textures et/ou effet de brouillard

·Structure et mouvement : gérer des opérations sur les objets de la scène, des relations entre ceux-ci et leur comportement dynamique éventuel

·Interface utilisateur : gérer les interventions de l'utilisateur via le clavier et la souris

Le cours se structure comme suit.  Néanmoins, l'ordre dans lequel les sujets sont abordés peut varier d'une année à l'autre.

  • Introduction
  • Modèle élémentaire en 2 dimensions : coordonnées de dessin ; modèle de couleur ; zone de projection à l'écran
  • Les primitives graphiques : primitives graphiques élémentaires ; caractéristiques élémentaires ; quadriques ; déplacer un objet
  • Fenêtre d'écran et viewport : fenêtre d'écran ; viewport et matrice de projection ; redimensionnement de la fenêtre d'écran par l'utilisateur ;  gestion de plusieurs viewports ; sélection par inversion des coordonnées d'écran
  • Transformations géométriques en 2D : représentation matricielle ; translation ; rotation ; transformation d'échelle ; coordonnées homogènes ; composition de transformations ; la matrice de "modelview"
  • Modèle en 3D : généralisation du modèle 2D ; projection en perspective ; projection parallèle ; construction d'une projection
  • Positionnement et animation : ordre de succession des transformations géométriques ; modèle "hiérarchique" ; animer le modèle ; les surfaces cachées
  • Displat lists : avantages et désavantages ; création et exécution d'une display list
  • Lumière et matière : les composantes de la lumière ; source de lumière ; caractéristiques des matériaux ; modèle d'éclairage ; animer les sources de lumière ; principes de calcul d'un modèle d'éclairage
  • Sélection par intersection d'un volume avec le modèle : principe ; la pile des noms ; mode de sélection et buffer de sélection ; sélection à l'aide de la souris

Méthode d'enseignement :

C++

Cours théorique et réalisation d'une application graphique

Principes de Programmation Graphique

  • Exposés
  • Exercices (travaux dirigés)

Lectures recommandées :

C++

--DELANNOY C., "Programmer en langage C++", Eyrolles

--STROUSTRUP B., "Le langage C++", Addison-Wesley

--Cours de C++, C. Casteyde (online course)

Principes de Programmation Graphique

FOLEY, van DAM, FEINER, HUGHES, "Computer graphics, principles and practice", Addison-Wesley, 1996, ISBN 0-201-12110-7

Méthode d'évaluation :

C++

Evaluation d'une application réalisée en C++ pendant le semestre et examen écrit sur machine

Principes de Programmation Graphique

  • Evaluation continue
  • Examen écrit