« INFO821 : Infographie » : différence entre les versions
| Ligne 1 : | Ligne 1 : | ||
== TPs et TDs == |
== 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 indiqués 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 pour éviter de ce logger sur le serveur. |
|||
=== TD1 === |
=== TD1 === |
||
Version du 8 janvier 2012 à 22:05
TPs et TDs
TD1
- Dessiner un ruban de Moebius.
- Le relier à un disque avec des courbes de Bézier.
- Faire une animation pour mieux montrer ce qui se passe.
- Eliminer les arrêtes trop petites.
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 É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)} à les coordonnées projectives É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:ay:az:a)} 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)} . ...