[Delphi] Graphe et interpolation de courbes...

Graphe et interpolation de courbes... [Delphi] - Delphi/Pascal - Programmation

Marsh Posté le 27-08-2003 à 23:32:25    

Hello !
 
il me faudrait un composant permettant de faire un gaphique a partir de données brutes ( X, Y ), et qui permette d'interpoler une courbe ( un peu a la excel en fait, pour "arrondir" les angles).
 
Imaginez que je vous donne les valeur de x² pour x = -2, -1, 0, 1, 2 et vous me tracez la courbe qui passe par tous ces points, et c'est une parabole. Ok elle est pas exacte, mais la précision n'est pas importante.  
 
La plupart des graphes font un segment entre chaque valeur et donc C moche :( tout carré quoi.
 
Ca me rendrai un fier service. Sur torry, j'ai rien vu de tel qui passe sous Delphi6, ni dans la JVCL :(


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 27-08-2003 à 23:32:25   

Reply

Marsh Posté le 27-08-2003 à 23:56:13    

le TChart ?

Reply

Marsh Posté le 28-08-2003 à 06:08:38    

a priori nan il le fait pas :(
 
Il fait plein de graphes, mais en mode line, il dessine que des segments, pas des courbes qu'il interpole :(
 
Pour etre plus clair, imagine qu'on te donne les listes :

Code :
  1. X : -5,-4,-2,-1,0,1,2, 4, 5
  2. Y : 25,16, 4, 1,0,1,4,16,25


 
C'est la fonction x².
 
Teechar va tracer un segment tout droit entre (-5,25) et (-4,16), segment tout droit, etc.
 
Bilan : ta parabole est toute anguleuse, toute cassée.
 
Moi je voudrais un Chart qui interpole les valeurs entre les points, histoire d'avoir une ligne sans angle.
 
Par exemple on devrait avoir, avec la série donnée, une vraie parabole, peut etre pas tout a fait exacte, mais sans aucun angle et bien ronde :)
 
Tu vois le truc ?
 
Teechart, meme si c bo, ca reste des segments, regarde :
 
http://www.steema.com/img_products/gallery/tch/gallery_tch_large10.jpg
 
moi je veux un truc tout rond comme ca, avec des lignes antialiasées et interpolées, "smoothed" dans excel :
 
http://www.ocbase.com/chart.gif


Message édité par Tetedeiench le 28-08-2003 à 06:24:26

---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 28-08-2003 à 10:56:36    

y a ça dans la version Pro de TChart, mais pas dans la version fournie avec Delphi je pense :/


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 28-08-2003 à 15:22:51    

:cry:
 
289$ Teechart pro heu vais éviter :o


Message édité par Tetedeiench le 28-08-2003 à 15:25:16

---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 28-08-2003 à 15:27:33    

Mais il le fait effectivement :
 
http://www.steema.com/img_products/screenshots/tchvcl/large_smoothing_function.gif
 


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 28-08-2003 à 17:30:15    

à priori ton truc il tesselle la courbe avec des B-splines...

Reply

Marsh Posté le 28-08-2003 à 17:31:30    

heu remarque non, je dois me planter...

Reply

Marsh Posté le 28-08-2003 à 17:32:45    

bah tu chopes l'algo qui permet de faire la splines et tu le refais :??:
 
note: mais leur choix de spline est pas top pour un Chart, tu n'a pas les extrêmes (fodrait choper un type de spline qui passe toujours par les points de contrôle)


Message édité par bjone le 28-08-2003 à 17:35:19
Reply

Marsh Posté le 28-08-2003 à 17:35:56    

BJOne a écrit :

heu remarque non, je dois me planter...


 
dans TChart ils appellent ça courbes de bézier


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 28-08-2003 à 17:35:56   

Reply

Marsh Posté le 28-08-2003 à 17:47:44    

wais mais dans les courbes de bézier y'a plusieures variantes suivant les ordres & co...
(au début je pensais à la B-spline de base, avec 3 points/segments, où la courbe commence au milieu du premier segment avec la tangente initiale qui suit le segment et idem pour la fin).
 
mais vodrait mieux rechercher un type de courbe qui passe bien par tous les points de contrôle...

Reply

Marsh Posté le 28-08-2003 à 18:01:34    

euh ouai, c quand meme chaud :D
 
Je me demande si je vais pas faire chier excel via OLE [:meganne]


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 28-08-2003 à 18:07:57    

a priori les courbes Cardinal ou Catmull Rom seraient bien (enfin ce que j'en dis ;) )
 
http://www.ddt.pwp.blueyonder.co.u [...] rdinal.htm

Reply

Marsh Posté le 28-08-2003 à 18:08:49    

:lol:
 
bin tu sais, la routine de tessellation peut être super simple (10 lignes)

Reply

Marsh Posté le 28-08-2003 à 18:09:20    

ouai.
 
Mais tracer le truc je le sens moyen tvois ...
 
Et les algos du type j'ai déjà donné avec QuickHull :D


Message édité par Tetedeiench le 28-08-2003 à 18:09:44

---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 28-08-2003 à 18:12:39    

spa ça: tu tesselles via ta spline préférée, et tu fournis ça à ton TChart normal ou équivalent.

Reply

Marsh Posté le 28-08-2003 à 18:41:06    

Sur http://www.sciences-en-ligne.com/m [...] _carr.html y a "Méthode des moindres carrés selon Gauss". Si on a l'équation type de la courbe à dessiner (celle qui épouse bien les points épars posés par le physicien), ça doit pouvoir se transcoder (y a le code en BASIC). Bon pour paraboles en particulier. :D  

Reply

Marsh Posté le 28-08-2003 à 18:50:32    

CARBON_14 a écrit :

Sur http://www.sciences-en-ligne.com/m [...] _carr.html y a "Méthode des moindres carrés selon Gauss". Si on a l'équation type de la courbe à dessiner (celle qui épouse bien les points épars posés par le physicien), ça doit pouvoir se transcoder (y a le code en BASIC). Bon pour paraboles en particulier. :D  
 


 
Euh merci, mais mes courbes sont plus de type exponentielles sauf qu'elles sont majorées ( temperature du CPU lors de mon test, ca grimpe beaucoup puis ca ralentit et enfin pouf... c'est cappé ;) )
 
Bref, la, j'ai plus le temps de l'implémenter avant l'Open beta demain, donc j'attendrai un peu :D
 


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 28-08-2003 à 23:50:50    

ouais ou sinon ya aussi cosine interpolation qui est tout simple et qui fonctionne tres bien pour les graphes (ou les points sur des axes sont croissant (laxe x par exemple)
 
par contre pour du dessin rien de tel que les bezier curves
 [:yamusha]


Message édité par red faction le 28-08-2003 à 23:54:49
Reply

Marsh Posté le 29-08-2003 à 00:04:02    

BJOne a écrit :

a priori les courbes Cardinal ou Catmull Rom seraient bien (enfin ce que j'en dis ;) )
 
http://www.ddt.pwp.blueyonder.co.u [...] rdinal.htm


 
je les aimes pas elles, elles font des "trous" si t'as une forte pente par exemple
bezier me parait plus mieux (pis c ce qu'il y a sur le graphe n shot)

Reply

Marsh Posté le 29-08-2003 à 00:04:49    

red faction a écrit :

ouais ou sinon ya aussi cosine interpolation qui est tout simple et qui fonctionne tres bien pour les graphes (ou les points sur des axes sont croissant (laxe x par exemple)
 
par contre pour du dessin rien de tel que les bezier curves
 [:yamusha]
 


 
ou interp lineaire avec filtre cubique [:spamafote]

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed