Définition des besoins



1- Prototype papier

2- Besoins fonctionnels

Les fonctionnalités de la bibliothèque graphique doivent êtres les suivantes :

Nécessaires :

Utilisation de modes permettant de définir des environnements temporaires :

Facultatives :

Définitions des fonctions publiques de la bibliothèque :

Opérations sur les points (vertex) :

Figure 1. Schéma général de transformation d'un point.

Opérations sur les matrices :

Il y a deux matrices courantes, matrices globales permettant toutes les opérations :

Opérations générales sur la matrice courante:

Opérations sur les caméras (viewing transformation) :

Positionnement de caméra :

Spécification d'un frustum pour la projection perspective:

Spécification d'un viewport (fenêtre dans laquelle va s'effectuer le tracé :

Le viewport permet d'avoir plusieurs vues d'un meme objet observé sous des angles différents, comme le font les modeleurs 3D.

3- Besoins non fonctionnels

Bibliothèque mathématique :

La plupart des opérations précédentes utilisent des opérations mathématiques sur des vecteurs et des matrices. Cette bibliothèque donnant les bases de toute l'application, doit être particulièrement optimisée, en effet la contrainte la plus importante du projet est celle de la vitesse. Le temps de calcul doit donc être minimisé au niveau de la partie mathématique. En effet les transformations effectuées sur les points (Figure 1.) montrent toutes les multiplications matrices-vecteurs produites pour un seul affichage.

Cette bibliothèque sera composée des opérations suivantes :

La gestion des erreurs:

L'implémentation d'OpenGL (en C) génère dans certains cas une erreur si des arguments passés aux fonctions sont incorrects. Il est alors â la charge du programmeur d'appeler glGet() pour savoir si une erreur s'est produite ou pas. En Lisp, les avantages sont déjâ importants, il sera possible d'utiliser les mécanismes d'exceptions (conditions) pou systématiquement signaler les erreurs â la compilation.

Utilisation des blocs Begin/End :

Avec OpenGL, les primitives de tracé ne sont valides que dans un bloc Begin()/End(), ainsi qu'un certain nombre d'autres informations relatives â chaque vertex (couleur, normale, ...). Une macro lisp utilisée pour les blocs Begin/End d'OpenGL nous permet de vérifier *â la compilation* plutôt qu'â l'exécution la validité du corps du bloc : c'est une source d'erreur en moins pour le programmeur.

 

 

4- Plate-forme cible et de développement

L'objectif est de faire tourner l'application sur un PC ayant CMU CL, et donc tournant sous Linux ou Unix.
Aucune accelération matérielle n'est envisagée ou requise.

 

5- Analyse des risques

Le principal risque va être dû â l'utilisation de la bibliothèque CLX. Cette bibliothèque pose de nombreux problèmes, elle est de réalisation assez ancienne (1988-1989), et l'évolution de l'environnement X soulève de nombreuses questions. Nous ne savons pas si CLX sera totalement optimisée, ce qui rend dépendante la contrainte sur la vitesse d'exécution du projet.

Le projet en lui-même ne pose pas de problème de développement (projet trop important, ou trop court). En effet, une fois le noyau mathématique réalisé et les primitives de bases réalisées, la programmation se fera de manière incrémentielle. De cette façon, avec le langage Common LISP, les fonctions pourront en plus êtres testées au fur et â mesure. Nous pourrons donc avoir â la fin du projet un ensemble de fonctionnalités valide et utilisable.

 

6- Lexique

 

 



accueil