今天,我们就运用我们之前所学习的知识来绘制函数。
绘制函数
今天我们的编程目标是在我们之前绘制的网格中绘制任意的函数。我们绘制函数的基本思路是利用了微积分的思想,将任意的曲线分割成若干的曲线,通过绘制一小段一小段的直线来达到绘制曲线的目的。
可以看下面的两张图,第一张图的步长比较大,所以我们能够看出一些折线的感觉,第二张图中,我采用了更小的步长来进行绘制,所以整个函数看起来十分的圆滑。

绘制线段
那么有了这样的一个基本思想过后,现在有一个直接的问题摆在我们的眼前,那就是如何绘制一条线段? 有了之前的基础我们很容易就可以想到:
我们可以求出点到直线的距离,然后计算该距离是否处于某个值内(线的宽度)?如果存在我们就给这个点赋予一个颜色。伪代码如下:
d = LineDist(point, line);
if (d < lineWidth / 2) {fragColor = vec3(1.0);
}
那么现在问题又转化为:如何计算点到直线的距离 有的小伙伴可能会反应出来之前初中学习过点到直线的距离公式:
d=Ax+By+CA2+B2d = \frac{Ax + By + C}