Линии тока показывают, куда течёт жидкость, силовые линии — куда тянет поле. Так рисуют ветер на картах погоды и поле магнита, которое выкладывают железные опилки. В генеративном искусстве из этого вырос целый жанр: сотни плавных линий идут бок о бок, не пересекаясь и не слипаясь в пучки, — идеальная работа для перьевого плоттера.
Как это устроено
Нужны поле и способ разложить по нему линии. Поле «вихревой шум» берёт гладкий шум ψ(x, y) и поворачивает его градиент на 90°. У такого поля нулевая дивергенция: нет ни источников, ни стоков, «жидкость» не сжимается и не расширяется, а линии тока совпадают с изолиниями ψ — поток обходит холмы шума по горизонталям, как на топографической карте. В поле «шум направлений» значение шума прямо задаёт угол стрелки, и линии могут сходиться. Поле «водовороты» — это точечные вихри, «диполи» — пары зарядов разного знака, чьи силовые линии похожи на поле маленьких магнитов.
Раскладывает линии алгоритм Жобара и Лефера. Первая линия растёт из случайной точки в обе стороны, шаг за шагом по полю, методом средней точки. Вдоль готовой линии на расстоянии d_sep («Расстояние между линиями») с обеих сторон ставятся затравки для новых. Растущая линия обрывается, как только подойдёт к любой другой ближе, чем d_test («Сближение», доля d_sep).
Немного истории
Бруно Жобар и Вильфрид Лефер опубликовали алгоритм в 1997 году для научной визуализации: случайно брошенные линии сбиваются в пучки, оставляют пустоты и врут о потоке. Вихревой шум придумали Роберт Бридсон и его коллеги в 2007 году для дыма и пыли в кино: он дёшев и похож на настоящую несжимаемую жидкость. Шум здесь периодический — psrdnoise Стефана Густавсона и Иэна Макьюэна, — поэтому в режиме тайла линии проходят сквозь края без шва. В анимации поле не сдвигается: градиенты шума поворачиваются на месте, и вихри клубятся, не уплывая, — этот приём Кен Перлин и Фабрис Нейре в 2001 году назвали flow noise.
Что покрутить
- «Заострение» 0 даёт ровные линии одной толщины — экспортируйте SVG и отдайте плоттеру.
- Уменьшите «Сближение» до 0,2 — линии подойдут почти вплотную и вырастут длинными; ближе к 1 они обрываются раньше, и узор становится штриховым.
- «Поле» «диполи» и «Масштаб» около 1 — картинка из учебника физики; «водовороты» дают замкнутые кольца вокруг центров вихрей.
- «Октавы» 3–4 добавляют мелкие завихрения поверх крупных, и поток становится похож на мраморную бумагу.
- Поставьте сверху эффект «Симметрия обоев» — поток свернётся в повторяющийся орнамент, как на набивной ткани.