Агрегиране с ограничена дифузия. Симулация в C++ ImGui

Дифузионно-ограничената агрегация (DLA) може да се обясни като процес на произволно ходене (частици поради произволно движение се разхождат от мястото, където са започнали) поради Брауновото движение (вижте също един от моите предишни статии). Поведението на произволното движение влияе върху това, че частицата може да бъде групирана в клъстери, които често имитират фракталите или тревата. В природата има няколко примера за създаване на впечатляващи произволни форми. Моля, посетете тук, за да се вдъхновите повече от този феномен.

Следната статия ви дава интуиция за приложеното движение. Математическата основа ще намерите лесно под връзките, към които се позовавам.

Има няколко подхода за създаване на резултати и процесът на произволно ходене е дълбоко включен в растежа на геометрията. Компютърните симулации дават отлична възможност за улавяне и изследване на поведението на частиците. Можем да наблюдаваме радиалното движение от една точка (в тази статия симулацията се извършва в обратна посока) навън до създаването на права линия.

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

Въведението в C++ ImGui и информация как да компилирате и създавате програми ще намерите в една от моите предишни статии.

Изходният код ще намерите в моя GitHub.

Механизъм на агрегиране с ограничена дифузия

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

По-долу описах как протича симулацията на практика. Както можете да видите, ние сме в състояние да пресъздадем формите на поведението на частиците, представени в тази статия.

Ако сте по-търпеливи и нанесете повече и по-малки частици, можете да очаквате да получите следните резултати.

Благодаря ви, че прочетохте.