Page 1 sur 1

Courbe de bézier

Publié : 20/08/2007 - 0:42:13
par moona
Bonsoir à vous,

pouvez vous m'expliquer s'il vous plait, comment résoudre un problème de courbe de Bézier, voici mon problème

On considère les deux lignes brisées (p0, p1, p2, p3) et (p3, p4, p5, p6), définies par les points p0....p6 donnés par:

p0=(1, 0)
p1=(3, -1)
p3=(2, 4)
p4=(-1, 4)
p5=(2, 2)
p6=(0, 1)


On voudrait approximer chacune de ces deux lignes par une courbe de bézier à 4 points de contrôle, tel que:

-C1(t) est l'équation de la courbe approximant (p0, p1, p2, p3)
-C2(t) est l'équation de la courbe approximant (p3, p4, p5, p6)

Donner les équation de C1(t) et C2(t)

La matrice de base associée aux courbes de bézier est

M=
-1 3 -3 1
3 -6 3 0
-3 3 0 0
1 0 0 0

merci de me montrer la technique pour C1(t)

Publié : 20/08/2007 - 9:11:44
par bongo1981
Si j'ai le temps de m'y plonger je regarderai (pas avant ce soir), comme je connais pas, je vais lire cette page (donc je te conseille d'en faire autant)
http://fr.wikipedia.org/wiki/Courbe_de_B%C3%A9zier

L'exemple est traitée entièrement là :
http://fr.wikipedia.org/wiki/Courbe_de_ ... r#Exemples

Il n'y a plus qu'à piocher et appliquer.

Publié : 20/08/2007 - 12:54:10
par moona
Merci bango1981 :)

au fait je crois que la solution de l'exercice est un peu plus simple que la technique montré sur wikipedia en utilisant les matrices.

Publié : 20/08/2007 - 14:04:41
par bongo1981
Sûrement, wikipedia n'explique pas vraiment comment faire avec les matrices (à moins que j'ai manqué un passage).

Si tu trouves le temps, et que tu en as envie, tu peux mettre la solution dans un poste ultérieur (ça sera utile pour les gens qui consultent le forum, ou pour toi plus tard si tu te rappelles plus).

Publié : 20/08/2007 - 15:43:17
par moona
voici la méthode proposé:

C1(t) = T x M x P



T = (t^3,t^2,t,1) [transposé]
M = la matrice de base
P = (p0,p1,p2,p3) [transposé]

C1(t) = P0(-t^3 + 3t^2 - 3t + 1) + P1(3t^3 - 6t^2 + 3t) + P2(-3t^3 + 3t^2) + P3(t^3)

je l'ai écrite sous forme d'équation paramétrique (je ne sais pas si c'est juste)
j'ai réussi à trouver la solution mais je ne suis pas très sûr de mes calculs, je vous la quant même:

X(t) = -5^3 - 6t^2 + 6t + 1
Y(t) = -2^3 + 12t^2

(une rectification, j'ai oublié de mentionner les paramètres du point P2=(3,2))

Publié : 20/08/2007 - 21:04:51
par bongo1981
Avec le polynôme de Bernstein tu trouves exactement la même chose.

C1(t) = P0*(1-t)^3 + 3*P1*(1-t)^2*t + 3*P2*(1-t)*t^2 + P3*t^3

Et la matrice M a l'air facile à mettre en place, ça regroupe les coefficients du polynome ligne par ligne, en incorporant le facteur C(n,k)

En fait ce sont deux écritures de la même chose (le polynôme de Bernstein avec les coefficients du binôme, ou bien la matrice M mais il faut pouvoir la trouver pour tout n, je pense que M(i,j) = C(n,i-1) * C(n,j-1) où les C(i,j) sont les coefficients du binôme, i la ligne, j la colonne et n l'ordre, ici 3).

Au fait c'est pour quelle application ?

Publié : 23/08/2007 - 0:03:29
par moona
Bonsoir bongo,

tu as raison oui, on peut trouver la matrice M mais ça prendra beaucoup de temps pour le faire.

au fait, je dois apprendre ça pour mon cours d'infographie ou je dois approximer des lignes par une courbe de bézier

Publié : 23/08/2007 - 0:09:47
par bongo1981
C'est assez rapide, j'ai donné la formule dans mon précécent poste ;)

Intéressant l'infographie.

Publié : 23/08/2007 - 9:30:38
par lambda0
En fait, ça va plus loin que l'infographie : le grand intérêt de la base de Bernstein est de produire des schémas numériques stables pour le calcul de polynomes de degrés élevés.
Si on veut calculer un polynôme comme a.x^10+b.x^9+ etc., le résultat peut être très sensible aux arrondis numériques si on laisse le polynôme exprimé sur la base des monomes.
Si par contre, par un changement de base, on exprime ce polynôme sur la base de Bernstein, le comportement numérique est bien meilleur aux degrés élevés.
Cette projection est aussi très utile pour résoudre les équations polynomiales, je m'en sert assez souvent en calcul scientifique.

A+

Publié : 23/08/2007 - 11:13:34
par bongo1981
Je m'en doute bien :)
En tout cas merci pour ces précisions lambda0, c'est quelque chose que je vais rajouter à mon arsenal :o