Ce défi consiste à changer progressivement les teintes d'une image pour créer de jolies images comme celle-ci:
( original )
Défi
Écrivez un programme ou une fonction qui accepte deux nombres entiers non négatifs et une image dans n'importe quel format de fichier d'image courant de votre choix (vous pouvez prendre un chemin vers l'image ou les données d'image brutes).
Nous appellerons le premier entier les cycles et le deuxième entier le décalage .
Nous allons également définir à virgule flottante étape comme 360 fois les cycles divisé par la zone de l'image, ou step = 360 * cycles / (image width * image height)
.
Pour chaque pixel P de l'image, en déplaçant une ligne à la fois, de gauche à droite, de haut en bas (c'est-à-dire dans l'ordre de lecture si les pixels étaient des lettres), procédez comme suit:
Augmentez la teinte de P par degrés de décalage (boucle de 360 à 0 si nécessaire).
Augmentez ensuite le décalage par étape .
Enregistrez, affichez ou affichez en brut l'image résultante dans n'importe quel format de fichier d'image courant.
Cette procédure augmente progressivement la teinte de tous les pixels de l'image, faisant des cycles de boucles complètes autour de l' arc -en- ciel de teinte , en commençant par compenser initialement la teinte par décalage .
Lorsque les cycles est 1 et le décalage est 0, comme dans l'image de la nuit étoilée ci-dessus, les rangées de pixels supérieure et inférieure n'ont pratiquement pas de décalage de teinte, mais entre les deux, il y a un cycle de couleur complet.
Détails
Les cycles peuvent être n'importe quel entier non négatif, mais vous pouvez supposer que le décalage est compris entre 0 et 359 inclus.
Lorsque cycles est 0, chaque pixel de l'image aura sa teinte décalée par exactement décalage depuis étape doit être 0 aussi. (Dans ce cas, si le décalage est égal à 0, l'image ne change pas du tout.)
Vous pouvez supposer que les cycles et le décalage sont saisis sous forme de flottants si vous le souhaitez (c'est-
1.0
à- dire au lieu de1
). (Je me rends compte qu'ils ne doivent pas du tout être des entiers, cela rend le défi plus simple.)"Teinte" fait référence à la version de l'espace colorimétrique RVB, courante dans les modèles de couleurs HSL / HSV .
Exemples
Original:
Cycles = 1, décalage = 0:
Cycles = 1, décalage = 180:
Original:
Cycles = 2, décalage = 60:
Original:
(Merci ArtOfCode .)
Cycles = 1, décalage = 120:
Original:
(Merci Poignée de porte .)
Cycles = 1, décalage = 0:
Cycles = 4, décalage = 0:
Cycles = 200, décalage = 0:
Cycles = 30000, décalage = 0:
(Ces images peuvent ne pas être parfaites en pixels en raison de l'imgur de les compresser.)
Notation
Le code le plus court en octets gagne. Tiebreaker est la réponse la plus votée.
Les réponses qui affichent leurs propres images de test au look cool recevront plus de points brownie de ma part.