Я пытаюсь превратить точные фигуры в серию рассеянных точек, которые имеют более высокую плотность в середине исходного изображения.
Пример: белый круг на черном фоне → Мессье 92 (извините, у меня недостаточно репутации для встраивания изображения)
Следовательно, форма, отличная от круга, все еще должна быть узнаваемой. Вот лучшее, что я смог сделать:
Я бы назвал такой эффект фильтром scatter . Пожалуйста, скажите мне, если у вас есть лучшее имя.
<svg height='100' width='100'>
<filter id="cluster" filterUnits="userSpaceOnUse">
<feGaussianBlur in="SourceGraphic" result='blurred' stdDeviation="10" />
<feTurbulence type="turbulence" baseFrequency="9" numOctaves="4" result="turbulence" />
<feDisplacementMap in2="turbulence" in="blurred" scale="10" xChannelSelector="R" yChannelSelector="G" />
</filter>
<rect x='0' y='0' height='100' width='100' fill='black' />
<circle cx='50' cy='50' fill='white' r='30' filter='url(#cluster)' />
</svg>
Это в основном причудливое размытие. Результаты выглядят лучше с увеличением scale
в feDisplacementMap
.
<svg height='100' width='100'>
<filter id="cluster" filterUnits="userSpaceOnUse">
<feGaussianBlur in="SourceGraphic" result='blurred' stdDeviation="10" />
<feTurbulence type="turbulence" baseFrequency="9" numOctaves="4" result="turbulence" />
<feDisplacementMap in2="turbulence" in="blurred" scale="50" xChannelSelector="R" yChannelSelector="G" />
</filter>
<rect x='0' y='0' height='100' width='100' fill='black' />
<circle cx='50' cy='50' fill='white' r='30' filter='url(#cluster)' />
</svg>
Но это также смещает изображение. Могу ли я отменить это? Или не делать это в первую очередь? Может быть, используя что-то, кроме feDisplacementMap
?