🎭 Пуантилізм та стипплінг
Зважений Вороний стипплінг через алгоритм Ллойда. Точки самоорганізовуються в пуантилізм за функцією щільності. Шаблони: Хвилі, Спіраль, Мандельброт, Зірки.
Про цю симуляцію
Ця симуляція перетворює обрану функцію щільності на пуантилістичне мистецтво за допомогою зваженого Вороного стипплінгу. Сотні точок спершу розкидані методом відбраковувального семплювання, а потім багаторазово релаксуються: на кожній ітерації кожна точка зсувається до зваженого щільністю центроїда своєї комірки Вороного. Це алгоритм Ллойда — та сама ітерація, що лежить в основі кластеризації k-середніх. За багато кроків точки рівномірно розподіляються у світлих ділянках і скупчуються в темних, відтворюючи тон лише за рахунок відстані й розміру окремих точок.
🔬 Що показано
Полотно обчислює поле щільності на сітці 80×60. Кожна комірка сітки належить найближчій точці (розбиття Вороного), і кожна точка рухається на 60% шляху до зваженого середнього своєї комірки, зі згладжуванням, щоб уникнути коливань. Прогін вважається збіжним, коли найбільше квадратне зміщення падає нижче 0,5 пікселя. Радіус точки масштабується обернено до локальної щільності, тож розріджені ділянки отримують менше, але більших точок.
🎮 Як користуватись
Оберіть Шаблон (Хвилі, Спіраль, Мандельброт або Зірки), щоб змінити поле щільності, і Стиль (Моно, Сепія або Колір) для палітри. Повзунок Точки задає їх кількість від 100 до 900, а Розмір точки масштабує радіус від 0,5× до 2,5×. Скидання пересіює точки, Пауза/Продовжити зупиняє цикл, а Крок просуває одну ітерацію релаксації.
💡 Чи знали ви?
Зважений Вороний стипплінг представив Адріан Секорд у 2002 році як спосіб автоматично відтворювати рукописне гравірування та штрихування пером. Та сама центроїдна теселяція Вороного лежить в основі блакитно-шумового семплювання, що використовується в рендерингу, і навіть у розташуванні колбочок сітківки ока.
Часті питання
Що таке зважений Вороний стипплінг?
Це техніка, що передає тон і форму лише положенням і розміром маленьких точок, без суцільного затінення. Функція щільності визначає, скільки точок належить кожній ділянці, і точки розташовуються так, що темні ділянки щільно заповнені, а світлі залишаються розрідженими, наслідуючи традиційну техніку стипплінгу та пуантилізму.
Як насправді працює релаксація?
Кожна ітерація розбиває полотно так, що кожен зразок сітки належить найближчій точці, утворюючи комірки Вороного. Потім симуляція обчислює зважений щільністю центроїд кожної комірки і зсуває її точку на 60% шляху до цього центроїда. Повторення цього і є алгоритмом Ллойда, який спрямовує точки до рівномірного, чутливого до щільності розташування.
Що змінюють кнопки Шаблону?
Вони змінюють функцію щільності, що керує точками. Хвилі використовують інтерферуючі синусоїдні поля, Спіраль застосовує обертове плече з радіальним спадом, Мандельброт відображає кожну точку на комплексну площину й затінює за часом втечі, а Зірки підсумовують гаусові плями навколо дванадцяти заданих центрів скупчень. Кожен дає окремий розподіл світла й тіні.
Чи є результат математично точним?
Так, у межах своєї моделі. Розташування точок є справжньою центроїдною теселяцією Вороного, отриманою ітерацією Ллойда, тим самим методом, що використовується в науковому стипплінгу й блакитно-шумовому семплюванні. Заради швидкості симуляція семплює щільність на сітці 80×60 і використовує просторове хешування для пошуку найближчого сусіда, тож вона наближає справжні неперервні області Вороного, а не обчислює точні межі комірок.
Чому точки зрештою перестають рухатись?
Алгоритм Ллойда збігається: коли точки осідають біля центроїдів своїх комірок, комірки стабілізуються, і подальші зміщення зменшуються. Коли найбільше квадратне зміщення за ітерацію падає нижче 0,5 пікселя, симуляція позначає прогін як збіжний і зупиняє релаксацію, залишаючи стабільний візерунок стипплінгу, доки ви не скинете або не зміните налаштування.