Подумал, что сделать такой рисунок достаточно просто — надо рисовать концентрические окружности разного радиуса, но каждую точку каждой окружности сдвигать на какое-то небольшое расстояние в зависимости от радиуса, угла и времени.
Самое сложное — сделать ровный стык на конце окружности. Ведь если двигать точки с помощью нойза, то нойз от нуля и 360 градусов — совершенно разные значения. А если взять синус или другую тригонометрическую функцию, то значения будут изменяться слишком плавно и предсказуемо, и не получится такого красивого ассиметричного разброса точек, как на футляре.
В итоге нужно было написать что-то вроде нойза, но периодического. Я придумал создать функцию, которая является суммой синусов с разными смещениями по фазе и разным коэффициентом при аргументе.
То есть:
mySin(x) = sin(x + d1) + sin(2x + d2) + sin(3x + d3) + ...Где d1, d2, ..., dN — случайные смещения по фазе (от 0 до 2π), они генерируются один раз в начале работы программы. Эта функция всё ещё периодическая с периодом 2π, но при этом ведёт себя достаточно непредсказуемо.
Наверное, за меня такое уже сто раз придумали, и это что-то типа ряда Фурье или чего-то там ещё, не знаю, я окончил 11 классов, не бейте. В любом случае получилось красиво, попробуйте.