2012-06-25 112 views
0

假設解析方程不會成爲一個問題,我怎麼才能讓一個算法繪製任意方程,給定一個特定的畫布大小?如在,讓所有像素的座標突出顯示?如何繪製/繪製任意方程

我試過只是反覆計算Y給定X,但它出來看起來馬虎。

這不是一個家庭作業問題。

通過繪圖我的意思是真正的圖形,如圖形計算器如何繪製一個方程。

+2

你是什麼意思「看起來馬虎」? –

+0

你的公式來自哪裏?你如何將它們解析爲程序可以理解的東西? – Oded

+0

你看過任何圖形繪圖庫嗎?不需要重新發明輪子。 –

回答

0

考慮使用.NET Framework 4中包含的(Windows窗體)DataVisualization Charting庫。API文檔here和技術參考頁面here

1

您可以考慮使用樣條曲線,而不是分別繪製每個像素。例如System.Drawing.Graphics有一個DrawCurve方法,通過多個點繪製平滑曲線(樣條曲線)。另外設置SmoothingModeAntiAlias

e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; 

考慮通過功能(如果可能)lambda表達式。這比解析以字符串形式給出的表達式更簡單。

public void DrawCurve(PointF[] points, Func<float,float> f) 
{ 
    ... 
    float y = f(x); 
    ... 
} 

例如,

DrawCurve(points, x => (float)Math.Sin(x)/(x * x + 1);