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

Comment faire pour tester notre logiciel ?

Dans un premier temps, logez-vous sous Linux et créez vos fichiers .cpp et .h en copiant collant le texte des fichiers disponible à partir de la frame de gauche. Faites attention de bien garder le nom des fichiers. Placez tous ces fichiers dans un même répertoire (dans /home/profile/CAO/ par exemple où profile est votre pseudo d'utilisateur sous Linux).

Puis ouvrez un terminal (par exemple XTerm) et tapez les commandes suivantes de telle façon que vous verrez :

[profile@localhost.profile[$ /bin/bash
[profile@localhost.profile[$ cd CAO
[profile@localhost.profile[$ ls -l
NURBS.cpp PLSV.cpp PLSV.h Surface.cpp Surface.h
Vu.cpp Vu.h Rn.h LesFichiers.h Makefile
[profile@localhost.profile[$ make all
Création des cibles : Vu.o PLSV.o et l'exécutable NURBS. Si cela ne marche pas, regardez dans les fichiers les conseils donnés : en effet suivant les distributions Linux, les emplacements des librairies X11R6 ne sont pas les mêmes.
[profile@localhost.profile[$ ./NURBS
C'est l'exécution du programme, la fenêtre d'interface graphique apparaît.

Schéma général du programme : dépendances et hérédité :


Pour manipuler le programme, commencez par définir des points par accrochage à la grille ou en tapant les coordonnées à la main.Si des points tapés ne sont pas dans le plan de base (x; y), allez sur tracer/tout et alors une vue isométrique de l'univers apparaît et permettra l'accrochage en 3D des points.

Ensuite définissez des lignes, cercles ou lignes NURBS (ou Béziers). Pour cela on rappelle comment on définit les courbes NURBS : soit k le nombre de points de contrôles, on peut faire une courbe définie à partir d' un jeu de noeuds Ui ( valeurs réelles ) de multiplicité mi, continue aux valeurs des noeuds de classe C(k-mi) . La courbe se trouve dans la concavité de ses points de contrôles affectés de poids. NURBS veut dire "Non Uniform Rational Beta Spline", c'est à dire, une courbe beta-spline où les noeuds ne sont nécessairement pas distribués de façon uniforme et chaque point est affecté d'un poids.

Une fois vos courbes Nurbs ou Béziers définies vous pouvez rentrer dans le menu des surfaces. L'interface utilisateur découle tout naturellement des définitions mathématiques de celles-ci : c'est la raison pour laquelle nous allons faire quelques rappels sur les surfaces Nurbs.

En fait, toutes les surfaces du logiciel sont du type NURBS, sauf celle de Béziers qui pourrait, néanmoins, être considérée comme un cas particulier d'une surface NURBS sous certaines conditions.

Les surfaces NURBS sont formées à partir d'un produit tensoriel de courbes NURBS. Ceci est en fait une sorte d'extrusion d'une des courbes tout au long de l'autre. Les points de contrôle de la surface définie par un produit tensoriel de 2 courbes NURBS sont définis par la formule suivante :

où les Pi sont les Points de Contrôle de la première courbe, et Qj ceux de la seconde.

On rappelle que H est la projection homogène usuelle.

Les poids dépendent directement de ceux des deux courbes : nous avons pris la moyenne des poids correspondants sur les courbes. Et les noeuds sont pris directement sur chacune des courbes sur chacun des paramètres.

A présent, voici les parallèles mathématiques-programmation :

Surface NURBS et Béziers :

Les surfaces de Béziers sont assez similaires aux surfaces NURBS. En fait, on verra qu'elles sont un cas particulier de celles-ci. Une surface de Béziers est toujours définie par un produit tensoriel de deux courbes de Béziers. Chaque courbe de Béziers est déterminée par quelques points de contrôle, chacun affecté d'un poids relatif aux autres. Une courbe de Béziers est un cas particulier de courbe NURBS où l'ensemble des noeuds est {0, 0, ..., 0, 1, 1, ..., 1}. Donc pour faire une surface de Béziers il suffit de calculer une surface NURBS avec cet ensemble de noeuds pour chacun des paramètres, dans le cas où l'on veut taper tous les points de contrôle. Où, encore plus facilement, il suffit de faire une surface NURBS avec deux courbes de Béziers comme facteurs du produit tensoriel. Et c'est ce que nous avons programmé.Donc, pour conclure, notre surface de Béziers est un cas particulier d'extrusion d'une courbe de Béziers suivant la direction d'une autre courbe de Béziers.

Surface Bilinéaire :

Surface extrudée suivant un chemin élémentaire :


La surface extrudée suit un segment de droite orthogonale au SCU. La hauteur est demandée à l'utilisateur, et la courbe génératrice de l'extrusion se déplace verticalement (par rapport au SCU) et ainsi construit la surface. Cette surface n'est qu'un cas particulier de surface NURBS avec un segment comme deuxième courbe. Les noeuds du premier paramètre de cette surface sont pris de la courbe génératrice, et ceux du deuxième sont toujours {0, 0, 1, 1}. Avec les poids, c'est pareil : ceux de la courbe pour le premier paramètre et l'ensemble {1, 1, ..., 1} pour le deuxième.

Surface gauche :

Pour chaque point de contrôle de la surface il s'agit de faire une moyenne pondérée avec les quatre points de contrôle correspondants aux courbes génératrices de la surface. Plus on est proche d'une des courbes, plus ses points de contrôle pèsent sur la surface. Mathématiquement : où Sij sont les points de contrôle de la surface, PAi et PBi ceux des deux premières courbes opposées, et QAj et QBj ceux des deux secondes courbes opposées. Cette méthode a apporté des résultats étonnamment bons, et nous trouvons qu'elle est largement plus facile à concevoir et programmer que le procédé de trouver les points de contrôle à partir des points par lesquels les courbes doit passer.

Surface de Révolution :

Surface Réglée :

Il faut faire attention à l'ordre dans lequel les points de chaque courbe sont choisis, parce que la surface peut être tordue s'ils sont pris à l'inverse. Dans notre programme, il suffit de prendre une matrice de N x 2 points de contrôle, où N est le maximum des degrés des courbes. Comme nous allons utiliser N points de contrôle de chaque courbe, il faut augmenter le degré de la courbe du plus petit degré; mais pour ceci nous avons une fonction spécifique qui, hélas, ne fonctionne que pour les courbes de Béziers.

Surface triangulaire par méthode barycentrique à partir de trois courbes NURBS :


Méthode de génération d'une sphère :


Méthode de génération d'un cylindre :


Méthode de génération d' un tore :


Méthode de génération d'un cône à partir de sa génératrice :


Méthode de génération d'un hélicoïde :


Méthode de génération d'un paraboloïde :


Schéma d' affectation de la couleur selon l' angle de visée dans l' axonométrie :