Tracer une fonction [Résolu]

Signaler
Messages postés
10
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
22 juillet 2007
-
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013
-
Bonjour , je souhaiterais tracer la fonction suivante :

(0.25 + 0.22508*Math.Sin(((Math.PI/4))*x)+0.0932*Math.Cos(((Math.PI/4))*x))

elle devrait donner une sinusoide , mais je ne sais pas du tout comment faire ?

dois-je faire un tableau de valeur pour x et après tracer des points ou peut on directement tracer cette fonction,

Merci

5 réponses

Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013

Salut !

Ta fonction c'est quelque chose de la forme y = f(x)
avec f(x) = (0.25 + 0.22508*Math.Sin(((Math.PI/4))*x)+0.0932*Math.Cos(((Math.PI/4))*x)) dans ton cas.

Donc, pour tracer ta fonction sur du papier millimétré, tu fais comment ?

Tu calcul f(0), et tu met ton point en [x=0; y=f(0)]
puis tu calcul un autre f(x), par exemple f(1), et tu refait pareil.
Enfin tu relie les points.

Et bien l'écran, c'est comme du papier millimétré. L'unité de mesure n'est pas le milimètre, mais le pixel. A part ca, rien ne change.

Admettons que ta fenetre de traçage fasse 100px par 100px.
Tu trace f(x) avec x allant de 0 à 20 (exemple)
donc, petit coefs : x 0 -> tx 0; x = 20 -> tx = 100; => coeffX = 100 / 20 = 5 && decalX = 0;
tu encadre les valeurs max/min de y de la meme facon :
y allant de -100 à 100 : y -100 -> ty 0; y = 100 -> ty = 100; => coeffY = 1 && decalY = -100;

Maintenant, en utilisant les coordoonées des pixels, tu obtient les valeurs de ta fonction :
p[X;Y] = [X * coeffX + decalX ; f(X) * coeffY + decalY]

Tu n'a plus qu'a tracer tes points. Si tu trace un point pour chaque pixel de ta zone de tracage, ca risque de prendre un paquet de temps.
Tu peux donc faire comme tu fait à la main : tu trace un pixel tous les 10/20 pixels en largeur. Et tu les relie.
Messages postés
10
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
22 juillet 2007

je comprend bien le principe mais quelle est la commande permettant de tracer ces points ?
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Salut,

Il n'y a pas de commande à proprement parler.
Il doit bien exister quelques librairies destinées à cet usage mais de tête je ne peux pas t'en citer.
En revanche si tout ce qu'il te manque est de tracer la courbe à partir de points calculé, tu peux peut être regarder du côté de ZedGraph.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
10
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
22 juillet 2007

il n'y a rien a faire je n'arrive rien a faire pour tracer mes points
si je vous laisse les coordonnées de 4 points serait t'il possible d'avoir un exemple

point A (X,Y) : 1 ; 0,39
point B             2 ; 1,03
point C             3 ; 0,32
point D             4 ; -0,14

en fait il faut utiliser une picture box c'est bien ca ?

merci d'avance
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013

Salut !
Je ne pense pas q'une librairie de dessin additionnelle soit nécéssaire pour tracer une courbe. Si tu en veux vraiment, bah il y a OpenGL, DirectX, Allegro, SDL, .....

Mais bon, perso GDI me semble suffisent.
Pas besoin de picturebox ou je ne sais quoi. N'importe quel control/form peut servire de feuille de dessin.
Cherche du coté de Graphics.DrawLine, Graphics.DrawBezier ou encore Graphics.DrawCurve)
Tu trouvera toutes les infos que tu veux sur msdn. Ces objets/methodes sont dans System.Drawing.