私はさまざまなサイズのチェス盤(100x100のような大きなサイズ)でナイトのツアーのアルゴリズムを持っており、結果をアニメートしたいと思います。ナイトが新しい正方形に移動するたびに、正方形キャンバス内の対応するピクセルが色を変え、最終的にキャンバス全体が色づけされます。結果のムービーは、アルゴリズムについてのWebページで表示できます。アルゴリズムを使用してアニメーションGIFを作成する最善の方法は何ですか?
広範なブラウザサポートが必要な場合は、アニメーションGIFが最良の方法のようです(他の提案も歓迎です)。これを行うための最良のツールやライブラリは何ですか?私はLinuxやMacのコンピュータで自由に利用できるものを使用して幸せです。
実際のアルゴリズムは、(あなたが本当に興味があればthis paperを参照)、ここで有用な例を作るにはあまりにも長いですが、ここでは8×8ボード上の(退屈)王のツアーのための擬似コードです:
movie = new Movie()
frame = new Frame()
frame.fillRectangle((1,1), 8, 8, BLUE)
for row in [1..8] {
if (row.isOdd()) { colrange = [1..8] } else { colrange = [8..1] }
for col in colrange {
frame.colourPixel(row, col, RED)
movie.addFrame(frame)
}
}
movie.saveAsGIF("tour.gif")
余分な信用の質問:私たちはこの映画の特別な機能を利用してファイルサイズを減らすことができますか? Wikipedia articleは、ピクセルの一部だけを変更している場合には、これを行うことができる可能性があることを示唆しています。実際、フレームごとに1つずつ変更しています。
アニメーションGIFは使用しないでください。代わりにムービー形式に変換すると、圧縮率ははるかに高くなります –
どのような形式をお勧めしますか、それを作成するツールは何ですか? –
圧縮レベルは多くのことに依存します。単純な画像の場合、gifはうまくいくでしょう。また、サイズはシンプルさほど問題ではないかもしれません。アニメーションGIFは素晴らしい技術ではありませんが、うまくサポートされています。 – Naaff