Courbe de bézier
Modérateur : Modérateurs
Courbe de bézier
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)
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)
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.
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.
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).
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).
voici la méthode proposé:
C1(t) = T x M x P
oû
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))
C1(t) = T x M x P
oû
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))
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 ?
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 ?
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+
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+