我正在开发一个游戏原型,它将涉及从一个非常大的点列表中创建一个Delaunay三角形的地图(很容易在十万个范围内,因为它将成为一个然而,为了达到这个目标,我需要在一个大圆圈内进行很好的分布。
我特意使用Delaunay三角形的原因是因为通过限制边长来强制实现三角形的最大尺寸是相当容易的。使用Voronoi单元格时,我必须查看单元格占用的区域,这是一个相当密集的区域,而且我并不真正意识到从点生成多边形的其他好方法。
我知道如何均匀地放置随机点,因此外层包含的面积与其面积成比例,但是我需要平滑点以确保Delaunay集没有大的间隙或密集的点集群。我需要的一个很好的例子是Lloyd's Algorithm,但是我更喜欢一种尽可能快地运行以实现大致均匀分布的方法,因为它应该在不超过几分钟的时间内通过所有点进行流失。平均低端CPU(比如2GHz单核)。
我认为确定大致均匀的基线是检查每个点并查看距离最近邻居的距离。如果一个点的最小最小距离至少是最大值的两倍,则它不均匀。
如果需要,我可以修改我的点分布函数,如果平滑需要一个合理的起点,或者你可以自己提供,则用象限创建一个大致均匀的分布。但是,这只适用于与不执行此操作相比节省大量时间的情况(我预计会因此而减少最坏情况)。
最后,一个符合平滑到设定半径的答案值得多于一个需要改变结果的答案,并且一个符合给定径向高度图的答案(通过函数调用一个角度)是值得的更多的是我计划创建一个径向高度图(平面行星很无聊)。此外,Java中的代码示例本身就更有用,因为我会在其中制作我的游戏,但其他代码示例都很好。
关于如何以最高效率解决圆圈中的点平滑问题的任何建议?
答案 0 :(得分:0)
从均匀分布开始(从静态均匀分布集中随机选取)。
对于每个点添加一个小幅度的随机高斯噪声。
结束。