Questa sfida riguarda lo spostamento graduale delle tonalità in un'immagine per creare belle immagini come questa:
( originale )
Sfida
Scrivi un programma o una funzione che accetta due numeri interi non negativi e un'immagine in qualsiasi formato di file immagine comune di tua scelta (puoi prendere un percorso per l'immagine o i dati dell'immagine grezza).
Chiameremo il primo numero intero i cicli e il secondo numero intero il offset .
Definiremo anche il passaggio in virgola mobile come cicli 360 volte divisi per l'area dell'immagine, oppure step = 360 * cycles / (image width * image height)
.
Per ogni pixel P nell'immagine, spostando una riga alla volta, da sinistra a destra, dall'alto verso il basso (ovvero nell'ordine di lettura se i pixel fossero lettere), procedi come segue:
Aumenta la tonalità di P di offset gradi (passando da 360 a 0 se necessario).
Quindi aumentare l' offset per passo .
Salva, visualizza o visualizza in modo grezzo l'immagine risultante in qualsiasi formato di file immagine comune.
Questa procedura aumenta in modo incrementale la tonalità di tutti i pixel dell'immagine, facendo cicli a ciclo completo attorno all'arcobaleno di tonalità , iniziando a compensare inizialmente la tonalità per offset .
Quando i cicli sono 1 e l' offset è 0, come nell'immagine Notte stellata sopra, le righe superiore e inferiore di pixel non hanno praticamente alcun cambiamento di tonalità ma tra un ciclo a colori e l'altro.
Dettagli
I cicli possono essere qualsiasi numero intero non negativo ma si può presumere che l' offset sia compreso tra 0 e 359 inclusi.
Quando i cicli sono 0, ogni pixel dell'immagine avrà la sua tonalità spostata di esattamente l' offset poiché anche il passaggio deve essere 0. (In questo caso se offset è 0, l'immagine non cambia affatto.)
È possibile supporre che cicli e offset siano immessi come float se lo si desidera (ovvero
1.0
anziché1
). (Mi rendo conto che non devono essere affatto numeri interi, rende la sfida più semplice.)"Tonalità" si riferisce alla versione dello spazio colore RGB, comune nei modelli di colore HSL / HSV .
Esempi
Originale:
Cicli = 1, offset = 0:
Cicli = 1, offset = 180:
Originale:
Cicli = 2, offset = 60:
Originale:
(Grazie ArtOfCode .)
Cicli = 1, offset = 120:
Originale:
(Grazie Doorknob .)
Cicli = 1, offset = 0:
Cicli = 4, offset = 0:
Cicli = 200, offset = 0:
Cicli = 30000, offset = 0:
(Queste immagini potrebbero non essere perfette per i pixel a causa della compressione di imgur.)
punteggio
Vince il codice più breve in byte. Tiebreaker è la risposta più votata.
Le risposte che pubblicano le loro immagini di prova dall'aspetto accattivante otterranno da me più punti brownie.