Ich habe einen Algorithmus für Ritters Touren auf Schachbrettern verschiedener Größen (große Größen, wie 100x100) und ich möchte das Ergebnis animieren. Jedes Mal, wenn sich der Springer zu einem neuen Quadrat bewegt, ändert ein entsprechendes Pixel in der (quadratischen) Leinwand die Farben, bis schließlich die gesamte Leinwand eingefärbt ist. Die resultierenden Filme können auf einer Webseite über den Algorithmus betrachtet werden.Was ist der beste Weg, um ein animiertes GIF mit einem Algorithmus zu erstellen?
Animierte GIFs scheinen die beste Methode zu sein, wenn ich eine breite Browserunterstützung möchte (obwohl andere Vorschläge willkommen sind). Was ist das beste Werkzeug oder die beste Bibliothek? Ich bin froh, alles verwenden zu können, was auf einem Linux- oder Mac-Computer frei verfügbar ist.
Der eigentliche Algorithmus ist zu lang, um hier ein nützliches Beispiel zu machen (siehe this paper wenn Sie wirklich neugierig sind), aber hier ist Pseudo-Code für einen (langweilig) Tour des Königs auf einem 8x8-Brett:
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")
Extra-Kredit-Frage: können wir die speziellen Funktionen dieses Films nutzen, um die Dateigröße zu reduzieren? Die Wikipedia article schlägt vor, dass wir das vielleicht können, wenn wir nur einige der Pixel ändern - tatsächlich ändern wir nur eine pro Bild!
Verwenden Sie keine animierten Gifs. Konvertieren Sie es stattdessen in ein Filmformat, die Komprimierung wird viel höher –
Welches Format schlagen Sie vor, und welches Werkzeug, um es zu schaffen? –
Komprimierungsstufen hängen von vielen Dingen ab. Für einfache Bilder werden GIFs gut funktionieren. Außerdem ist die Größe vielleicht nicht so wichtig wie die Einfachheit. Animierte Gifs sind keine wundervolle Technologie, aber sie werden gut unterstützt. – Naaff