使用给定的Delaunay三角剖分在Java中绘制轮廓线

时间:2016-05-08 12:50:45

标签: java contour splines

我目前正在研究我的硕士论文:

  • 以(x,y,z)形式给出n个点,为我绘制的Delaunay三角剖分。

我的任务是使用这种三角测量并在给定的z值下制作轮廓线。 通过实现维基百科样条插值,我几乎成功地做到了这一点:https://en.wikipedia.org/wiki/Spline_interpolation

我的问题是,在实现样条时,我会让轮廓线相互交叉,当然线性图也不会交叉。

Parametric cubic spline interpolated contour lines

如果你看一下屏幕的底部,你会看到两条等高线交叉,我没有足够的声望点来表明线性图没有。您还可以从一点到另一点看到边缘过于圆润。 我尝试过的是在任意一对点之间插入更多的点以沿线形成更多的结点,这可以进一步限制它们,但是为了得到非交叉线,样条看起来太像线性图形了#39;令人满意。

我想知道的,不是如何实际的代码实现,而是指向如何,读数等的指针。 (注意,我将从头开始制作,没有库)。

问题:如何制作一个更高阶的多项式函数,它不会在线性对应物之外曲线过多。太多我的意思是让一个给定的轮廓说50米,它不会在60米处穿过轮廓。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以尝试加权delaunay三角测量。它被定义为euklidian距离减去重量。

答案 1 :(得分:-2)

多年前的夫妻我解决了类似的任务。 这是我的一些工作笔记。可能它会帮助你。

  1. 请参阅github上的XoomCode AcidMaps插件: https://github.com/XoomCode/AcidMaps/tree/master/examples/isolines
  2. 这是一个演示: http://ams.xoomcode.com/flex/index.html 例如,设置渲染器类型" Sparse"和插值策略"线性",然后按"更新"按钮。

    1. 请参阅VividSolutions JTS Java库: http://www.vividsolutions.com/jts/download.htm

    2. http://mike.teczno.com/notes/curves-through-points.html

    3. http://blog.csdn.net/xsolver/article/details/8913390