Page 1 sur 1

algorithme courbe bézier

Publié : mer. avr. 04, 2012 12:41 pm
par m1m2m3
Bonjour,

je suis entrain de faire un algorithme récursif pour tracer des points d'une courbe de Béziers à quatre points de contrôle mais il ne marche pas bien.

Voici ce que j'ai fais
Bezier(a,f,b,g,c,h,d,j):={
si sqrt((b-a)²+(g-f)²)< 0.01 ou sqrt((c-b)²+(h-g)²)< 0.01 ou sqrt((c-d)²+(j-h)²)<0.01
alors [];
sinon
d:=(a+3*b+3*c+d)/8;
j:=(f+3*g+3*h+j)/8;
c:=(a+2*b+c)/4;
h:=(g+2*g+h)/4;
b:=(a+b)/2;
g:=(f+g)/2;
a=a;
f=f;
point(d,j);
Bezier(a,f,b,g,c,h,d,j);
a:=(a+3*b+3*c+d)/8;
f:=(f+3*g+3*h+j)/8;
b:=(b+2*c+d)/4;
g:=(g+2*h+j)/4;
c:=(c+d)/2;
h:=(h+j)/2;
d=d;
j=j;
point(d,j);
Bezier(a,f,b,g,c,h,d,j);

fsi
};
le problème et qu'il ne me crée que les premiers points et que dès qu'il sont assez proche s’arrête sans me tracer les points dont j'ai mis le code en rouge.
je pense qu'il faut que je modifie ce qui se trouva après le "alors" mais je ne sais pas comment.

merci d'avance

Re: algorithme courbe bézier

Publié : mer. avr. 04, 2012 1:24 pm
par parisse
Vous avez un exemple de valeurs pour tester?
Sinon, je vous conseille d'executer votre programme avec le debugger, en utilisant in pour entrer dans les appels recursifs, ca vous permettra de voir ce que fait le programme.
Vous devrez peut-etre aussi renvoyer la liste de points a tracer, sinon vous n'aurez pas de sortie graphique en-dehors de DispG.