Tracer une fonction [Résolu]

Messages postés
10
Date d'inscription
jeudi 18 janvier 2007
Dernière intervention
22 juillet 2007
- - Dernière réponse : ctx_man
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Dernière intervention
20 janvier 2013
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de ctx_man
Messages postés
10
Date d'inscription
jeudi 18 janvier 2007
Dernière intervention
22 juillet 2007
0
Merci
je comprend bien le principe mais quelle est la commande permettant de tracer ces points ?
Commenter la réponse de luudo
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
0
Merci
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
*/
Commenter la réponse de cs_coq
Messages postés
10
Date d'inscription
jeudi 18 janvier 2007
Dernière intervention
22 juillet 2007
0
Merci
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
Commenter la réponse de luudo
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Dernière intervention
20 janvier 2013
0
Merci
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.
Commenter la réponse de ctx_man

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.