2009-10-26 7 views
2

Comment dessiner une onde carrée en utilisant ZedGraph?Comment dessiner une onde carrée en utilisant ZedGraph?

Je pense à quelque chose comme ceci:

alt text http://www.zsee.bytom.pl/sciaga/prad/grafika/okr%20prosto.jpg

Ma formule est:

y = amplitude, if sin(x) >=0 

y = -amplitude, if sin(x) < 0 

En théorie, il devrait donner une onde carrée, mais me donne:

alt text http://img27.imageshack.us/img27/9813/xxxmy.png

+0

Une formule pour cela est x = signe (sin (T)). – Brian

+0

J'ai une formule qui devrait fonctionner, mais je suis troublé avec cette courbe de direction verticale à T et 1/2 T –

+0

juste pour être clair, vous n'obtenez pas les bonnes valeurs? ou, Vous obtenez les valeurs correctes et zedGraph ne les dessine pas? – jim

Répondre

4

Vous devez modifier le type de pas de votre courbe. Utilisation:

line.Line.StepType = StepType.ForwardStep; 

bien sûr line est votre objet LineItem

+0

Pour référence: l'autre type d'étape est 'StepType.RearwardStep'. Une démo peut être trouvée sur: http://zedgraph.org/wiki/index.php?title=Smooth_Chart_Demo –

2

On dirait que c'est st épingler des valeurs discrètes le long de l'axe X (ce qui est vraiment presque inévitable), et dessiner une ligne raide (mais toujours visiblement non verticale) à partir du dernier point où il a échantillonné un péché positif (x), à travers sin (x) = 0 au point suivant où il échantillonne un péché négatif (x). Le remède évident est de lui dire d'échantillonner la fonction à des intervalles plus petits - spécifiquement, assez petit pour que la transition de +1 à -1 (ou vice versa) se produise en moins de la largeur d'un pixel que vous ll finira par l'afficher.

+0

cela fonctionne - merci. –

+1

Mais ce n'est pas la solution, c'est seulement faux, en train de tromper la perception de nos yeux. Après un zoom avant, il sera encore visible. Vous devez modifier le type d'étape pour votre courbe (LineItem): line.Line.StepType = StepType.ForwardStep; – Gacek

Questions connexes