Tracer une fonction

Résolu
luudo Messages postés 10 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 22 juillet 2007 - 20 juil. 2007 à 15:25
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 - 21 juil. 2007 à 19:24
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

ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 2
20 juil. 2007 à 16:01
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.
3
luudo Messages postés 10 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 22 juillet 2007
20 juil. 2007 à 20:05
je comprend bien le principe mais quelle est la commande permettant de tracer ces points ?
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 99
21 juil. 2007 à 00:05
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
*/
0
luudo Messages postés 10 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 22 juillet 2007
21 juil. 2007 à 16:14
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 2
21 juil. 2007 à 19:24
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.
0