Comment qu'on fait [Spline] - Programmation
Marsh Posté le 13-03-2002 à 17:06:48
Il y a un algo, ca ne s'invente pas ...
si tu n'a pas ca dans un cours ou autre chose, google est ton ami.
Marsh Posté le 13-03-2002 à 17:08:51
pour les précisions mathématiques :
http://perso.club-internet.fr/brunsr/tipe/tipe.htm
trouvé en 2 minutes avec :
http://www.google.fr/search?q=spli [...] %3Dlang_fr
A+
Marsh Posté le 13-03-2002 à 17:13:07
il y a une infinité de splines qui passent par a et b
* tu veux probablement une courbe de bézier, qui a la propriété d'être contenue dans le polygone défini par a, b, c, d.
algo de de casteljau : pour une courbe de n points, tu as n-1 segments. tu réduis pour tout t de 0 à 1 cet ensemble de segments jusqu'à n'avoir plus qu'un seul point.
tes trois segments sont
[a, b]
[b, c]
[c, d]
et donnent les points
A1 = (a*(1-t), b*t)
B1 = (b*(1-t), c*t)
C1 = (c*(1-t), d*t)
ces trois points te donnent deux segments :
[A1, B1]
[B1, C1]
ces deux segments te donnent deux points :
A2 = [A1*(1-t), B1*t]
B2 = [B1*(1-t), C1*t]
tu n'as plus qu'un segment :
[A2, B2]
qui te donne le point de la courbe :
A3 = (A2*(1-t), B2*t)
l'avantage est qu'avec ça, tu peux tracer une courbe avec n'importe quel nombre de points de contrôle.
tu peux réduire le topo au-dessus pour avoir une belle équation en fonction des quatres points.
//
si tu veux que les courbes passent par tous les points, c'est catmull-rom, si tu veux contrôler d'autres paramètres, regarde du côté des kochanek bartels.
Marsh Posté le 13-03-2002 à 17:16:19
Merci pour vos reponse. Va falloir que j'allume mon cerveau ce soir !!!
Marsh Posté le 14-03-2002 à 01:15:08
Ce que tu obtiens en faisant le calcul ce sont
les polynomes de bernstein.
M(t) = Somme de 0 a n (Bin(t)*Ai) avec Ai tes points de controle
et les Bin les polynomes de bernstein:
B0n = (1-t)^n
B1n = C1n*t*(1-t)^(n-1)
.. etc..
Bnn = t^n
Cin c'est le coefficient polynomial bien connu
Cin = n!/(i! * (n-i)!);
donc pour n = 3
M(t) = (1-t)^3*A0 + 3 * t * (1-t)^2 * A1 + 3 * t^2 *(1-t) * A2 + t^3 * A3;
A votre service
LEGREG
Marsh Posté le 14-03-2002 à 09:42:14
DarkOli a écrit a écrit : Merci pour vos reponse. Va falloir que j'allume mon cerveau ce soir !!! |
bah c pas si ignoble a faire que ca
celle que j'utilise assez frequemment c catmull rom, qui a l'avantage d'etre passablement simple a coder :
http://www.cubic.org/~submissive/sourcerer/hermite.htm
Marsh Posté le 14-03-2002 à 10:27:26
ben remerci, pour vos nouvelles reponses, et si tout se passe bien ce soir je vais pouvoir faire des gribouillages.
Marsh Posté le 13-03-2002 à 16:57:52
Voila j'ai 4 points : a,b,c et d.
J'aimerais tracer une spline a partir de ces points de controle, sachant qu'elle doit passer par les points a et d.
Comment fait on ?
Par exemple en admetant que la spline soit parametrique avec pour t=0 (la spline est en a) et t=1 (la spline et en d), comment calculer x et y pour t = 0.7 par exemple.
Bon y'a peut etre des erreurs mathematique dans l'enoncé mais soyez comprehensifs.