|Project Name||Stars||Downloads||Repos Using This||Packages Using This||Most Recent Commit||Total Releases||Latest Release||Open Issues||License||Language|
|Particlesdrawable||457||5||5 months ago||11||December 05, 2018||1||apache-2.0||Java|
|Draws random flying particles in space forming constellations.|
|Turn any image into delightful splash of colors and order|
|Cocoparticle||34||12 years ago||Objective-C|
|a particle creator app for iPad|
|Pcgsharp||24||5 years ago||2||mit||C#|
|Permuted Congruential Generator (PCG) for C#|
|Particlefire||17||7 years ago||gpl-3.0||C++|
|A screensaver with a mesmerizing display of dynamically generated particle effects|
|A physics playground|
|Mcsd||9||2 years ago||gpl-2.0||MATLAB|
|MATLAB/Octave tool for Monte-Carlo simulations of diffusion in biological tissues|
|Swf||8||3 years ago||1||TeX|
|180725_two_waves||7||4 years ago||mit|
This is an optimized version of Michael Fogleman's dlaf project that I used in glChAoS.P / wglChAoS.P for large-scale DLA3D growth.
Video Real-time rendering (80 FPS) of 6M points/particles: https://youtu.be/_R7akPh64XU
All the changes has been made in glChAoS.P / wglChAoS.P, but I thought I'd make them available here, in a separate repository, for simplicity.
Modelwith possibilty to use single or double precison floating points.
The Michael Fogleman's original option (such as boost library, or std::mt19937 random generator) are anyway aviables via internal
Performance and differences calculating 1M points
Tests were performed on: Intel I5 6500 - 3.2 GHz - single thread - DDR4 2666MHz - source code compiled with gcc 8.3.1 on Linux Fedora29.
NONE: all files are already included in the project/repository
nanoflann.h-> header-only library for KD-Trees of datasets point clouds: nanoflann
fastPRNG.h-> fast PRNG (Pseudo-Random Number Generator) based xoshiro / xoroshiro (Blackman/Vigna), xorshift and other Marsaglia algorithms.: fastPRNG
If you want use Boost library, like the original project, it's not included in the repository, but can be downloaded from https://www.boost.org/ It's not necessary to build the library, only headers files is enough. (about 160MB)
This program produces only a simple text output, for both for 2D and 3D, always in the form:
0,-1,0,0,0 1,0,-0.191125,-0.446429,0.87417 2,1,0.697415,-0.821024,1.13908 3,0,-0.464858,0.327307,-0.822665 4,2,1.63213,-0.595306,0.86457 5,1,-1.06683,-0.335015,1.34398 6,5,-1.88992,-0.368307,1.91091 7,6,-2.20384,0.449373,2.39347 ...
Where the columns are: point_id, parent_id, x, y, z (for 2D z is always 0)
You can redirect the output in a file with command:
./dlaf > output.csv
If you instead want to export a DLA3D object in PLY file format (ascii/binary), please use glChAoS.P / wglChAoS.P; you can also import a PLY object, where to grow the DLA:
|glChAoS.P - Thomas Attractor||glChAoS.P - DLA on Thomas Attractor|
Watch DLA3D over Thomas Attractor Video
Just clone it form github or download the archive and decompress it in a folder whatever and use
make from it.
Obviously need to install the GCC C/C++ v.6 or higher (or clang v.6 or higher) compilers and associated tools (such as make), or other C++14 compiler.
To install gcc C/C++ in Linux:
sudo apt install build-essential
sudo dnf install make gcc-c++
dlaf folder there is a very simple
cmake file from wich you can build also a project solution for Microsoft Visual Studio.
Description form Michael Fogleman's page:
The code implements a standard diffusion-limited aggregation algorithm. But there are several parameters and code hooks that let you tweak its behavior.
The following parameters can be set on a
||Defines how close together particles must be in order to join together.|
||Defines the distance between particles when they become joined together.|
||Defines the minimum distance that a particle will move in an iteration during its random walk.|
||Defines how many join attempts must occur before a particle will allow another particle to join to it.|
||Defines the probability that a particle will allow another particle to join to it.|
The following hooks allow you to define the algorithm behavior in small, well-defined functions.
||Returns a starting position for a new particle to begin its random walk.|
||Returns true if the particle has gone too far away and should be reset to a new random starting position.|
||Returns true if the point should attach to the specified parent particle. This is only called when the point is already within the required attraction distance. If false is returned, the particle will continue its random walk instead of joining to the other particle.|
||Returns the final placement position of the particle.|
||Returns a vector specifying the direction that the particle should move for one iteration. The distance that it will move is determined by the algorithm.|