Mif27 - Synthèse d'images
ANNEE 2022 - 2023
CM - Courbes et surfaces paramétriques et de subdivision
TP - Courbes paramétriques et de subdivision
L’objectif de cette séance est de construire des courbes paramétriques, et de subdiviser des courbes existantes. La mise en place de la technique de visualisation de ces courbes devra prendre le moins de temps possible.
Pour visualiser vos courbes, vous pouvez générer un fichier au format Wavefront .obj
par exemple, et le visualiser avec Blender
par exemple.
Exemple de fichier .obj
contenant une ligne polygonale :
# Sommets
v 0 1 1
v 0 1 0
v 1 1 0
v 1 0 0
v 0 0 0
v 0 0 1
v 1 0 1
v 1 1 1
# Ligne polygonale (L minuscule)
l 1 2 3 4 5 6 7 8
Exemple de programme C à deux balles qui génère ce fichier :
#include <stdio.h>
struct Point3D {
float x; float y; float z;
};
int main(void) {
Point3D points[8] = { {0,1,1}, {0,1,0}, {1,1,0}, {1,0,0}, {0,0,0}, {0,0,1}, {1,0,1}, {1,1,1} };
FILE* f = fopen("line.obj","w");
for (int i=0;i<8;i++) {
fprintf(f,"v %f %f %f\n",points[i].x,points[i].y,points[i].z);
}
fprintf(f,"\nl");
for (int i=1;i<=8;i++) {
fprintf(f," %d",i);
}
fclose(f);
return 0;
}
Vous pouvez également utiliser votre base de code pour visualiser vos courbes.
1. Une courbe simple
Créez une ligne polygonale avec une dizaine de points. Testez votre solution de visualisation.
2. Courbes paramétriques
Votre ligne polygonale sert ici de polygone de contrôle.
a) Courbes de Bézier
Implémentez l’algorithme de De Casteljau (CM pages 34 et 35). Calculez les points pour des valeurs du paramètre variant de 0 à 1 avec un pas de 0.01 par exemple.
b) (facultatif) Courbes B-Spline
Implémentez l’algorithme de De Boor - Cox (CM page 63). Calculez les points pour des valeurs du paramètre variant de 0 à 1 avec un pas de 0.01 par exemple. Testez avec un vecteur de noeuds répartis uniformément et confondus.
3. Courbes de subdivision
Vous allez subdiviser votre ligne polygonale.
a) Implémentation des différents schémas de subdivision de courbes
- Schéma de Chaikin (CM page 101)
- Schéma de Catmull-Clark (CM page 102)
- Schéma 4 points (CM page 104)
- Fractales (CM pages 108 et 109)
b) Génération de tubes
S’il reste du temps, vous pouvez compléter le schéma Chaikin en suivant le sujet suivant :