Longueur d'un arc de courbe

Utilisation de Xcas

Modérateur : xcasadmin

albenic
Messages : 40
Inscription : mer. oct. 08, 2008 7:19 pm

Longueur d'un arc de courbe

Message par albenic » mar. nov. 17, 2009 9:55 pm

Bonsoir,

J'ai voulu me faire une jolie procédure pour calculer la longueur d'un arc de courbe mais il ne marche pas et j'ai beau chercher et rechercher, je ne vois pas où est l'erreur. Même l'exemple ci-dessous ne veut pas fonctionner :

Code : Tout sélectionner

restart;
A:=[-4,-1];B:=[2,3/2];C:=[-5/2,-3/2];D:=[-5/2,9/2];
x:=A[0]*(1-t)^3+3*C[0]*t*(1-t)^2+3*D[0]*t^2*(1-t)+B[0]*t^3;
y:=A[1]*(1-t)^3+3*C[1]*t*(1-t)^2+3*D[1]*t^2*(1-t)+B[1]*t^3;
arcLen([x,y],t,0,1);
Pour les initiés, il s'agit de la longueur d'une courbe de Bézier. Xcas me renvoie un

Code : Tout sélectionner

"arcLen Bad Argument Value"
Est-ce que l'un d'entre vous aurez l'obligeance d'éclairer ma lanterne, quitte à passer pour un idiot...

PS : j'ai même essayé en remplaçant x et y par leur expressions en fonction de t dans la fonction arcLen mais rien n'y fait.

Guillaume
Messages : 112
Inscription : sam. janv. 20, 2007 8:48 pm
Contact :

Re: Longueur d'un arc de courbe

Message par Guillaume » mer. nov. 18, 2009 10:21 am

le premier argument de arcLen doit être une liste du type [x(t),y(t)]

Code : Tout sélectionner

A:=[-4,-1];B:=[2,3/2];C:=[-5/2,-3/2];D:=[-5/2,9/2];
x(t):=A[0]*(1-t)^3+3*C[0]*t*(1-t)^2+3*D[0]*t^2*(1-t)+B[0]*t^3;
y(t):=A[1]*(1-t)^3+3*C[1]*t*(1-t)^2+3*D[1]*t^2*(1-t)+B[1]*t^3;
arcLen([x(t),y(t)],t,0,1);
Ensuite, l'intégrale n'est pas facile à calculer...

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

Re: Longueur d'un arc de courbe

Message par parisse » mer. nov. 18, 2009 10:31 am

Les 2 formulations sont équivalentes, en testant avec la forme originale, j'obtiens
(999*sqrt(13))/1105-(-439*sqrt(10))/2210+integration((6*2*(((-36916*t)/1105+37589/1105)*t+464/1105))/(4*sqrt(1105*t^4-1756*t^3+846*t^2-88*t+10)),t,0,1)
dont la valeur numérique (evalf) est 7.78694741498 ce qui a vu de nez
(paramplot([x,y],t,0,1)) a l'air raisonnable.
Le calcul exact n'est pas fait, car l'intégrale d'une racine carrée d'un poly de degré>2 n'est pas implémenté dans xcas (ça nécessiterait des fonctions elliptiques probablement en degré 3 et en degré 4?)

albenic
Messages : 40
Inscription : mer. oct. 08, 2008 7:19 pm

Re: Longueur d'un arc de courbe

Message par albenic » mer. nov. 18, 2009 12:43 pm

Bonjour,
Point positif, je n'avais pas fait de bêtise.
Le souci était ma version de xcas. Depuis que j'ai fait la mise à jour, tout est rentré en ordre.
Quant au problème du calcul de l'intégrale, évidemment j'avais conscience de la difficulté du calcul mais bon j'avais essayé... au cas où. De toute façon, pour ce que je veux faire, une valeur approchée suffit.
Merci.

Répondre