algorithme courbe bézier

Utilisation de Xcas

Modérateur : xcasadmin

m1m2m3
Messages : 1
Inscription : mer. avr. 04, 2012 12:00 pm

algorithme courbe bézier

Message par m1m2m3 » mer. avr. 04, 2012 12:41 pm

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

parisse
Messages : 5881
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: algorithme courbe bézier

Message par parisse » mer. avr. 04, 2012 1:24 pm

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.

Répondre