Диффузионно-ограниченная агрегация. Моделирование в C++ ImGui

Ограниченная диффузией агрегация (DLA) может быть объяснена как процесс случайного блуждания (частицы из-за беспорядочного движения уходят от того места, где они стартовали) из-за броуновского движения (см. также одну из моих предыдущих работ). статьи»). Поведение случайного движения влияет на то, что частица может быть сгруппирована в кластеры, которые часто имитируют фракталы или пряди. В природе есть несколько примеров создания впечатляющих случайных форм. Пожалуйста, посетите здесь, чтобы больше вдохновиться этим явлением.

Следующая статья дает вам интуитивное представление о применяемом движении. Математический фон вы легко найдете по ссылкам, на которые я ссылаюсь.

Существует несколько подходов к получению результатов, и процесс случайного блуждания глубоко вовлечен в рост геометрии. Компьютерное моделирование дает прекрасную возможность фиксировать и изучать поведение частиц. Мы можем наблюдать радиальное движение от одной точки (в этой статье моделирование выполняется в противоположном направлении) наружу до создания прямой линии.

В следующей статье я опишу механизм создания, который формирует и запускает симуляцию, которую я сделал на C++ с визуализацией в ImGui.

Знакомство с C++ ImGui и информацию о компиляции и сборке программ вы найдете в одной из моих предыдущих статей.

Исходный код вы найдете на моем GitHub.

Диффузионно-ограниченный механизм агрегации

Для определенного измерения 2D-пространства (здесь, например, холст размером 500 x 500 пикселей) мы случайным образом генерируем на холсте количество частиц, которые движутся случайным образом. Частица начинает двигаться от краев, а следующий шаг частицы по осям X и Y является случайным (я применил движок Mersenne Twister).
Количество частиц в моделировании постоянно. Моделирование начинается с начальных условий, где первая частица (неподвижная) находится в центре пространства моделирования. Во время симуляции частица движется и может быть сгруппирована (связана с неподвижной группой частиц из предыдущей метки времени симуляции). Связь возникает, когда расстояние от определенной частицы до одной из частиц кластера меньше, чем удвоенный радиус размера частицы. При столкновении частица отталкивается от кластера. Как мы можем предположить, количество проверок на столкновение увеличивается, поскольку во время моделирования кластеризуется больше частиц. Расстояние до центра влияет на цвет застрявшей частицы.

Ниже я изобразил, как симуляция работает на практике. Как видите, мы можем воссоздать формы поведения частиц, представленные в этой статье.

Если вы проявите больше терпения и нанесете больше и меньшие частицы, то можете рассчитывать на получение следующих результатов.

Спасибо за чтение.