实现轮廓绘图的方法

Sta*_*fan 3 math graphics vector-graphics

我需要实现一个等高线绘图算法(而不是只使用一个).输入是(连续)函数f:R ^ 2 - > R(该函数在整个域上定义,而不仅仅针对某些输入).输出应为矢量形式,即一组样条或线段.

我正在寻找有关如何实现这一点的建议,最好是以(科学)论文的形式.

我发现了对80年代开发的算法的一些参考("水平追踪算法").过去30年来这个领域有没有发展?用于解决此问题的标准方法是什么?

该算法将用于实时可视化,因此它需要快速,同时仍能产生不错的结果.

(小型,独立且经过良好测试的C/C++实现也将受到欢迎.)

Ale*_* C. 5

我记得TI-89计算器使用了这样一个非常简单的方案:

  • 制作网格,尝试网格大小
  • 在网格的每个顶点计算您的函数
  • 对于每个方格,如果有两个具有不同符号的f值,则内部会有一些有趣的东西.假设情况如下:
    • 对于方形的每个"有趣"侧(f在端点处具有不同的符号),通过二分(或者如果您在低预算时通过线性插值)找到侧面的f的零.可能有两个或四个有趣的方面.
    • 如果有两个有趣的边,在零点之间画一条直线.
    • 如果有四个有趣的方面,画一个十字架.

现在,你可能想要适应性地改进有趣的方块.TI-89有一个该死的小屏幕(160x120),这是没有必要的.可以在有趣的方块内使用完全相同的方法.