Ця задача полягає в тому, щоб поступово зміщувати відтінки в зображенні, щоб зробити такі гарні зображення:
( оригінал )
Виклик
Напишіть програму чи функцію, яка містить два невід’ємні цілі числа та зображення у будь-якому загальному обраному вами форматі файлів зображень (ви можете пройти шлях до зображення чи неочищених даних зображення).
Ми будемо називати перше ціле число циклами, а друге ціле число - зміщенням .
Ми також визначимо крок з плаваючою комою у 360 разів циклів, розділених на площу зображення, абоstep = 360 * cycles / (image width * image height)
.
Для кожного пікселя P на зображенні, переміщуючи по одному рядку, вліво-вправо, вгору-вниз (тобто в порядку читання, якщо пікселі були літерами), виконайте наступне:
Збільшення колірного тону від Р по офсетним градусам (цикл навколо від 360 до 0 , якщо це необхідно).
Потім збільшуйте зміщення за кроком .
Збережіть, відображте або виведіть вихідне зображення в будь-якому загальному форматі файлу зображень.
Ця процедура поступово збільшує відтінок усіх пікселів на зображенні, роблячи цикли повних циклів навколо веселки відтінку , починаючи з початкового компенсації відтінку за допомогою зсуву .
Якщо цикл дорівнює 1, а зміщення дорівнює 0, як на зображенні Зоряної ночі вгорі, верхній і нижній рядки пікселів практично не змінюють відтінку, але між ними є повний кольоровий цикл.
Деталі
Цикли можуть бути будь-якими цілими негативними числами, але можна припустити, що зміщення становить від 0 до 359 включно.
Якщо циклів дорівнює 0, кожен піксель зображення буде зміщений на точно зміщений, оскільки крок також повинен бути 0. (У цьому випадку, якщо зміщення дорівнює 0, зображення взагалі не змінюється.)
Ви можете припустити, що цикли та зміщення при бажанні вводяться як поплавці (тобто
1.0
замість1
). (Я розумію, що вони взагалі не повинні бути цілими числами, це просто робить виклик більш простим.)"Відтінок" означає версію кольорового простору RGB, поширену в кольорових моделях HSL / HSV .
Приклади
Оригінал:
Цикли = 1, зміщення = 0:
Цикли = 1, зміщення = 180:
Оригінал:
Цикли = 2, зміщення = 60:
Оригінал:
(Спасибі ArtOfCode .)
Цикли = 1, зміщення = 120:
Оригінал:
(Дякую Дорнобі .)
Цикли = 1, зміщення = 0:
Цикли = 4, зміщення = 0:
Цикли = 200, зміщення = 0:
Цикли = 30000, зміщення = 0:
(Ці зображення можуть не бути ідеальними для пікселів через їх стиснення.)
Оцінка балів
Виграє найкоротший код у байтах. Tiereaker є вищою відповіді.
Відповіді, які розміщують свої власні цікаві тестові зображення, отримають від мене більше очок брауні.