Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2934 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Algo de tracé de Splines

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Algo de tracé de Splines

n°1365852
eljoundi
to Be or not to Be ?
Posté le 14-05-2006 à 12:08:14  profilanswer
 

Salut,
 
je cherche en fait un algo pour tracer des splines
et je voudrai savoir si les courbes de Bezier entrent en jeu ou pas
 
En vous remerciant d'avance

mood
Publicité
Posté le 14-05-2006 à 12:08:14  profilanswer
 

n°1365897
IrmatDen
Posté le 14-05-2006 à 15:14:30  profilanswer
 

Salut,
En tapant spline sur Google ou Wikipedia, les réponses te conviennent? Sinon, Mathworld est pas mal non plus.  
Les courbes de Bezier sont l'un des types de splines existantes

n°1365906
eljoundi
to Be or not to Be ?
Posté le 14-05-2006 à 16:06:07  profilanswer
 

si j'ai posté ici, c'est que je n'ai pas trouve grand chose sur Google concernant les algos pour tracer des splines  
en ce qui concerne wikipedia, il donnent des details surtout sur les courbes de beziers  :(

n°1365909
IrmatDen
Posté le 14-05-2006 à 16:13:24  profilanswer
 

et Mathworld?

n°1365976
eljoundi
to Be or not to Be ?
Posté le 14-05-2006 à 19:13:49  profilanswer
 

j'ai jete un coup d'oeil, mais concernant les splines c'est pas trop detaillé  :(  
mais ca ne m'a pas trop avancé  :cry:

n°1365994
bjone
Insert booze to continue
Posté le 14-05-2006 à 19:45:11  profilanswer
 

y'a des tonnes de trucs sur les b-splines.
 
maintenant ça dépends de ce que tu veux faire: des b-splines précises au pixel près, ou une approximation par ligne.

n°1366051
eljoundi
to Be or not to Be ?
Posté le 14-05-2006 à 22:04:44  profilanswer
 

il mefaut juste une approximation par lignes, comme dans le cas des courbes de Bezier  
si vous avez une methode ou un algo pour le realiser, ca serait sympa
j'ai chercher un peu partout, je vais regarder demain dans des bouquins voir si je trouve quelque chose

n°1366064
IrmatDen
Posté le 14-05-2006 à 22:33:48  profilanswer
 

Tiens, je viens de voir le site de David Eberly. Il contient des maths sur quelques types de spline: http://www.geometrictools.com/Documentation.html à Curves et Interpolation
La page de Code est bien fournie, mais n'est pas indépendant de son moteur et te demandera donc de bien comprendre le tout...
 
J'espère que ça répond un peu à ce que tu veux :)
 
Sinon, tu cherches un type de spline particulier? Pour l'instant, t'as pas l'air de vouloir des courbes de Beziers, mais tu n'en as pas cité d'autres.

n°1366068
IrmatDen
Posté le 14-05-2006 à 22:37:36  profilanswer
 

Tu as aussi ce site qui contient quelques splines, dont certaines avec algo.

n°1366114
eljoundi
to Be or not to Be ?
Posté le 14-05-2006 à 23:37:30  profilanswer
 

Merci IrmatDen, il est tres interessant le deuxieme, il donnent pas mal de formules mathematiques  
c'est vraiement tres interessant  :)

mood
Publicité
Posté le 14-05-2006 à 23:37:30  profilanswer
 

n°1370184
eljoundi
to Be or not to Be ?
Posté le 18-05-2006 à 23:48:41  profilanswer
 

Me revoila, j'ai lu pas mal de documenrs conernant les splines, mais dans plupart du temps ils donnent que des formules( Cox de Boor )  
mais je n'ai trouve aucun alogortihme pour tracer une spline  :(  
du coup je reste un peu coince pour le moment
 
je voulais donc savoir si l'un de vous a deja eu affaire a ce genre de courbes à tracer en C pour m'eclaircir un peu  :)

n°1370210
IrmatDen
Posté le 19-05-2006 à 00:18:39  profilanswer
 

Si tu cherches un algo sur Cox de Boor, tape le dans Google, et la première réponse te mènes (presque) direct sur un code source l'implémentant; la 3ème réponse te mènes dans les entrailles de cet algo.
Amuse-toi bien :)

n°1370322
bjone
Insert booze to continue
Posté le 19-05-2006 à 10:23:21  profilanswer
 

eljoundi a écrit :

Me revoila, j'ai lu pas mal de documenrs conernant les splines, mais dans plupart du temps ils donnent que des formules( Cox de Boor )  
mais je n'ai trouve aucun alogortihme pour tracer une spline  :(  
du coup je reste un peu coince pour le moment
 
