所以我正在写一个图形计算器。到目前为止,我有一个半功能的绘图员,但是,我很难在准确的图形和平滑的曲线之间取得良好的平衡。
当前的实现(半伪代码)如下所示:
for (float i = GraphXMin; i <= GraphXMax; i++)
{
PointF P = new PointF(i, EvaluateFunction(Function, i)
ListOfPoints.Add(P)
}
Graphics.DrawCurve(ListOfPoints)
这样做的问题是,因为它只在每个整数值上添加一个点,所以当它们的转折点不落在整数上时(例如sin(x)^2),图形最终会失真。
我尝试将i增加一些较小的值(如 0.1),这可行,但图表看起来非常粗糙。
我正在使用 C# 和 GDI+。我将 SmoothingMethod 设置为 AntiAlias,所以这不是问题,正如您从第一张图中看到的那样。绘制具有很多点的曲线是否存在某种问题?这些点是否应该精确定位在像素上?
我相信你们中的一些人以前做过非常相似的事情,所以有什么建议吗?当你在做的时候,你对用渐近线绘制函数有什么建议吗?例如 1/x^2
PS 我不是在寻找一个能做这一切的图书馆——我想自己写。