TD 7 : surfaces de subdivision

Résumé du TD

Nous allons voir un nouveau schéma de subdivision, ainsi que la façon de l'étendre aux surfaces.

Instructions

On part du squelette de programme fourni.
Tout se passe dans la fonction display. Le programme définit une grille de points de contrôle (stockée dans le tableau grid), et il vous reste à les subdiviser pour faire une surface de subdivision.

On utilise une méthode tensorielle :

Je suggèere de définir deux tableaux auxiliaires, grid_sub_l (après une subdivision sur les lignes) et grid_sub_lc (après subdivision sur les lignes et les colonnes). L'affichage est déjà fait, il vous reste juste à travailler la subdivision.

On va utiliser un schéma de subdivision très simple :

'Tention, il y a un piège

Pour ne pas avoir juste un carré de surface isolé, on va définir la grille et la surface comme un cylindre : les points de la grille forment un cercle (pour les lignes, mais pas pour les colones).

Ca change votre schéma de subdivision, et surtout il ne doit pas être le même suivant i et j (il doit y avoir de légères différences dans l'implémentation).

Sur les lignes, ça se recoupe: quand on sort du tableau, on y re-rentre par l'autre bout. Sur les colonnes, ça ne se recoupe pas.

Pensez à vérifier le comportement de votre surface de subdivision si on bouge les points de contrôle.

De plous en plous difficile

Avec un changement de points de contrôle (également définis dans le fichier source), on peut aussi définir un schéma de raffinement torique (les deux dimensions bouclent).

Si vous avez fini avant les autres

Si vous avez fini avant les autres vous pouvez :
  1. augmenter le nombre de points de contrôle, pour définir quelque chose de plus compliqué / intéressant
  2. tester d'autres schémas de subdivision, par exemple: 1/8 P(i-1) + 3/4 Pi + 1/8 P(i+1)
  3. améliorer l'éclairage, en particulier du tore.

Pour la semaine prochaine

La semaine prochaine, nous passerons à la programmation sur le GPU. Pour que ça soit plus facile, j'aimerais que vous ameniez vos ordinateurs, avec quelques librairies installées :
  1. Qt, par Trolltech Nokia.
  2. libQGLviewer
  3. api_graphics,
  4. GLEW
Toutes ces librairies devraient s'installer sans problèmes sur toutes les architectures. Envoyez-moi un si vous avez le moindre problème.