所以我正在编写一个图形计算器。到目前为止,我有一个半功能绘图器,但是,我很难在准确的图形和平滑的曲线之间取得良好的平衡。
当前的实现(半伪代码)看起来像这样:
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
附言我不是在寻找可以完成所有这些工作的库 - 我想自己编写。
最佳答案
好的,我解决了这个问题。在绘图过程中的某个地方,我使用了 int 而不是 float。
关于c# - 如何在 C# 中实现绘图器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4699732/