2
2/ Reconstruction 2d sous Scilab (ou sous Matlab, python…)
Nous allons tester une méthode de reconstruction de courbe et la représenter sous forme
discrète à l’aide d’une grille en 2D.
Le fichier « circle.xyz » correspond à un nuage de points d’un cercle de 103 points avec les
normales dans un espace 2D :
Le fichier se décompose ainsi :
x1 y1 nx1 ny1
x2 y2 nx2 ny2
…
où (xi,yi) sont les coordonnées des points du cercle et (nxi,nyi) représentent les coordonnées
du vecteur normal.
L’objectif est de faire une reconstruction de courbe de Hoppe, c’est-à-dire calculer la
fonction f(x,y) telle que :
f(x,y) = |<(nxi,nyi),(x,y)-(pxi,pyi)>| où (pxi,pyi) est le point le plus proche du point (x,y) et
(nxi,nyi) représente sa normale
Pour ouvrir un fichier dans Scilab :
nuage = read('circle.xyz',-1,4);
On définit ainsi un espace discret dans R2 pour calculer cette fonction f(x,y) :
x=[-1.2:0.01:1.2];
y=[-1.2:0.01:1.2];
On initialise la fonction distance f(x,y) :
f=zeros(size(x,2),size(y,2));
Puis on calcule la distance de chaque point de R2 au nuage de points (ici un cercle) :
Et afficher le résultat avec la fonction :
grayplot(x,y,f)
Pour obtenir le résultat, il faut calculer pour chaque point de l’espace le point le plus proche
du nuage de point puis faire le calcul de la fonction de distance à la courbe.
Vous avez le fichier « hoppe2d.sce » comme début de script pour ceux qui utilisent Scilab.
Pour les utilisateurs de Matlab ou de Python, vous pouvez vous en inspirer pour votre script
2.1 Faire un screenshot de l’image résultat qui représente une discrétisation de la
représentation implicite de la courbe.
2.2 BONUS : Tester la méthode IMLS (la formule n’est pas dans le cours) et comparer la
reconstruction avec Hoppe
sujet du mail « CR TP Reconstruction MVA ‘Votre Nom’ »