【问题标题】:Drawing a math function / relation / curve绘制数学函数/关系/曲线
【发布时间】:2015-12-07 03:01:00
【问题描述】:

我想复制Desmos Graphing Calulator 和其他绘图工具(例如Wolfram AlphaMatLab)提供的方程绘图功能。我打算使用 WebGL 来绘制方程。

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

但是,对于这个方波,如果我要在 x = 0、1、2、3 等点进行评估,我只会得到一个对应的 y 值。如何绘制这个函数?

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

我不打算使用图形库,也不对如何仅绘制这 3 个形状感兴趣。我对这些库本身如何提供通用数学函数绘图功能更感兴趣,该功能能够绘制提供给它们的任何方程。

【问题讨论】:

    标签: math drawing webgl equation


    【解决方案1】:

    如果要正确显示方波,则必须没有垂直线。您问题中的可视化意味着该函数通过立即值传递,但事实并非如此。所以我会投票赞成不画垂直线。但是,如果您真的想要这样做,这里有一种方法:

    如果您使用将每个点连接到一条线的简单方法,您就快到了。唯一的区别是垂直线不是垂直的,而是有点浅。为避免这种情况,您可以首先检测函数值跳跃。如果您检测到这样的跳跃,请在两个入射像素之间运行二进制搜索以找到实际的跳跃位置。在第二行再添加两个点在跳跃的位置画一条垂直线。

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

    【讨论】:

      猜你喜欢
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-05
      • 2013-11-30
      • 2020-09-09
      • 1970-01-01
      相关资源
      最近更新 更多