Ho un algoritmo per i tour dei cavalieri su scacchiere di varie dimensioni (grandi dimensioni, come 100x100) e mi piacerebbe animare il risultato. Ogni volta che il cavaliere si sposta in un nuovo quadrato, un pixel corrispondente nella tela (quadrata) cambierà i colori, fino a quando tutta la tela sarà colorata. I filmati risultanti saranno disponibili per la visualizzazione su una pagina Web relativa all'algoritmo.Qual è il modo migliore per creare una GIF animata utilizzando un algoritmo?
Le GIF animate sembrano il metodo migliore se desidero un ampio supporto per il browser (sebbene altri suggerimenti siano benvenuti). Qual è il miglior strumento o libreria con cui fare questo? Sono felice di usare tutto ciò che è liberamente disponibile su un computer Linux o Mac.
L'algoritmo attuale è troppo lungo per fare un esempio utile qui (vedi this paper se siete veramente curiosi) ma ecco pseudocodice per giro un (noioso) del re su una scheda 8x8:
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")
Domanda extra credito: possiamo usufruire delle funzionalità speciali di questo film per ridurre le dimensioni del file? Il Wikipedia article suggerisce che potremmo essere in grado di farlo, se cambiamo solo alcuni dei pixel - in effetti ne cambiamo solo uno per fotogramma!
Non utilizzare gif animate. Converti invece in un formato film, la compressione sarà molto più alta –
Che formato suggerisci e con quale strumento creo? –
I livelli di compressione dipendono da molte cose. Per le immagini semplici le gif andranno bene. Inoltre, la dimensione potrebbe non essere tanto preoccupante quanto la semplicità. Le gif animate non sono una tecnologia meravigliosa, ma sono ben supportate. – Naaff