Page d'accueil

Espace Pro      
 Mon CV                      
  CV intéractif              
  CV Classique          
  CV imprimable        
  Téléchargement      
 Mes Projets              
  Statistiques              
  C.A.O.                        
  Programmation       
  Contact                     
Espace Perso  
 Liste DVD                  
Accueil programmation | Manipulations, Schémas et Formules | Images de surfaces | Makefile | NURBS.cpp | PLSV.cpp | PLSV.h | Surface.cpp | Surface.h | Vu.cpp | Vu.h | Rn.h | LesFichiers.h

PROJET : Développement C++ sous Linux :

Description du projet : tous les fichiers sauf les fichiers Surface nous ont été donnés. Le programme sur lequel nous avons du travailler gérait toute la partie de saisie, d'interface utilisateur et programme, concernant le tracé de points, et de lignes NURBS.

But : Nous devions upgrader ce programme de telle manière qu'il devait être capable de générer toutes les surfaces usuelles ainsi que les surfaces spéciales communes. Pour cela le cours de CAO de Maîtrise d' Ingénierie Mathématique nous fournissait toutes les connaissances en géométrie différentielle nécessaires et requises pour la mise en oeuvre des théories sur les courbes et surfaces de Béziers, B-Spline et NURBS. L'objectif était de programmer un maximum de fonctions de tracé de surfaces.

Ce que nous avons fait : dans un premier temps, nous n'avons pas voulu alourdir PLSV.cpp et PLSV.h, car ceux-ci étaient déjà volumineux : c'est la raison pour laquelle nous avons externisé les classes et fonctions concernant les surfaces dans 2 fichiers dédiés : Surface.cpp et Surface.h. Il a ainsi suffi de rajouter une ligne à PLSV.cpp : include<#Surface.h>, et de rajouter la dépendance Surface.cpp dans l'éditeur de liens (Makefile). Ensuite le travail de structuration des classes à définir dans Surface.h a été inspiré par le travail précédemment établi sur les classes ligne et ligneNURBS de PLSV.h.

Ensuite il a fallu mettre en forme nos connaissances mathématiques pour pouvoir les programmer : la première tentation fut de faire dériver les surfaces classiques issues de révolution d' une classe surfacerev, mais cela supposait le passage des données rentrées par l' utilisateur dans le corps des fonctions de classe dérivée : cela s'est avéré très riche en erreurs de programmation, nous avons abandonner cette solution, c'est pourquoi, surfacesphère, surfacetore, surfaceparabolloide, ... ne dérivent que de la classe surface et non de la classe surfacerevolution. Ensuite, une fois les structures en place, il restait à remplir les corps des fonctions dans Surface.cpp.

Enfin nous avons modifié NURBS.cpp qui s'occupait de toute l'interface utilisateur, de telle sorte que l'utilisateur ait accès aux nouvelles fonctions de surface via des menus adaptés.

Une fois, tous les fichiers d'édition écrits, il fallait créer le Makefile adapté : la cible Surface.o n'était pas nécessaire à créer puisque c'était une dépendance déclarée de PLSV.cpp : ainsi il a suffi de rajouter Surface.cpp dans la ligne des dépendances de la création de PLSV.o.

Puis de jour en jour nous avons rajouté des fonctions de surface, jusqu' à obtenir la liste suivante :

Surfaces issues d'une révolution : sphère, cône, paraboloïde, tore, cylindre et surfaces de révolution

Surfaces issues d'un produit tensoriel de 2 courbes NURBS : réglée, extrudée, gauche, NURBS, Béziers, hélicoïde, triangle, bilinéaire.

Nous vous invitons à parcourir le contenu de ces différents fichiers : ils sont tous longuement commentés.