« INFO821 : Infographie » : différence entre les versions
(→TPs) |
|||
| Ligne 1 : | Ligne 1 : | ||
== TPs == |
== TPs et TDs == |
||
On va partir d'un code fourni par l'enseignant et le développer avec divers outils. |
|||
TP : être capable de lire le format des fichiers '''.mesh''' sur le site [http://www-roc.inria.fr/gamma/download d'image 3D de l'INRIA] et d'afficher |
|||
Pour utiliser ce programme il faut |
|||
ces images en OpenGL |
|||
OCaml (version >= 3.11.1 recommandé) |
|||
TP2 : représentation des surfaces orientables par le type vu en cours |
|||
lablGL (version récente recommandé) |
|||
darcs (version >= 2.0 indispensable) |
|||
et les outils de développement usuel (make ou gnumake, un compilo C, etc ...) |
|||
Tous ces logiciels exitent en paquet ubuntu/debian/fink et pleins d'autres ... |
|||
avec fink (OS X) la compilation de darcs prends beaucoup de temps. |
|||
Une fois que tout ça est installé, il faut taper : |
|||
<source lang=bash> |
|||
darcs get http://lama.univ-savoie.fr/~raffalli/repos/Infographie |
|||
make depend |
|||
make |
|||
</source> |
|||
Vous pouvez tester le code en tapant (XXX.mesh étant le nom d'un fichier fourni dans le répertoire Mesh) |
|||
<source lang=bash> |
|||
./vmesh.opt Mesh/XXX.mesh |
|||
</source> |
|||
Pour utiliser darcs, il faudra |
|||
* enregistrer vos changements avec la commande |
|||
<source lang=bash> |
|||
darcs record |
|||
</source> |
|||
* aller chercher les changements des autres (et du prof.) avec la commande |
|||
<source lang=bash> |
|||
darcs pull URL |
|||
</source> |
|||
Attention, après un '''darcs pull''' vous aurez souvant des conflits à gérer indiquer dans les fichiers. Il faut toujours faire un '''darcs record''' avant un '''darcs pull''' sinon on ne peut pas faire '''darcs unpull'''. |
|||
Si vous voulez propager vos changements vers un serveur web pour les partager, la commande '''darcs push''' pourra être utile |
|||
Prochain TD : dessin de courbes implicites. |
|||
== Représentation des objets == |
== Représentation des objets == |
||
Version du 13 janvier 2010 à 16:38
TPs et TDs
On va partir d'un code fourni par l'enseignant et le développer avec divers outils. Pour utiliser ce programme il faut
OCaml (version >= 3.11.1 recommandé) lablGL (version récente recommandé) darcs (version >= 2.0 indispensable) et les outils de développement usuel (make ou gnumake, un compilo C, etc ...)
Tous ces logiciels exitent en paquet ubuntu/debian/fink et pleins d'autres ... avec fink (OS X) la compilation de darcs prends beaucoup de temps.
Une fois que tout ça est installé, il faut taper :
<source lang=bash> darcs get http://lama.univ-savoie.fr/~raffalli/repos/Infographie make depend make </source>
Vous pouvez tester le code en tapant (XXX.mesh étant le nom d'un fichier fourni dans le répertoire Mesh)
<source lang=bash> ./vmesh.opt Mesh/XXX.mesh </source>
Pour utiliser darcs, il faudra
- enregistrer vos changements avec la commande
<source lang=bash> darcs record </source>
- aller chercher les changements des autres (et du prof.) avec la commande
<source lang=bash> darcs pull URL </source>
Attention, après un darcs pull vous aurez souvant des conflits à gérer indiquer dans les fichiers. Il faut toujours faire un darcs record avant un darcs pull sinon on ne peut pas faire darcs unpull.
Si vous voulez propager vos changements vers un serveur web pour les partager, la commande darcs push pourra être utile
Prochain TD : dessin de courbes implicites.
Représentation des objets
Nombres
- Nombres entiers (pb de taille)
- Nombres flottants (pb de précision) norme IEEE 754
Points
- Tableaux (ou liste)
- Coordonnées cartésiennes ou projective
- On ne calcule qu'une fois les coordonnées de chaque point
Courbes
- Liste ou tableaux de pointeurs ou d'indices
- Courbe paramétrée
- Discrétisation à vitesse constante
Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle \delta_x = \sqrt{x'^2 + y'^2}.\delta_t \Rightarrow \delta_t = \frac{\delta_x}{\sqrt{x'^2 + y'^2}}}
- Discrétisation utilisant la courbure:
Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle \delta_x = \alpha \frac{x' y'' - x'' y'}{(x'^2 + y'^2)^\frac{3}{2}} \Rightarrow \delta_t = \alpha \frac{x' y'' - x'' y'}{(x'^2 + y'^2)^2} }
Surfaces
- Liste de triangles
- Liste de Quadrilatères et polygones (attention plan) (fin du cours du 11 janvier)
- Représentation avancée par demi-arrêtes
- Surfaces paramétrées
- Surfaces implicites
Triangulation de surfaces implicites Algorithme du marching-cube
- Idée générale
- Découpage du cube en tétrahèdre
- Algorithme
Traitement des triangulations
- Permutation des arrêtes
- Changement de résolution
Triangulation de nuages de points
Utilisation d'OpenGl
Bases mathématiques (vues au fur et à mesure)
Coordonnées cartésiennes dans le plan et l'espace
- Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (x,y) \in \mathbb{R}^2} dans le plan
- Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (x,y,z) \in \mathbb{R}^3} dans l'espace
- Généralisation dans Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle \mathbb{R^n}}
Distinction en point et vecteur (direction).
Problèmes de représentation en machine : virgule flottante, virgule fixe, entier ... Tableau ou enregistrement (record).
Opérations sur les vecteurs : sommes, multiplication par un scalaire, produit scalaire et produit vectoriel.
Coordonnées projectives dans le plan et l'espace
Idée : ajouté les points à l'infini. Intérêt : simplifie beaucoup de choses (transformation affine, projection, classification des quadriques, ...)
- Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (x:y:t) \in \mathbb{P}^2} dans le plan projectif si Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (x,y,t)\neq(0,0,0)} . De plus si Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle a \neq 0} , Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (x:y:t)=(ax:ay:at)}
- Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (x:y:z:t) \in \mathbb{P}^3} dans l'espace projectif
- Généralisation dans Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle \mathbb{P}^n}
Comparaison avec les coordonnées cartésiennes : Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (x:y:z:0)} est le point à l'infini dans la direction (x,y,z) ou (-x:-y:-z). Parfois utile de distinguer Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (x:y:z:0)} de Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (-x:-y:-z:0)} . Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (x:y:z:t)} représente le point Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (x/t,y/t,z/t)} si Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle t\neq 0} . Donc le point de coordonnées cartésiennes à les coordonnées projectives pour tout Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle a} .
Opération sur les vecteurs : attention à la somme !
Équation d'un plan et d'une droite
Donnée d'une droite du plan par un point Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (x_0,y_0)} et une direction Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (u,v)} . Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (-v,u)} est alors une direction orthgonale (on dit normale à la droite). Équation implicite en cartésien : Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle \langle (x-x_0, y-y_0) \mid (-b, a)\rangle = 0} . C'est à dire: Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle -vx + uy + vx_0 - uy_0 = 0} . En projectif: Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle ax + by + ct = 0} (l'équation est homogène).
Donnée d'un plan de l'espace par un point Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (x_0,y_0,z_0)} et une direction normale Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (a,b,c)} . Équation implicite en cartésien : Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle \langle (x-x_0, y-y_0, z-z_0) \mid (a, b, c)\rangle = 0} . C'est à dire: Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle ax + by + cz - ax_0 - by_0 -cz_0 = 0} . En projectif: Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle ax + by + cz + dt = 0} (l'équation est homogène).
Donnée d'une droite de l'espace par un point Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (x_0,y_0,z_0)} et une direction Échec de l’analyse (SVG (MathML peut être activé via une extension du navigateur) : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle (u,v,w)} . ...