5

私は、大陸を検出するために再利用されたフラッド フィル アルゴリズムを使用するプレート テクトニクス シミュレーターに取り組んでいます。アルゴリズムはほとんど同じです。唯一の違いは、ピクセルではなく頂点で機能することです。

私はこの動作の品質を改善しようと試みてきました - 大陸地殻で隣接する 2 つ以下のピクセル/頂点を無視した場合の動作を確認したいと思います。これをサポートするフラッド フィル アルゴリズムの既存のバリアントはありますか?

私の(やや簡略化された)コードは次のとおりです。

var group = [];
var stack = [initialVertex];
while(stack.length > 0){
    var next = stack.pop();
    if (group.indexOf(next) != -1 && isContinental(next)){
        group.push(next);
        stack = stack.concat(getNeighbors(next));
    }
}
return group 
4

2 に答える 2

1

結局のところ、それほど難しくはありませんでした。isContinentalチェックを隣接する頂点に移動するだけです。これが最も効率的な方法かどうかはわかりませんが、うまくいきます。

var group = [];
var stack = [initialVertex];
while(stack.length > 0){
    var next = stack.pop();
    if (group.indexOf(next) != -1){
        var neighbors = getNeighbors(next).filter(isContinental)
        if (neighbors.length > 3){
            group.push(next);
            stack = stack.concat(neighbors);
        }
    }
}
return group;
于 2013-11-06T19:13:55.057 に答える