je voulais donc savoir si l'un de vous a deja eu affaire a ce genre de courbes à tracer en C pour m'eclaircir un peu  :)


 
bin si tu veux émuler la courbe via des lignes dont les points sont sur la ligne (la rasterisation de courbe doit être plus chiant),il te faut juste l'équation qui te donne les poids des vertexs en fonction de t.

n°1370339
franceso
Posté le 19-05-2006 à 10:36:23  profilanswer
 

Pour bezier, tu as aussi des algos de tracé spécifiques qui tirent parti de la construction d'une courbe de bézier récursivement à partir des milieux des segments reliant les points de contrôle.
 
je sais plus où j'ai vu ça, mais tu devrais pouvoir trouver des infos sans problème sur le Net


---------------
TriScale innov
n°1370356
bjone
Insert booze to continue
Posté le 19-05-2006 à 10:46:14  profilanswer
 

oui, ou sinon dans ses cours de maths ;)

n°1370534
eljoundi
to Be or not to Be ?
Posté le 19-05-2006 à 13:51:15  profilanswer
 

Pour les courbes de Bezier, j'arrive à les tracer recursivement via un algorithme, chose que je n'ai pas trouvée pour le cas des Splines  :(  
l'un de vous a deja vu un algo de trace de Splines recursif ?

n°1370547
franceso
Posté le 19-05-2006 à 14:11:52  profilanswer
 

pour les autres types de splines, je ne pense pas qu'il soit possible de les tracer en récursif (c'est une propriété très spécifique à Bezier).


---------------
TriScale innov
n°1370569
eljoundi
to Be or not to Be ?
Posté le 19-05-2006 à 14:30:58  profilanswer
 

les splines qui m'interessent sont les B-splines en fait
je croyais qu'on pouvait les tracer recursivement, ca aurait facilité les choses à mon avis  :whistle:  

n°1370585
bjone
Insert booze to continue
Posté le 19-05-2006 à 14:48:36  profilanswer
 

l'intêret ?
 
tu veux faire un traçage au pixel près ?

n°1370589
bjone
Insert booze to continue
Posté le 19-05-2006 à 14:53:09  profilanswer
 

dans tous les cas je vois pas l'intêret d'un récursif par rapport à l'itératif.
 
si tu peux te contenter d'un traçé par lignes, pour les B-Splines, t'as tes trois vertexs, les équations de Reimann te donne les poids, et tu fais tes pitis calculs de barycentre.


Message édité par bjone le 19-05-2006 à 14:53:37
n°1370590
eljoundi
to Be or not to Be ?
Posté le 19-05-2006 à 14:54:00  profilanswer
 

un trace par segments me conviendrait
mais j'ai aucune idée comment de la maniere du trace,l'idee que j'avais en tete est d'utiliser les courbes de bezier pour tracer les splines
je suis completement paumé la  :??:


Message édité par eljoundi le 19-05-2006 à 14:54:44
n°1370596
franceso
Posté le 19-05-2006 à 14:58:49  profilanswer
 

tu regardes ta spline comme une courbe paramétrée x(t), y(t) avec t variant entre 0 et 1. Si tu te démerdes en maths, tu peux même reparamétrer ta courbe pour que le paramètre soit l'abscisse curviligne comme ça tu auras un bon rendu avec un nombre minimal de points.
 
Tu te génères un ensemble de N points sur ta courbe genre x_i = x(i/N) , y_i = y(i/N) et tu traces tous les segments (x_i,y_i)-(x_i+1, y_i+1)
 
Pas si compliqué que ça, en fait.


---------------
TriScale innov
n°1370598
bjone
Insert booze to continue
Posté le 19-05-2006 à 14:59:06  profilanswer
 

je pourrais te filer un truc tout fait que tu pourrais trouver tout de suite en cherchant où il faut, mais faudrait que tu cherches un peu.
 
pour les B-Splines:
=> 3 vertexs
=> t variant de 0 à 1, la courbe commence la moitié de V0-V1, et fini à la moitié de V1-V2
=> t'as les equations de Riesenfeld qui donnent le poids de chaque Vertex par rapport à t.
=> tu construits ta liste de points B-Splinés, et tu traçes des lignes entre chaque.
 
edit: j'ai confondu Reimann et Riesenfeld :D shame on me (en même temps j'ai toujours été une quiche en maths)
 
edit: grillé :D


