如果它们相距很远,则将点数组分成多个点数组
Separate array of points into multiple arrays of points if they are far apart
我希望我在这里很清楚,我会尝试添加图片来帮助人们理解我的问题。我有一个非常简单的 Perlin 噪声湖生成器:
将湖泊输出为点数组:
[
{x: 0, y: 0},
...
]
使用简单的跟踪器从这些点生成多边形。它工作得很好,我对它很满意,直到我想到一个可能发生的问题,然后发现这个问题确实发生了。当你在一个区块中有两个独立的湖泊时(像这样)
多边形追踪器无法创建有效的多边形。我相信解决方案是事先将点分成点组,我查找了如何执行此操作,但我发现的只是一种算法,它需要知道在它可以工作之前应该有多少组(我这样做不知道)。我完全被难住了,想要一些关于从哪里开始的建议。我不需要完整的代码答案(我可以自己实现),但是一个概念会很好。
我仍然会在等待答案的同时四处寻找并尝试一些东西,尽管我怀疑我是否能够找到任何有用的东西。哦,如果这很重要,我的多边形追踪器会使用行进方块。
你需要的是 Clustering algorithm. And since you say that you don't know the number of clusters beforehand, I would recommend the Mean Shift algoritm.
我希望我在这里很清楚,我会尝试添加图片来帮助人们理解我的问题。我有一个非常简单的 Perlin 噪声湖生成器:
将湖泊输出为点数组:
[
{x: 0, y: 0},
...
]
使用简单的跟踪器从这些点生成多边形。它工作得很好,我对它很满意,直到我想到一个可能发生的问题,然后发现这个问题确实发生了。当你在一个区块中有两个独立的湖泊时(像这样)
多边形追踪器无法创建有效的多边形。我相信解决方案是事先将点分成点组,我查找了如何执行此操作,但我发现的只是一种算法,它需要知道在它可以工作之前应该有多少组(我这样做不知道)。我完全被难住了,想要一些关于从哪里开始的建议。我不需要完整的代码答案(我可以自己实现),但是一个概念会很好。
我仍然会在等待答案的同时四处寻找并尝试一些东西,尽管我怀疑我是否能够找到任何有用的东西。哦,如果这很重要,我的多边形追踪器会使用行进方块。
你需要的是 Clustering algorithm. And since you say that you don't know the number of clusters beforehand, I would recommend the Mean Shift algoritm.