OVH Cloud OVH Cloud

Lisser(smoothing) une simple courbe

6 réponses
Avatar
TouTi
Bonjour et bonne année

Je suis actuellement sur un petit projet permettant de représenter par une
courbe des séries de données.
En abscisse représentées 28 "crans" et en ordonnée 0 jusque 255.
Plusieurs possibilités de représentation des données : Une droite, une
exponentielle, ou selon son choix.
Le fond du graphique est une picture et chaque donnée est représentée par
une picture(carré). Tous les carrés sont reliés par une série de "line"
définissant la courbe générale.
Chaque carré peut être déplaçable à la souris ou réorganisé selon le type de
courbe choisie.
Les coordonnées des carrés (données) sont stockés dans un tableau.

Mon but serait de lisser (smoothing) la courbe créer manuellement.

Avant d'aller plus loin, j'aimerai savoir s'il n'existerait pas déjà un
contrôle similaire à mon projet ou alors pourriez vous m'aider à la réaliser
ce lissage (smoothing)

Merci et bon dimanche

--
GuY

6 réponses

Avatar
LE TROLL
Bonjour,

lissage des courbes

i=0
For j = valeur To (valeur + x) Step 0.01
posit = Hauteur - (Hauteur / 2) * (Sin(2 * 3.141592654 * j / cycle) + 1)
' milieu -> haut
'OU
posit = Hauteur / 2 * (Sin(2 * 3.141592654 * j / cycle) + 1)
' milieu -> bas
i = i + 1
PSet (i, posit), QBColor(couleur)
Next j

Commentaires:
------------
("J" dans la boucle) est la valeur à afficher
(X) est le nombre d'affichages
(Hauteur) est la hauteur du graphique
(Hauteur - (Hauteur / 2)) donne un départ du milieu vers le haut
(Hauteur / 2) donne un départ du milieu vers le bas
("J" dans la formuler) + ou - donne le point de départ en hauteur
(Cycle) donne la longueur du cycle à répéter
Pset(L, C), couleur trace au pixel


Ce logiciel là emploi cette méthode:

http://irolog.free.fr/irolog_vente/biorythmes_v/index.htm

--
Site de MES LOGICIELS
http://irolog.free.fr
Site éditeur de MES ROMANS édités
http://irolog.free.fr/romans
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"TouTi" <gelapplication[NsP]@tiscali.fr> a écrit dans le message de news:
%
Bonjour et bonne année

Je suis actuellement sur un petit projet permettant de représenter par une
courbe des séries de données.
En abscisse représentées 28 "crans" et en ordonnée 0 jusque 255.
Plusieurs possibilités de représentation des données : Une droite, une
exponentielle, ou selon son choix.
Le fond du graphique est une picture et chaque donnée est représentée par
une picture(carré). Tous les carrés sont reliés par une série de "line"
définissant la courbe générale.
Chaque carré peut être déplaçable à la souris ou réorganisé selon le type
de courbe choisie.
Les coordonnées des carrés (données) sont stockés dans un tableau.

Mon but serait de lisser (smoothing) la courbe créer manuellement.

Avant d'aller plus loin, j'aimerai savoir s'il n'existerait pas déjà un
contrôle similaire à mon projet ou alors pourriez vous m'aider à la
réaliser ce lissage (smoothing)

Merci et bon dimanche

--
GuY



Avatar
Jean-marc
TouTi wrote:
Bonjour et bonne année

Je suis actuellement sur un petit projet permettant de représenter
par une courbe des séries de données.
En abscisse représentées 28 "crans" et en ordonnée 0 jusque 255.
Plusieurs possibilités de représentation des données : Une droite, une
exponentielle, ou selon son choix.
Le fond du graphique est une picture et chaque donnée est représentée
par une picture(carré). Tous les carrés sont reliés par une série de
"line" définissant la courbe générale.
Chaque carré peut être déplaçable à la souris ou réorganisé selon le
type de courbe choisie.
Les coordonnées des carrés (données) sont stockés dans un tableau.

