Core 1.0
EdenGrowth2 Class Reference

Off-lattice Eden growth. More...

#include <eden.h>

Inheritance diagram for EdenGrowth2:
ParticleSet2 EdenAnisotropicGrowth2

Public Member Functions

 EdenGrowth2 (const double &)
 Create an Eden growth structure.
 
 EdenGrowth2 (const Vector2 &, const double &)
 Create an Eden growth structure.
 
 EdenGrowth2 (const QVector< Vector2 > &, const double &)
 Create an Eden growth structure.
 
 EdenGrowth2 (const ParticleSet2 &)
 Create an Eden growth structure.
 
 ~EdenGrowth2 ()
 Empty.
 
virtual void Step ()
 Add a new particle to the cluster.
 
virtual void Step (int)
 Perform several growth steps.
 
void AddCell (const Vector &)
 Add a new particle to the cluster.
 
Box2 GetBox () const
 Compute the bounding box of the cluster.
 
QVector< int > GetIndices () const
 Return the indices.
 
QVector< int > Strahler () const
 Compute the Strahler numbers of the particles of the cluster.
 
QVector< int > Topology () const
 Compute the topology of the tree.
 
QVector< int > Seeds () const
 Return the indexes of the seeds that for the connex parts of the clusters.
 
void Multi (int)
 Shrink the radius of the particles, inserting necessary particles in between previously connected particles.
 
Polygon2 Contour () const
 Compute the polygonal contour of the cluster.
 
void Draw (QGraphicsScene &) const
 Draw the cluster.
 
void DrawSimple (QGraphicsScene &, const double &=0.025) const
 Draw the cluster.
 
void DrawStrahler (QGraphicsScene &) const
 Draw the cluster using s Strahler-based coloring.
 
- Public Member Functions inherited from ParticleSet2
 ParticleSet2 ()
 Empty constructor.
 
 ParticleSet2 (const double &)
 Create an empty set of particles.
 
 ParticleSet2 (const Vector2 &, const double &)
 Create a set of particles.
 
 ParticleSet2 (const QVector< Vector2 > &, const double &)
 Create a set of particles.
 
int Size () const
 Return the number of particles.
 
Circle2 At (int) const
 Get the k-th particle.
 
double Radius () const
 Return the radius of the particles.
 
QVector< Vector2GetCenters () const
 Return the centers of the particles.
 
Circle2 GetCircle () const
 Computes the bounding circle of the centers of the particles.
 
Box2 GetBox () const
 Computes the bounding box of the centers of the particles.
 
void Append (const Vector2 &)
 Add a new particle to the set.
 
bool Intersect (const Circle2 &) const
 Check the intersection between the cluster and a circle.
 
bool Intersect (const Box2 &) const
 Check the intersection between the cluster and a box.
 
void Draw (QGraphicsScene &, const QPen &=QPen(QColor(150, 150, 200), 0.025), const QBrush &=QBrush(QColor(200, 200, 250))) const
 Draw the set of particles.
 

Protected Member Functions

virtual int GrowthSites (const Vector2 &, Vector2 *) const
 Find candidate growth directions from a particle.
 

Protected Attributes

Circle2 circle
 Bounding circle of the domain.
 
QVector< int > v
 Tree structure topology, i.e., index of the ancestor particle during growth.
 
QVector< int > s
 Set of indexes referencing boundary cells.
 
- Protected Attributes inherited from ParticleSet2
QVector< Vector2points
 Set of particles.
 
double r = 0.0
 Radius of particles.
 

Static Protected Attributes

static Random random
 Random number generator.
 
static RandomFast fastrandom
 Fast random number generator.
 
static constexpr int N = 37
 Generate N evenly distributed cells around a given cell, angle 2π/N.
 

Detailed Description

Off-lattice Eden growth.

Constructor & Destructor Documentation

◆ EdenGrowth2() [1/4]

EdenGrowth2::EdenGrowth2 ( const double & r)
explicit

Create an Eden growth structure.

Set initial circle as empty, and list of particles as empty.

Parameters
rRadius of particles.

◆ EdenGrowth2() [2/4]

EdenGrowth2::EdenGrowth2 ( const Vector2 & c,
const double & r )
explicit

Create an Eden growth structure.

Parameters
cInitial particle position.
rRadius of particles.

◆ EdenGrowth2() [3/4]

EdenGrowth2::EdenGrowth2 ( const QVector< Vector2 > & p,
const double & r )
explicit

Create an Eden growth structure.

Parameters
pSet of seed points.
rRadius of particles.

◆ EdenGrowth2() [4/4]

EdenGrowth2::EdenGrowth2 ( const ParticleSet2 & particles)
explicit

Create an Eden growth structure.

Parameters
particlesSet of particles.

Member Function Documentation

◆ AddCell()

void EdenGrowth2::AddCell ( const Vector & c)

Add a new particle to the cluster.

If the particle intersects the cluster, it automatically dies and is not added to the cluster.

Otherwise, it is added as a living particle.

◆ Contour()

Polygon2 EdenGrowth2::Contour ( ) const

Compute the polygonal contour of the cluster.

Perform a Delaunay triangulation, and remove some triangles.

◆ Draw()

void EdenGrowth2::Draw ( QGraphicsScene & scene) const

Draw the cluster.

Parameters
sceneGraphics scene.

◆ DrawSimple()

void EdenGrowth2::DrawSimple ( QGraphicsScene & scene,
const double & width = 0.025 ) const

Draw the cluster.

Parameters
sceneGraphics scene.
widthPen width.

◆ DrawStrahler()

void EdenGrowth2::DrawStrahler ( QGraphicsScene & scene) const

Draw the cluster using s Strahler-based coloring.

Parameters
sceneGraphics scene.

◆ GrowthSites()

int EdenGrowth2::GrowthSites ( const Vector2 & q,
Vector2 * sites ) const
protectedvirtual

Find candidate growth directions from a particle.

This function has an O(n) complexity.

Parameters
qPosition of the candidate particle.
sitesArray of returned growth positions.
Returns
the number of candidate growth directions.

◆ Multi()

void EdenGrowth2::Multi ( int m)

Shrink the radius of the particles, inserting necessary particles in between previously connected particles.

Parameters
mShrinking factor, should be ≤ 16.

◆ Seeds()

QVector< int > EdenGrowth2::Seeds ( ) const

Return the indexes of the seeds that for the connex parts of the clusters.

Returns
An array of integer

◆ Step() [1/2]

void EdenGrowth2::Step ( )
virtual

Add a new particle to the cluster.

Select a random particle in the existing cluster, and compute candidate growth directions. Repeat random selection until a valid particle is found. Then select a randomly generated growth direction and update the cluster.

This function has an O(n) complexity.

Reimplemented in EdenAnisotropicGrowth2.

◆ Step() [2/2]

void EdenGrowth2::Step ( int n)
virtual

Perform several growth steps.

Parameters
nNumber of growth steps.

Reimplemented in EdenAnisotropicGrowth2.

◆ Topology()

QVector< int > EdenGrowth2::Topology ( ) const

Compute the topology of the tree.

Returns
An array of integer