Генерируйте изображения, в которых цвет каждого пикселя выражается функцией от координат X и Y.
Координаты изменяются от (0, 0) в левом верхнем углу до (799, 599) в нижнем правом. При необходимости вы можете нормализовать их и привести к нужному виду (например, "X = (X / WIDTH) * 2 - 1" приведёт координату X из диапазона [0..800) к [-1..1), аналогично можно преобразовать Y).
Цвета задаются в системе RGB и имеют значения [0..255]. Вы должны определить три константы <R>, <G> и <B>. Используется синтаксис языка JavaScript, поэтому достпны циклы, условия, создание новых переменных и т.д. Помните, что регистр важен (переменная "X" определена по умолчанию, а "x" — нет). Введённый код будет выполняться для каждого пикселя изображения (будут меняться координаты X и Y). Посмотрите примеры кода, чтобы разобраться. Вам недоступны никакие глобальные объекты, кроме перечисленных ниже переменных и констант.
- X — горизонтальная координата, диапазон [0, 799]
- Y — вертикальная координата, диапазон [0, 599]
- WIDTH — константа, соответствующая ширине изображения, равна 800
- HEIGHT — константа, соответствующая высоте изображения, равна 600
- INDEX — индекс пикселя, изменяется по горизонтали слева направо и по вертикали сверху вниз. Равен 0 для точки (0, 0) и 479999 для точки (799, 599)
- PI — константа, число Пи
- E — константа, число E (основание натурального логарифма)
Вам также доступны следующие функции:
- Операторы +, -, *, /, %, ^ — эквивалентны стандартным операторам JavaScript
- sqrt(x) — квадратный корень от x
- pow(x, y) — x в степени y
- sin(x), cos(x), tan(x) — тригонометрические функции, принимают радианы
- asin(x), acos(x), atan(x) — обратные тригонометрические функции, возвращают радианы
- log(x), log2(n), log10(x) — логарифмы x по основаниям E, 2 и 10 соответственно
- abs(x) — модуль числа x
- floor(x) — округление x вниз
- ceil(x) — округление x вверх
- round(x) — округление x по правилам математического округления
- trunc(x) — целая часть x (округление в сторону нуля)
- isPrime(x) — возвращает 1, если x — простое число, иначе 0.
- remap(x, a0, a1, b0, b1) — преобразует число x из диапазона [a0..a1] в диапазон [b0..b1]. Например, remap(sin(x), -1, 1, 0, 1) приводит синус к диапазону 0..1 вместо -1..1.
Советы
- Используйте (x % 1), чтобы получить дробную часть числа x
- Осознайте полезность функции remap
- Проще всего вычислять значения в диапазонах [-1..1] или [0...1] и приводить к [0..255] в последнюю очередь. Так работают все примеры
- Пишите автору предложения новых фич, иначе вас заберёт Попобава