Mon but serait de lisser (smoothing) la courbe créer manuellement.

Avant d'aller plus loin, j'aimerai savoir s'il n'existerait pas déjà
un contrôle similaire à mon projet ou alors pourriez vous m'aider à
la réaliser ce lissage (smoothing)

Merci et bon dimanche



Hello,

il existe 2 principales méthodes pour faire ça:
- Les courbes de Bezier
- Les Spline

Tu trouveras sur le lien ci-après une implémentation très simple
de ces 2 méthodes, avec les jsutifications mathématiques qui vont
avec:
http://raphaello.univ-fcomte.fr/ig/Lissage/Lissage.htm
Les implémentations sont en C mais triviales à traduire en VB.

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
Jean-marc
Jean-marc wrote:
Tu trouveras sur le lien ci-après une implémentation très simple
de ces 2 méthodes, avec les jsutifications mathématiques qui vont
avec:
http://raphaello.univ-fcomte.fr/ig/Lissage/Lissage.htm



Le bon lien est:
http://raphaello.univ-fcomte.fr/ig/Lissage/

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
Jean-marc
TouTi wrote:
Bonjour et bonne année

Je suis actuellement sur un petit projet permettant de représenter
par une courbe des séries de données.
En abscisse représentées 28 "crans" et en ordonnée 0 jusque 255.
Plusieurs possibilités de représentation des données : Une droite, une
exponentielle, ou selon son choix.
Le fond du graphique est une picture et chaque donnée est représentée
par une picture(carré). Tous les carrés sont reliés par une série de
"line" définissant la courbe générale.
Chaque carré peut être déplaçable à la souris ou réorganisé selon le
type de courbe choisie.
Les coordonnées des carrés (données) sont stockés dans un tableau.

Mon but serait de lisser (smoothing) la courbe créer manuellement.

Avant d'aller plus loin, j'aimerai savoir s'il n'existerait pas déjà
un contrôle similaire à mon projet ou alors pourriez vous m'aider à
la réaliser ce lissage (smoothing)

Merci et bon dimanche



Et tant qu'on y est, une implémentation complète en VB:
http://www.vbfrance.com/codes/INTERPOLATION-SPLINE_18366.aspx

Et puis ça pour Bézier, simple et bien décrit:
http://www.vbfrance.com/codes/COURBES-BEZIERS-ALGO-CASTELJAU_39526.aspx

Et ceci qui est un exercice résolu, particulièrement didactique:
http://cdalpha.univ-lyon1.fr/vb/exercice3.htm

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
TouTi
Merci le troll

i=0
For j = valeur To (valeur + x) Step 0.01
posit = Hauteur - (Hauteur / 2) * (Sin(2 * 3.141592654 * j / cycle) + 1)
' milieu -> haut
'OU
posit = Hauteur / 2 * (Sin(2 * 3.141592654 * j / cycle) + 1)
' milieu -> bas
i = i + 1
PSet (i, posit), QBColor(couleur)
Next j



Mais ton code un peu trop spécifique

GuY

--
Avatar
TouTi
Bonsoir Jean marc

Et tant qu'on y est, une implémentation complète en VB:
http://www.vbfrance.com/codes/INTERPOLATION-SPLINE_18366.aspx
Et puis ça pour Bézier, simple et bien décrit:
http://www.vbfrance.com/codes/COURBES-BEZIERS-ALGO-CASTELJAU_39526.aspx
Et ceci qui est un exercice résolu, particulièrement didactique:
http://cdalpha.univ-lyon1.fr/vb/exercice3.htm



Un grand merci pour tes recherches et j'ai enfin trouvé ce qu'il me fallait
: C'est un lissage à partir d'une courbe de bézier.

Un grand replongeon dans les maths, géométrie,... mais ça ne fait pas de
mal ;-))

GuY