假设解析方程不成问题,在给定特定画布尺寸的情况下,如何制作算法来绘制任意方程?如,获取所有像素的坐标以突出显示?
我试过在给定 X 的情况下反复计算 Y,但结果看起来很草率。
这不是一个家庭作业问题。
通过绘图,我的意思是真正的图形,就像图形计算器如何绘制方程一样。
您可以考虑使用样条曲线,而不是单独绘制每个像素。例如System.Drawing.Graphics
,有一种DrawCurve
方法可以通过多个点绘制平滑曲线(样条曲线)。另外设置SmoothingMode
为AntiAlias
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);