Visualisation de courbes 3d

Tuteur : Philippe Blayo      Mel: blayo@univ-mlv.fr   

Langage de programmation : C++ et TK ou X11/Motif (eventuellement Java)
Environnement de développement : UNIX, LinuX
Cotation de difficulté : normal à difficile
 

Résumé du projet : Ce projet a pour but la visualisation de courbes 2d ou 3d definies au format gnuplot.

Le sujet du projet

    Il s'agit d'afficher des courbes et de modifier le point de vue pour examiner ces courbes sous differents angles : zoomer, tourner autour d'un axe, realiser une translation ...

Format d'entree

    Une courbe sera representee par une suite de segments de droites. Dans le format gnuplot, un fichier contenant une telle courbe sera de la forme suivante :
      # premier segment de droite
      <x11> <y11> <z11>
      <x12> <y12> <z12>
      <x12> <y12> <z12>
     
      # deuxieme segment de droite
      <x21> <y21> <z21>
      <x22> <y22> <z22>
     
      ...
     
      # nieme segment de droite
      <xn1> <yn1> <zn1>
      <xn2> <yn2> <zn2>

    Chaque segment est separe du suivant par une ligne vide. Un fichier peut contenir plusieurs courbes. Dans ce cas, chaque courbe est separee de la suivante par une ligne vide de plus.

Exemple

Un exemple de courbe :

exemple de courbes
Le fichier permettant de l'obtenir :
      0 0 1
      1 1 1
      4 0 1
      1 -1 1
      0 0 1
     
     
      0 0 1
      1 -0.5 3
      3 0 1
      0 0 1
     
     
      0 0 1
      1 0.5 3
      3 0 1
      0 0 1

Choix du langage

 Le projet devra etre realise en C++. L'interface pourra etre programmee soit en Tk soit en X11/Motif (eventuellement meme tout pourrait etre realise en Java).
    Au cours d'une premiere etape, il serait souhaitable de realiser des tests comparatifs pour determiner entre Tk et Motif (ou Java) lequel est le plus adapte aux contraintes de performances necessaires a ce projet. Il est probable que les resultats seront meilleurs avec Motif (pour Java il faudrait tester different JIT). Mais si la difference est faible, Tk sera prefere pour sa portabilite.
    Ces test pourraient etre constitues d'affichages successifs de droites dans une fenetre pour evaluer la vitesse de rafraichissement qui sera determinante pour la fluidite des changements d'angle de vue.

Affichage

    Le programme devra afficher les courbes definies dans un ou plusieurs fichiers.
    Une option interessante est de supprimer les parties cachees :
exemple de courbe avec parties cachees

    Dans tous les cas, il s'agit de realiser une projection en perspective des points des courbes sur l'ecran. Des documents seront fournis expliquant comment utiliser le theoreme de Thales pour le faire.

Mouvements

    L'ecran representera l'objectif d'une camera. Les operations suivantes devront permettrent de modifier le point de vue en deplacant cette camera :
    Il serait egalement interessant de pouvoir realiser des operations sur les courbes elles-meme : Le but est de faire en sorte que ces opérations soient aussi rapides que possible. A cette fin, toute technique d'optimisation pourra etre utilisee, principalement : Il serait interessant de pouvoir evaluer le gain de chaque optimisation realisee par des tests specifiques.

    Les resultats de tous les tests devront figurer dans le rapport.

Difficultés

La difficulte normale du projet correspond a un affichage statique des courbes sur l'ecran (sans aucun mouvement de camera possible). Dans ce cas, il faudrait pouvoir surligner certaines courbes ou certaines parties de courbes. Il serait egalement plus facile d'eliminer les parties cachees.

Le projet devient difficile si des mouvements relativement fluides sont executes. Les difficultées à se situent alors a plusieurs niveaux :

Retour à la liste des projets.