我在互联网上搜索了很久,但并没有找到一个完美的算法解决这个问题:
我们的客户有一组带权重数据的点,如下图所示:
weighted points http://chakrit.net/files/stackoverflow/so_heightmap_points.png
我们有一个GIS程序可以从这些点和它们的权值生成“高度图”或地形数据,但由于我们有近千个数据点,并且这些点会随时间变化,因此我们希望创建自己的工具来自动生成这些高度图。
到目前为止,我尝试使用Sqrt((x1 - x2) ^ 2 + (y1 - y2) ^ 2)
来计算每个像素点到最近数据点的距离并将权重和距离因子应用于数据点的颜色,以产生该特定像素的渐变颜色:
heightmap result http://chakrit.net/files/stackoverflow/so_heightmap_result.png
你可以看到,在某些数据点的配置中仍然存在问题,当有很多数据点时,该算法有时会产生一个相当多边形的图像。理想的结果应该更像一个椭圆,而不是一个多边形。
这里有一张来自维基百科关于梯度上升的文章的图片,展示了我想要的结果:
mountains http://chakrit.net/files/stackoverflow/so_gradient_descent.png
梯度上升算法并不是我的兴趣所在。 我感兴趣的是,提供带权重数据点后计算那个图片中原始函数的算法。
我没有学过拓扑数学课程,但我可以做一些微积分。 我认为我可能遗漏了什么,现在非常迷茫,不知道应该在Google搜索框中输入什么。
我需要一些指导。
谢谢!