Message édité par bjone le 19-05-2006 à 15:05:34
n°1370642
eljoundi
to Be or not to Be ?
Posté le 19-05-2006 à 15:26:07  profilanswer
 

je vois un peu le rapport de ta méthode franceso et ce que j'ia commence un peu sur papier, j'ai trouve les equations ( polynomes de degré 3 )
il me reste plus qu'a generer les points et tracer equations, je vais me aller dans cette direction qui me semble pas trop dur à implementer
 
sinon bjone, j'aimerai bien voir à quoi ressemble le code, au moins voir l'architecture, et voir si je peux ameliorer ma méthode, ca serait très sympa de ta part  :jap:  
 
En tout cas merci à vous , franceso & bjone  :)

n°1370651
franceso
Posté le 19-05-2006 à 15:31:15  profilanswer
 

bjone et moi avons proposé la même méthode (d'accord avec moi, bjone ?). C'est juste qu'on n'a pas employé les mêmes mots. Dans les deux cas il s'agit de discrétiser ta courbe en générant un nombre fini de points dessus. Ensuite tu te contentes de relier ces points par des segments.


---------------
TriScale innov
n°1370665
eljoundi
to Be or not to Be ?
Posté le 19-05-2006 à 15:38:19  profilanswer
 

mais concernant les points de controle, je me contenterai seulement de 4 ?
je ne l'ai pas precise, mais je veux tracer un B-spline cubique  :)

n°1370674
bjone
Insert booze to continue
Posté le 19-05-2006 à 15:41:35  profilanswer
 

franceso a écrit :

bjone et moi avons proposé la même méthode (d'accord avec moi, bjone ?). C'est juste qu'on n'a pas employé les mêmes mots. Dans les deux cas il s'agit de discrétiser ta courbe en générant un nombre fini de points dessus. Ensuite tu te contentes de relier ces points par des segments.


 
tout à fait.

n°1370683
bjone
Insert booze to continue
Posté le 19-05-2006 à 15:48:15  profilanswer
 

eljoundi a écrit :

mais concernant les points de controle, je me contenterai seulement de 4 ?
je ne l'ai pas precise, mais je veux tracer un B-spline cubique  :)


 
arf, moi j'ai jamais fait que des B-Splines avec 3 vertex :D si ça existe c'est une ordre différent, et il faut trouver les equations de poids alors.
il y a ptet une formule générale en fonction de l'ordre. (moi je m'arrêtes là)
 
le truc qui me gêne pour moi, c'est qu'une B-Splines ça viens se connecter au mileu d'un segment reliant deux vertex en tangentant. (c'est pas  forcément la même approche qu'une courbe de bezier qui va ne plus rien avoir avec les segments reliant les vertexs)
 
ndlr: après tu peux construire une figure avec 1000 vertexs si tu veux, mais pour moi ça va être plein de b-splines indépendantes a la queue-le-le se connectant entre elles au milieu des segments.


Message édité par bjone le 19-05-2006 à 15:49:32
n°1370687
eljoundi
to Be or not to Be ?
Posté le 19-05-2006 à 15:56:20  profilanswer
 

Citation :

ndlr: après tu peux construire une figure avec 1000 vertexs si tu veux, mais pour moi ça va être plein de b-splines indépendantes a la queue-le-le se connectant entre elles au milieu des segments.


 
il faut que j'arrive à en tracer une avec 3 vertex deja  :D , apres je vais voir si je peux mettre le turbo

n°1371381
eljoundi
to Be or not to Be ?
Posté le 21-05-2006 à 01:36:02  profilanswer
 

Me revoila, je suis de retour, j'ai avance un peu dans mon code, mais j'arrive toujours pas a tracer la B-spline
j'ai bien mis les points de controles, je crees les points pour la courbes de beziers correspondants, mais à la fin je n'ai que le trace de la base :s
et pas celui de la bspline  :(

n°1371434
bjone
Insert booze to continue
Posté le 21-05-2006 à 11:20:54  profilanswer
 

bin traçe tous les points générés pour voir si ça marche déjà.

n°1371529
eljoundi
to Be or not to Be ?
Posté le 21-05-2006 à 13:49:30  profilanswer
 

j'ai commence par construire 4points de controle, et en essayant de les relier pour creer la courbe de bezier, ca plante  :(  
fenetre noire, et bug  :cry:

n°1371677
bjone
Insert booze to continue
Posté le 21-05-2006 à 20:18:26  profilanswer
 

ta routine de b-spline, elle prends 3 ou 4 points de contrôle ?

n°1371704
eljoundi
to Be or not to Be ?
Posté le 21-05-2006 à 20:58:38  profilanswer
 

4points de controles
l'exemple que je veux realiser c'est celui la : n=3, k=4  
http://www.ibiblio.org/e-notes/Splines/Basis.htm
 
ce que j'ai fait pour l'instant, c'est que j'arrive a tracer une courbe de Bezier avec 4 points de controles en passant par deux fonction, une qui calcule le polynome et l'autre qui creent les points ( calcules a partir du polynome et suivant un pas que je chsoisi )que je dois relier apres avec la fonction de trace de segment pour avoir ma courbe de Bezier
 
pour ce qui est de la Bspline, je me donne 4points de controles, à partie desquels je construis les sommets de la courbe de Bezier avec cette fonction :  

Code :
  1. // Px et Px : coordonnes des points de controles
  2. // Bx et By : les nouveaux sommets de la courbe de Bezier que je vais tracer pour obtenir la B-Spline
  3. void SommetsBezier (void){
  4.     int m;
  5. m = Pn;
  6.     for (i = 0; i < m; i++) {
  7.         Bx[Bn] = (Px[i]+4*Px[i+1]+Px[i+2])/6;
  8.         By[Bn] = (Py[i]+4*Py[i+1]+Py[i+2])/6;
  9.         Bn++;
  10.        
  11.         Bx[Bn] = (2*Px[i+1]+Px[i+2])/3;
  12.         By[Bn] = (2*Py[i+1]+Py[i+2])/3;
  13.         Bn++;
  14.        
  15.         Bx[Bn] = (Px[i+1]+2*Px[i+2])/3;
  16.         By[Bn] = (Py[i+1]+2*Py[i+2])/3;
  17.         Bn++;
  18.        
  19.         Bx[Bn] = (Px[i+1]+4*Px[i+2]+Px[i+3])/6;
  20.         By[Bn] = (Py[i+1]+4*Py[i+2]+Py[i+3])/6;
  21.         Bn++;
  22.  printf("(%f , %f)\n",Bx[i],By[i]);
  23.     }
  24. }


 
mais malgre cela j'arrive toujours pas à tracer la courbe  :(

n°1372134
eljoundi
to Be or not to Be ?
Posté le 22-05-2006 à 14:09:02  profilanswer
 

Ouf, j'ai enfin reussi à finir cette satane B-spline  :fou:  
le programme marche bien pour le moment  :bounce:  :bounce:  
 
Merci à vous Bjone & francesco
 
Edit : pardon Franceso  :D


Message édité par eljoundi le 22-05-2006 à 14:09:27
n°1372138
franceso
Posté le 22-05-2006 à 14:10:30  profilanswer
 

Bravo !
 
c'est juste une spline, ou tu as déjà fait l'enchainement de toutes les splines construites avec tous tes points de contrôle ?


---------------
TriScale innov
n°1372738
eljoundi
to Be or not to Be ?
Posté le 23-05-2006 à 00:22:45  profilanswer
 

c'est une B-Spline que je trace en fixant un n et un ordre k , ce qui me fait n+1 points de controle, à partir desquels je crees mes noeuds et mes points de spline que je trace une par une pour avoir la courbe  :)

n°1727472
freeyayo
Posté le 02-05-2008 à 03:24:13  profilanswer
 

eljoundi a écrit :

c'est une B-Spline que je trace en fixant un n et un ordre k , ce qui me fait n+1 points de contrôle, à partir desquels je crees mes noeuds et mes points de spline que je trace une par une pour avoir la courbe  :)


 
Excellent, moi aussi je dois coder le traçage de courbes b-splines! je serais cool si tu me files un coup car j'ai d'énormes problèmes sur ce traçage. Mais déjà j'aurais besoin de savoir en quel langage tu as codé ton traçage, tu l'as codé en C++? en Java? en Pascal?....

n°1727508
eljoundi
to Be or not to Be ?
Posté le 02-05-2008 à 09:53:15  profilanswer
 

Codé en C avec la librairie Glut :)


---------------
Flick r || =>   Mon FeedBack   <=
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Algo de tracé de Splines

 

Sujets relatifs
Algo de Donald Knuth[C / Glut] Tracé de segment
[Algo][Résolut]Cherche algorithmes pour le Jeu du Taquinintercepter la trace en prolog
Algo de cryptage de texte[Algo] Recherche de sous chaîne
Recherche algo ou programme pour détection de planAlgo pour corrigé des fautes de frappes...
sit exo algoAlgo génétique
Plus de sujets relatifs à : Algo de tracé de Splines


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)