所以我有一些不规则间隔的数据,我想将其插入到规则网格中。 (我想做 this 但在 Java 中)这是一张图片:
基本上我有每个点的 x 和 y 坐标以及与每个点关联的 z 值,我想在它们之间进行插值并填充图像的中心。
使用 Java 执行此操作的最佳方法是什么?是否有我可以使用的内置 2D 插值库,或者我应该尝试“自己动手”的方法吗?
This post和 this one似乎也在尝试做关于我的事情,但他们的回答并不完全适用。
Someone else有同样的问题,但没有解决方案。
注意:我正在使用 JavaFX-2,所以如果我能以某种方式使用他们的 Interpolator
类,那就太好了。
.
.
编辑:
如果有人偶然发现这个并想知道我最终使用了什么,那是 BGU 的 Delaunay Triangulation 实现:
Main Site
Code API
最佳答案
如果线性插值就足够了,我建议你使用带有 Gouraud Shading 的 3d 网格进行绘制:
- 将 2d 点云转换为网格(您可以谷歌搜索现有算法)
- 将每个点的 z 值映射到顶点的颜色
- 使用 Gouraud Shading 在顶点颜色之间启用线性插值
- 在网格顶部创建一个相机并使用正交投影(以避免透视)
你说你可以使用JavaFX。 JavaFX 支持 3d 场景,您可以构建自己的网格。但是查看 TriangleMesh 的 JavaDoc,我找不到任何设置顶点颜色的方法,我只找到了设置 (x,y,z) 和 (u,v)(纹理坐标)坐标的方法。
关于java - 散点二维数据的线性插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24663580/