绘制数学函数/关系/曲线

时间:2015-12-06 15:04:34

标签: math drawing webgl equation

我想要复制Desmos Graphing Calulator以及其他图表工具(例如Wolfram AlphaMatLab)提供的等式绘图功能。我打算用WebGL绘制方程式。

sine wave

这个简单的正弦方程在处理时非常舒服,因为每个x轴值都有1个y轴值,即它通过vertical line test。我可以迭代屏幕上的每个x轴像素,并评估函数并获得相关的y轴值,给我一组点来绘制一条线。我不确定这是否是最佳方式,但它确实有效。

square wave

然而,对于这个方波,如果我要评估x = 0,1,2,3等点,我只会得到一个相应的y值。我该如何绘制这个功能?

circle

作为另一个例子,我如何画一个只提供这个隐式方程的圆?

我不打算使用图形库,也不知道如何只绘制这3个形状。我更感兴趣的是库本身如何提供泛型数学函数绘制功能,能够绘制提供给它们的任何方程式。

1 个答案:

答案 0 :(得分:1)

如果要正确显示方波,则必须没有垂直线。您的问题中的可视化意味着函数通过立即值,而不是这种情况。所以我会投票不画垂直线。但是,如果你真的想要这个,那么这是一种方法:

如果您使用将每个点连接到一条线的简单方法,那么您几乎就在那里。唯一的区别是垂直线不是垂直的而是稍浅的。为避免这种情况,您可以先检测功能值跳转。如果检测到这样的跳转,请在两个入射像素之间运行二进制搜索以查找实际的跳转位置。在线上再添加两个点,在跳转位置绘制一条垂直线。

对于隐式形状,基本上有两个选项:尝试查找显式表示(很可能不是选项)或使用Marching Cubes提取轮廓。