Godot Nature of Code  1.2.0
Nature of Code implemented in Godot Engine
Public Member Functions | Properties | List of all members
Fractals.RecursiveTree Class Reference

Recursive tree. More...

Public Member Functions

 RecursiveTree (RecursiveBranch root, float angle, int generations)
 Creates a new recursive tree. More...
 
void GenerateOne ()
 Generate one generation. More...
 
void GenerateAll ()
 Generate all needed generations. More...
 
void Draw (CanvasItem canvas)
 Draw tree using canvas. More...
 
void DrawUntil (CanvasItem canvas, int index)
 Draw tree using canvas until branch index. More...
 

Properties

int Count [get]
 Branch count. More...
 

Detailed Description

Recursive tree.

Definition at line 44 of file RecursiveTree.cs.

Constructor & Destructor Documentation

◆ RecursiveTree()

Fractals.RecursiveTree.RecursiveTree ( RecursiveBranch  root,
float  angle,
int  generations 
)
inline

Creates a new recursive tree.

Parameters
rootRoot branch
angleAngle
generationsGeneration count

Definition at line 59 of file RecursiveTree.cs.

60  {
61  _angle = angle;
62  _generations = generations;
63 
64  _branches.Add(new List<RecursiveBranch>() {
65  root
66  });
67  }

Member Function Documentation

◆ Draw()

void Fractals.RecursiveTree.Draw ( CanvasItem  canvas)
inline

Draw tree using canvas.

Parameters
canvasCanvas item

Definition at line 107 of file RecursiveTree.cs.

108  {
109  foreach (var level in _branches)
110  {
111  foreach (var branch in level)
112  {
113  branch.Draw(canvas);
114  }
115  }
116  }

◆ DrawUntil()

void Fractals.RecursiveTree.DrawUntil ( CanvasItem  canvas,
int  index 
)
inline

Draw tree using canvas until branch index.

Parameters
canvasCanvas item
indexBranch index

Definition at line 123 of file RecursiveTree.cs.

124  {
125  var limit = Mathf.Max(0, Mathf.Min(index, _branches.Count));
126  for (var i = 0; i < limit; ++i)
127  {
128  foreach (var branch in _branches[i])
129  branch.Draw(canvas);
130  }
131  }

◆ GenerateAll()

void Fractals.RecursiveTree.GenerateAll ( )
inline

Generate all needed generations.

Definition at line 95 of file RecursiveTree.cs.

96  {
97  for (var i = 0; i < _generations; ++i)
98  {
99  GenerateOne();
100  }
101  }
void GenerateOne()
Generate one generation.

◆ GenerateOne()

void Fractals.RecursiveTree.GenerateOne ( )
inline

Generate one generation.

Definition at line 72 of file RecursiveTree.cs.

73  {
74  var next = new List<RecursiveBranch>();
75 
76  foreach (var branch in _branches[^1])
77  {
78  var newLength = (branch.End - branch.Start) * 0.66f;
79  var newWeight = branch.Weight * 0.66f;
80  var leftPosition = branch.End + newLength.Rotated(_angle);
81  var rightPosition = branch.End + newLength.Rotated(-_angle);
82 
83  var leftBranch = new RecursiveBranch(branch.End, leftPosition, newWeight);
84  var rightBranch = new RecursiveBranch(branch.End, rightPosition, newWeight);
85  next.Add(leftBranch);
86  next.Add(rightBranch);
87  }
88 
89  _branches.Add(next);
90  }

Property Documentation

◆ Count

int Fractals.RecursiveTree.Count
get

Branch count.

Definition at line 51 of file RecursiveTree.cs.


The documentation for this class was generated from the following file: