クロスワード パズルで見られるグリッドと非常によく似ていますが、4 つの異なる色を使用して各セルを塗りつぶします (黒または白だけではありません)。
グリッド サイズは約 160x120 で、セル オートマトンアニメーションの表示に使用されるため、できるだけ速くレンダリングする必要があります。
グリッドをレンダリングするために、次の 2 つの異なるアプローチを試しました。
次のようなものを使用して各セルをレンダリングします。
var w = x + step; var h = y + step; canvasContext.fillStyle=cell.color; canvasContext.fillRect(x+1,y+1,w-1,h-1); canvasContext.strokeRect(x,y,w,h);
境界線なしですべてのセルをレンダリングし、次を使用してグリッド線をレンダリングします。
var XSteps = Math.floor(width/step); canvasContext.fillStyle = gridColor; for (var i = 0, len=XSteps; i<len; i++) { canvasContext.fillRect(i*step, 0, 1, height); } //Similar thing for Y coord
どちらのアルゴリズムもパフォーマンスが低く、どちらの場合もセルよりもグリッドを描画する方が遅くなります。何か不足していますか?これらのアルゴリズムを最適化するにはどうすればよいですか? 私が試すべき別の方法はありますか?
注: ユーザーがグリッドを移動したりビューをズームしたりできるため、グリッドが移動します。
一般的な質問は次のとおりです:要素にセルのグリッドを描画する最速のアルゴリズムは何ですか?